The IAK on TIA FAQ

By Scott A. Moore

This file is the FAQ (Frequently Asked Questions) for persons wishing to run AK (IBM's OS/2 Internet Access Kit) on TIA (The Internet Access). See also the related FAQ list at the bottom of the file (especially the TIA FAQ).

WHAT IS THIS ALL ABOUT ?

The IAK was introduced by IBM as part of a "bonus pack" with the OS/2 3.0 (Warp) operating system. The IAK could be said to simply allow access to the Internet via a set of programs that run as graphical applications under the workplace shell (still often referred to as the PM or presentation manager). Right now there are basically four levels of internet access:

1. Mail only. This allows you to mail from your own familiar interface across to users on the net. You may not even be aware that your mail crosses the net.

2. Via "service", such as AOL (America On Line). These services provide menus and other Internet services.

3. Shell account. A shell account lets you log onto someone else's host that itself connects to the Internet. You use their operating systems commands (usually Unix) to gain access to the net. Because you are dialing up with a terminal emulation, this means that you are restricted to text mode programs only. However, because the host is truly "on" the net, you can gain access to any part of the net, usually using multiple programs to do so.

4. Direct connect. This is the "holy grail" of Internet service. It means that you have a direct connection to the net, and your computer speaks the language of the net (TCP/IP). Any access to the net you have is via programs that run on your own machine, and know how to access various Internet services.

Up to now, direct connect has been the exceptional mode of Internet access. This is because it traditionally involves leased lines, special hardware, and special protocols. The expense of a direct connect ($1000 and up a month) usually means that a large company will create a connection and then connect that (via a "gateway") to their own network, allowing their staff to share it.

Over time, another, cheaper means of achiving direct connect has appeared, known as "slip" (Serial Line Internet Protocol), and later "ppp" (Point to Point Protocol). What these protocols do is allow the Internet "native" communications protocol to pass over an ordinary dial up line (modem). What you get with a slip/ppp connection is virtually full access to the Internet, including all the current services, and access to any services that might appear in the future. The big difference between slip/ppp and a "true" Internet connection is speed. With a slip/ppp interface, for example, you are not going to be able to listen to live audio programming, or watch live TV, or do anything else that requires high data rates.

WHY USE DIRECT (SLIP/PPP) ACCESS ?

Direct access changes the way you work on the Internet:

1. You can use graphical "front ends" such as provided with IAK.

2. You can operate more than one access program at one time.

3. You can use the new "advanced access" programs like Mosaic or Web Browser, which require a direct connection.

As an example, I can open an IRC (Internet Relay Chat) channel to #os/2, the os/2 channel, and leave that running up in the corner of the screen while I read my mail, telnet to another computer, access an ftp site, etc.

WHY NOT USE IBM ADVANTIS?
IBM advantis is a true SLIP service offered by IBM in major cities and also by 800 number dialup. Disregarding the monthy access fees for the moment, if you are lucky enough to live close to one of their local access dialups, you can get access for no hourly rate up to the 6 hour limit. If not, you must pay a $6.00 an hour fee for the 800 number service. Past the 6 hour limit, you pay a $4.00 an hour fee for local, and if you need to use the 800 number, you must pay that fee as well. So you can wind up paying $10 an hour. In my example, I live in the bay area, where I have two Internet providers on a no-limit/no-hour charge basis, I live in the next exchange from an IBM local access number. The cheapest I can dial there is $0.05/hour, so I get $3.00 in the hour limit, and $9.00 over that limit. At that is on the weekends only, by special rate.

WHY NOT USE ANOTHER SLIP PROVIDER?
In my area I am lucky. I have two independent providers, both who will give slip service. However, one provides business accounts only (at ridiculous rates). The other provides slip at a $2.00 hour rate. This is better for me the $3.00 minimum access fee for IBM, and there is no hourly limit.

WHAT IS TIA ?
If you step back a minute, you have to ask what is really so different about a slip/ppp access from a dialup that accounts for the higher charges. The equipment is the same. The speeds are the same. What you are going to do with it is basically the same. It may even LESSEN the load on the provider if you use slip (see below). Well, it turns out that if you have a shell account, you can actually make a "do it yourself" slip connection. You just need a program that runs on your provider's host system, and talks to your computer in slip/ppp protocol. It essentially does the same thing they must do to give you a slip/ppp line when you pay "full price". Because this "adapter" works over the same speed lines that you would use for a paid slip/ppp line, and has virtually no difference in overhead, you are getting a slip line for the price of a shell account. So now you have slip with no hourly access charge, no time limits, and virtually no difference from a "real" slip account. Duh. TIA itself cost $25 (one time charge), which will rapidly pay for itself.

HOW DOES TIA WORK?
TIA stands for "The Internet Adapter". Basically, TIA takes packets of TCP/IP data that pass to/from your computer in slip form and uses the host resources to pass them on to the Internet (the TIA FAQ is going to do more justice to this subject than me). The most important difference between a TIA link and a slip link is that a TIA link does not represent a real address on the Internet, and therefore must represent it's own address as a "virtual" address. Actually, TIA is good at handling "virtual addresses" and we can use this to solve several problems (below). TIA is not a program that runs on your PC. TIA runs on the provider's host CPU. This means that the folks at Cyberspace (makers of TIA) have to compile it for each possible machine type that is in use.

HOW DO I GET TIA ONLINE?
First I recommend you obtain the file marketplace.com:/tia/tia.FAQ.single, marketplace.com:/tia.single.instruct, and marketplace.com:/tia.single.form.txt.

FIRST, you need to determine the type of machine, then download TIA to your host machine (the machine you connect to). DO THIS BEFORE YOU GET A USER LICENCE. See the TIA FAQ to help you determine which TIA program is correct for your host. Typically, this will be something like "sparc.sunos.tia", which means a sparc CPU, running the sunos operating system. Rename this file to "tia" on your host, then execute: chmod +x tia Which tells it to allow execution of tia. Now you run tia. It should sign on, and give you a message about "cannot find licence". The reason you want to do this first is that you want to be sure that everything is set up before you start the time running on your evaluation period.

Next, you fill in the tia.single.form.txt file, and send that (email) to tia-single@marketplace.com. Go for the evaluation period FIRST. That way you can check your system out first before you buy.

Ok, now you can have the files: tia   - The TIA executable .tia  - The text file that contains the licence number .tiarc - A file containing startup parameters for TIA .tiacf - This appears to contain a copy of the login information messages that TIA generates on startup.

When started "by hand" TIA can be killed with 5 or more ctl-c's. However, under IAK you will be starting TIA automatically, so you will terminate it by hanging up. Next, you must change your login prompt or add something to the end of the prompt. Do do this, you edit your .login script on the host, and for example, add the line: set prompt=joeuser\> (replacing any previous prompt command). Reason that you do this is to allow the dialup script a way to know when the host prompt appears, so that it can execute the TIA startup command.

HOW DO YOU CONFIGURE IAK TO ACCESS VIA TIA ?
FIrst, you need to create an access profile via the "dial other provider" menu under warp. Here are the fields and buttons:

Provider name: The name of your dialup provider. I just entered my provider name, not the address, so I have to wonder if this field actually does anything (but os/2 will not allow it to be blank).

Login ID: place your login ID just as you would enter it for shell access here.

Password: place your password just as you would enter it for shell access here.

Nickname: What is this used for ?

Phone number: Leave blank

Login script: This should point to your script that automatically dials the host and starts TIA running. Usually it is \tcpip\etc\slipup.cmd For the files we give here, this line must also have parameters. This is an example line: c:\tcpip\etc\slipup atdt555-1212 joeuser secretpass The first parameter gives the string to send to your modem to dial the host. The second gives the user name to log in by, and the third gives the password to use.

Connection type: Can only be slip. PPP is grey because it is unimplemented by IBM, and is presumably on their "to do" someday.

Inactivity timeout: Can be set to your pleasure. Note that many access providers will automatically logout you out if inactive.

MTU size: must be 1500 (see the TIA FAQ).

Domain name server: For this, log in to your shell account, and enter "tia -address". It will give you this information.

Your host name: is the name of your machine. It should normally be the same as your login name. This sets the name the programs running think your machine goes by.

Your domain name: The machine name of your provider, such as bignet.com.

News server: The address of a nntpd compatible news server. Your provider may be able to give you this. However, it is possible that you may need to set up your own nntpd server. Since NETCOM is the only provider that currently lacks such a server, I have put that information in that section.

Gopher server: can be anything. Try os2info.gopher.ibm.com, the IBM gopher server.

WWW server: can be anything. Try http://www01/ny.us.ibm.net, the IBM WWW server.

POP mail server: This is the server that will handle your mail requests. This can usually be any host machine. You may want to pick a machine that has a low normal load.

Reply domain: the host name of your provider, like biglink.com.

Reply mail ID: Same as your login ID

POP mail login: Same as your login ID. The mail login uses an ID and password just as your account does.

POP mail password: Same as your login password.

Should be self explainitory, it contains all your modem port parameters. The question is, does any of this have an effect since the login script does the modem dialing ?

Now you should have your provider dialer configured. Next, you need to find or create a slipup.cmd file, and place that under \tcpip\etc. See the specific implementations for various scripts.

Next, you need to create a file, \tcpip\etc\hosts, which should appear as:

192.0.2.1

What this file does is tell tcpip programs how to convert the address of your machine to a host name. Sendmail (part of the UltiMail) program does this, and this file gives the name before it is requested via a domain name server. This must be done because you don't really have an address for your host. You are just faking a "virtual address" under TIA. If one of your programs asks a real Internet domain nameserver to lookup that address, it will go "huh?" and the program will fail.

Next, you need to find or create a file \tcpip\etc\sendmail.uml. Edit it and find the lines:

DVYourRelay
 * 1) The unqualified (domain-less) name of the mail relay

DHYourHub
 * 1) The fully-qualified domain name of the mail hub

Replace "YourRelay" with the mail relay name, and "YourHub" with the mail hub. This information is provider specific. I have placed examples in the provider specific areas below.

At this point, you should be able to hit the "dial" button under "other provider", and watch the slip connection start up in the status window.

WHY CAN"T I SEND MAIL FROM ULTIMAIL? I CAN RECEIVE IT!
The mail from UltiMail is sent out via "sendmail.exe". This program has a few oddities. For example, it gets your login name and password from page 1 in the "other dial" form, instead of the POP mail section on page 3. UltiMail also takes the address of your machine and asks the listed domain server to look up the symbolic name (even though this information is in the dialer form). This is not good on TIA, because we don't really have an Internet address when on TIA. Instead, the host address is a made up, virtual address that only TIA understands. When sendmail asks a real Internet domain name server what that address means, it just says "no such address", so sendmail bombs. The fix for this is to create a file \tcpip\etc\hosts, and add or change \tcpip\etc\sendmail.uml as described in the last section.

FTPPM TAKES FOREVER TO CONNECT, WHAT IS GOING ON?
FTP-PM takes too long to connect (and to do anything) on even regular SLIP/PPP service. I have waited (apparently forever) for it to connect on a TIA access. Some folks report that this works ok. In any case, use of a text based FTP or the web browser seems to be preferable.

HOW CAN I GET AN ORDINARY SHELL LOGIN TO MY HOST WHILE RUNNING TIA?
You can telnet back to your host. Then you just log in as usual. Alternately, you can create a "special address" that can connect you to anything. First, you add a line to your .tiarc on the host machine: -p192.0.2.4 csh This causes TIA to "fake" an address that will connect only to the csh program. This will work for any program, not just csh. Then, you telnet to it: telnet 192.0.2.4 NOTE: TIA has an older telnet server capability that IBM's telnet does not work with. Use another telnet instead.

DOES TIA TAKE UP MORE OF THE HOST'S TIME THAN A SHELL ACCOUNT? IS THAT WHY THEY CHARGE MORE FOR SLIP?
Given that you do the same things (email, gopher, etc) using TIA as you did under the shell, using TIA will actually use LESS of the host's time than a shell account. This is because the data sent via tcp/ip packets is the more compact, computer encoded version of the data being used, and because your computer is doing more of the work (since it is actually running the access programs). On the other hand, since TIA enables the use of programs like Web Browser, which take much more bandwidth to run, you may use more host computer time simply because you can do more.

IS TIA BEING BANNED FROM VARIOUS SYSTEMS? WHY?
I have heard that this is happening. We use TIA regularly on Netcom without complaint (and indeed, netcom already provides their own, proprietary method to do the same thing). Optimistically, you can say that the providers may see this as a security problem, since TIA accesses to the net may be more difficult to log. Cynically, you could say that the providers don't want the competition for their higher priced slip/ppp services.

WHAT IS THE DIFFERENCE BETWEEN SLIP AND PPP? WHY IS PPP NOT USED?
PPP is the more advanced protocol designed to replace SLIP. It is said to be harder to crash with communications errors. One feature that PPP has that would be quite usefull is that PPP can be set to "connect on demand", which means that it would only dial up the provider when there is actual data to be transferred, but to be done correctly, this needs to be implemented on both sides of the line (because the host side must dial you when you get data inbound). This is the method used by one provider along with ISDN, and may indeed be the future. At this writing, IBM has added beta PPP support. TIA is said to be going to PPP RSN :)

HOW DO I CONNECT TO NETCOM?
Netcom does not have a nntpd compatible news server. All Netcom nodes that I know of run sparc computers with the sunos operating system (a sun specific unix variant). Because the news problem was just solved at the time of this FAQ, you need to get special versions and setups for TIA. Go to marketplace.com:/tiabeta. Get sparc.sunos.tia, which is the TIA server you need. Then get sparc.sunos.nntpd which is the newserver. rename them to tia and nntdp respectively. nntpd is a program that acts as a nntpd server much the way that nntpd works, by accessing the host and tranlating the requests into tcpip format. What we then do is assign nntpd a "virtual" tcpip address, then we can direct the news reader requests to that.

Then, perform the lines: chmod +x tia chmod +x nntdp This will allow you to execute both programs. Next, create the file ".tiarc", which is the TIA automatic startup file, with the content: -p:119 nntpd This file tells TIA to create a virtual channel at 192.0.2.3 to access the news server created. Next, you must change your login prompt or add something to the end of the prompt. Do do this, you edit your .login script on the host, and for example, add the line: set prompt=joeuser\> (replacing any previous prompt command).

Here are the specific "other dialer" form entries for netcom:

Provider name: netcom

Login ID: place your login ID just as you would enter it for shell access here.

Password: place your password just as you would enter it for shell access here.

Nickname: What is this used for ?

Phone number: Leave blank

Login script: This should point to your script that automatically dials the host and starts TIA running. Usually it is \tcpip\etc\slipup.cmd For the files we give here, this line must also have parameters. This is an example line:

c:\tcpip\etc\slipup atdt555-1212 joeuser secretpass

The first parameter gives the string to send to your modem to dial the host. The second gives the user name to log in by, and the third gives the password to use.

Connection type: Can only be slip. PPP is grey because it is unimplemented by IBM, and is presumably on their "to do" someday.

Inactivity timeout: Can be set to your pleasure. Note that netcom will automatically logout you out if inactive.

MTU size: must be 1500 (see the TIA FAQ).

Domain name server: For this, log in to your shell account, and enter "tia -address". It will give you this information.

Your host name: is the name of your machine. It should normally be the same as your login name. This sets the name the programs running think your machine goes by.

Your domain name: netcom.com

News server: 192.0.2.3

Gopher server: can be anything. Try os2info.gopher.ibm.com, the IBM gopher server.

WWW server: can be anything. Try http://www01/ny.us.ibm.net, the IBM WWW server.

POP mail server: netcom18 (this was determined to be the netcom node with the lightest load).

Reply domain: netcom.com

Reply mail ID: Same as your login ID

POP mail login: Same as your login ID. The mail login uses an ID and password just as your account does.

POP mail password: Same as your login password.

Fill with modem parameters.

Ok, here is the "slipup.cmd" file for netcom. You must customize the variables at the top to reflect your modem setup. You must also set CommandKey equal to the unique command prompt string you entered while configuring the host (above). Cut the result out and place it in \tcpip\etc\slipup.cmd. /* version: 1.13 */ /* */ /* OS/2 slipup.cmd heavily modified for netcom/tia users and probably of  */ /* value for to other people that need a decent slipup.cmd script. */ /*                                                                        */ /* Any problems should be addressed to rupa@netcom.com or rupa on #os/2    */ /*                                                                        */ /* Changes:                                                                */ /*          System specific stuff SHOULD be in the "user setup variables" */ /*                 section. Let me know if I missed something. */ /*          Added 'smart' redialer. */ /*          Pulled login stuff from the main body and made it handle      */ /*                 problems if login: or password: never shows up. */ /*          Cleaned up some of the code, dynamic addressing for the OS/2  */ /*                 box is cleaned out, if anyone wants this back in the   */ /*                 code is just commented out (though untested). */ /*          Added support for TERM = -- stolen from peetah's mods         */ /* */ /* files::  ftp.netcom.com:/pub/rupa/tia/netcom.slipup.cmd                */ /*                 for hosts like netcom where you login directly into    */ /*		   your host. */ /* */

/* user setup variables */

/* unique string for command prompt */ CommandKey=''

/* set the comport you use */ ComPort='com2'

/* options for the "mode" system call */ ModeOptions='57600,n,8,1,buffer=on,rts=hs,dtr=on'

/* does your host ask you what terminal you use? */ /* 1 if it does, 0 if not                       */ AskTerm=0

/* Modem INIT string */ ModemInit='ATZ'

/* delay after BUSY */ BusyDelay=5

/* delay after NO CARRIER */ NoCDelay=2

/*--*/ /*                                                                         */ /*                OS/2 2.0 SLIP Driver for IBM TCP/IP version 2.0           */ /*                                                                         */ /*                                SLIPUP.CMD                                */ /*                                                                         */ /*            ..................................................            */ /*                                                                          */ /* Sample attachment script for dialing into a Xylogics Annex terminal      */ /* server in order to establish a SLIP connection. This script should be  */ /* specified using the "attachcmd" and "attachparm" elements in the SLIP   */ /* configuration file SLIP.CFG. For example:                              */ /*                                                                         */ /*              interface sl0 {                                             */ /*                attachcmd  = slipup                                      */ /*                attachparm = "dialcmd username password"                 */ /*             }                                                           */ /*                                                                          */ /* The script parameters specify the command to send to the modem to dial   */ /* the remote site and the username/password combination to use to log into */ /* the terminal server. If any of the parameters are omitted, or are      */ /* specified as an asterix (*), the script will prompt for them. This is  */ /* most useful with the password parameter to avoid storing the password   */ /* in a text file on the disk. */ /*                                                                         */ /* For example, the following might be how I would set it up:               */ /*                                                                         */ /*              interface sl0 {                                             */ /*                attachcmd  = slipup                                      */ /*                attachparm = "atdt###-#### db3l *"                       */ /*             }                                                           */ /*                                                                          */ /* which would cause slipup to initially prompt me for the password. It   */ /* would then feed the "atdt###-####" command to the modem, and when the   */ /* Annex answered, it would use "db3l" as a username and the password I    */ /* initially entered as the password. */ /*                                                                         */ /*            - - - - - - - - - - - - - - - - - - - - - - - - -             */ /*                                                                          */ /* When the script runs, it is automatically passed the interface name for  */ /* the interface it is running on as the first argument, and the user      */ /* arguments (from SLIP.CFG) as the second argument. */ /*                                                                         */ /* The script sends the dial string to the modem and then logs into the     */ /* terminal server using the username/password. It then issues the SLIP   */ /* command to start SLIP, and parses the resulting output to determine the */ /* appropriate addresses to use. Lastly, it issues ifconfig and route     */ /* commands to configure the OS/2 system appropriately. Note that the     */ /* configuration assumes a class C netmask for the SLIP interface. */ /*                                                                         */ /*--*/

call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysloadFuncs' call SysLoadFuncs

parse arg interface, dialcmd username password

/*--*/ /*                  Initialization and Main Script Code                    */ /*--*/

/* Set some definitions for easier COM strings */ cr='0d'x crlf='0d0a'x

say '' say 'SLIPUP - SLIP Script ', '(interface' interface')'

/* Prompt for missing information */ if dialcmd = '' then do  call charout, 'Dial Command: ' parse pull dialcmd end if username = '' | username = '*' then do  call charout, 'User Name: ' parse pull username end else do  say 'User:' username end if password = '' | password = '*' then do  call charout, 'Password: ' password = readpass end

/* set comport speed */ 'mode 'ComPort||': ' ModeOptions

/* Flush any stuff left over from previous COM activity */ call flush_receive

/* dial the number and all that */ connected=0 DO FOREVER UNTIL connected CALL SetModem IF Dial=1 THEN DO     SAY 'Something wrong, either VOICE or ERROR returned after' SAY 'the dial command. Aborting...' EXIT END IF Login=1 THEN DO     /* hang up */ 'mode '||ComPort||': dtr=off > \dev\nul' 'mode '||ComPort||': dtr=on > \dev\nul' SAY 'Retrying connection after 30sec delay.' CALL SysSleep 30 END ELSE DO     connected = 1 END END

/* Wait for the main prompt and then send the "slip" command */

if waitfor(CommandKey, 60) =1 THEN DO   call flush_receive 'echo' CALL LineOut, 'Never got "'||CommandKey||'". Check your setup!' EXIT 1 END call flush_receive 'echo'

call send 'tia -address' || cr

/* Parse the results of the SLIP command to determine our address. */ /* We use the "waitfor_buffer" variable from the waitfor routine  */ /* to parse the stuff we get from the Annex after waiting for an  */ /* appropriate point in the data stream. */ if waitfor(CommandKey, 60) =1 THEN DO   call flush_receive 'echo' CALL LineOut, 'Never got "'||CommandKey||'". Your host may be severly loaded!' EXIT 1 END call flush_receive 'echo' parse var waitfor_buffer. 'Gateway address):' a '.' b '.' c '.' d (cr) . annex_address = a||'.'||b||'.'||c||'.'||d

/* WE DON'T USE THIS WITH TIA! /* Now parse the remainder for our address */

call waitfor crlf parse var waitfor_buffer a '.' b '.' c '.' d '.'. os2_address = a||'.'||b||'.'||c||'.'||d

os2_address = 192.0.2.1

/* Flush anything else */ call flush_receive 'echo'

call send 'exec tia' || cr

if waitfor('SLIP software.', 60) =1 THEN DO   call flush_receive 'echo' CALL LineOut, 'Never got OK to start slip software.' EXIT 1 END call flush_receive 'echo'

/* Now configure this host for the appropriate address, */ /* and for a default route through the Annex. */

say cr || 'SLIP Connection Established' say 'Configuring local address =' os2_address ', Annex =' annex_address

'ifconfig sl0' os2_address annex_address 'netmask 255.255.255.0' 'route -f add default' annex_address '1'

/* All done */ exit 0

/*-*/ /* 				SetModem                                */ /*.........................................................................*/ /* Sets the modem and hopefully everybody is happy when done... */ /* We have to be very paranoid with "waitfor" or we hang the dialer. */ /*-*/ SetModem: successful=0 DO UNTIL successful=1 call send ModemInit || cr     if waitfor('OK', 5) = 1 then DO	 call flush_receive 'echo' call lineout, 'Modem not resetting... Trying again' call send '+++' IF waitfor('OK' ,5) = 1 THEN DO CALL LineOut, 'could not reset modem. Check your modem settings!' EXIT END END ELSE DO	 CALL flush_receive 'echo' successful=1 END END RETURN 1

/*-*/ /* 				dial                                    */ /*.........................................................................*/ /* Dials the number with some extra error handling above and beyond the   */ /* normal stuff-	                                                  */ /*-*/ dial: do forever /* Dial the remote server */ call charout, 'Now Dialing...' call send dialcmd || cr  /* catch first cr from modem after dialing */ rc=waitfor(cr, 10); CALL flush_receive 'echo' /* now parse the return from the modem, give time to return code */ rc=waitfor(cr, 120); SELECT; WHEN Pos('CONNECT', remain_buffer) \= 0 THEN DO	 CALL flush_receive 'echo' LEAVE END WHEN Pos('BUSY', remain_buffer) \= 0 THEN DO	 CALL flush_receive 'echo' CALL SysSleep BusyDelay ITERATE END WHEN Pos('NO CARRIER', remain_buffer) \= 0 THEN DO	 CALL flush_receive 'echo' CALL SysSleep NoCDelay ITERATE END WHEN Pos('ERROR', remain_buffer) \= 0 THEN DO      /* something seriously wrong */ CALL flush_receive 'echo' RETURN 1 END WHEN Pos('VOICE', remain_buffer) \= 0 THEN DO      /* don't wanna disturb 'em too much */ CALL flush_receive 'echo' RETURN 1 END OTHERWISE DO      /* cannot happen */ CALL flush_receive 'echo' SAY 'oops! Missed a possible return. send bug report to' SAY 'rupa@netcom.com with a screen shot.' LEAVE END END /* select */ END /* do */ RETURN 0

/*-*/ /* 			      login                                     */ /*.........................................................................*/ /* Handle the login process with the proper error checking and all that. */ /*-*/

login: /* Handle login. We wait for standard strings, and then flush anything */ /* else to take care of trailing spaces, etc.. */  call send cr   IF waitfor('login:',30)=1 THEN DO      call flush_receive 'echo' SAY crlf||'No login.' RETURN 1 END ELSE DO      call flush_receive 'echo' call send username || cr  END IF waitfor('Password:',30)=1 THEN DO     SAY crlf||'No Password.' RETURN 1 END ELSE DO     call flush_receive 'echo' call send password || cr  END IF AskTerm=1 THEN DO         IF waitfor('TERM = ',30)=1 THEN DO	 SAY crlf||'Terminal emulation not set to default.' RETURN 1 END ELSE DO	 call flush_receive 'echo' call send cr     END END RETURN 0

/*--*/ /*                           send ( sendstring)                            */ /*..........................................................................*/ /*                                                                         */ /* Routine to send a character string off to the modem. */ /*                                                                         */ /*--*/

send:

parse arg sendstring call slip_com_output interface, sendstring

return

/*--*/ /*                   waitfor ( waitstring, [timeout] )                    */ /*..........................................................................*/ /*                                                                         */ /* Waits for the supplied string to show up in the COM input. All input   */ /* from the time this function is called until the string shows up in the  */ /* input is accumulated in the "waitfor_buffer" variable. */ /*                                                                         */ /* If timeout is specified, it says how long to wait if data stops showing  */ /* up on the COM port (in seconds). */ /*                                                                         */ /*--*/

waitfor:

parse arg waitstring, timeout

if timeout = '' then timeout = 5000   /* L O N G   delay if not specified */ waitfor_buffer = '' ; done = -1; curpos = 1 ORI_TIME=TIME('E')

if (remain_buffer = 'REMAIN_BUFFER') then do     remain_buffer = '' end

do while (done = -1) if (remain_buffer \= '') then do        line = remain_buffer remain_buffer = '' end else do        line = slip_com_input(interface,,10) end waitfor_buffer = waitfor_buffer || line index = pos(waitstring,waitfor_buffer) if (index > 0) then do        remain_buffer = substr(waitfor_buffer,index+length(waitstring)) waitfor_buffer = delstr(waitfor_buffer,index+length(waitstring)) done = 0 end call charout, substr(waitfor_buffer,curpos) curpos = length(waitfor_buffer)+1 if ((done \= 0) & (TIME('E')>timeout)) then do       call lineout, ' WAITFOR: timed out ' done = 1 end end timeout=0 RC=done return RC

/*--*/ /*                              readpass                                 */ /*..........................................................................*/ /*                                                                         */ /* Routine used to read a password from the user without echoing the        */ /* password to the screen. */ /*                                                                         */ /*--*/

readpass:

answer = '' do until key = cr   key = slip_getch if key \= cr then do     answer = answer || key end end say '' return answer

/*--*/ /*                            flush_receive                              */ /*..........................................................................*/ /*                                                                         */ /* Routine to flush any pending characters to be read from the COM port. */ /* Reads everything it can until nothing new shows up for 100ms, at which  */ /* point it returns. */ /*                                                                         */ /* The optional echo argument, if 1, says to echo flushed information. */ /*                                                                         */ /*--*/

flush_receive:

parse arg echo

/* If echoing the flush - take care of waitfor remaining buffer */ if (echo \= '') & (length(remain_buffer) > 0) then do     call charout, remain_buffer remain_buffer = '' end

/* Eat anything left in the modem or COM buffers */ /* Stop when nothing new appears for 100ms. */

do until line = '' line = slip_com_input(interface,,100) if echo \= '' then call charout, line end return

Hosts file: create the file: \tcpip\etc\hosts:

192.0.2.1

Finally, cut and place the next file under \tcpip\etc\sendmail.uml, or modify your existing sendmail.uml with the following lines:

DVmail.netcom.com
 * 1) The unqualified (domain-less) name of the mail relay

DHnetcom.com
 * 1) The fully-qualified domain name of the mail hub

Replacing the existing lines. Here is the file for my system, which should also work on any netcom system. Note that all system programs are assumed to be on drive C:, so that would need to be changed if they have moved.
 * 1)  Sendmail                                                            #
 * 2)  Copyright (c) 1983  Eric P. Allman                                  #
 * 3)  Berkeley, California                                                #
 * 4)  Copyright (c) 1983 Regents of the University of California.         #
 * 5)  All rights reserved.  The Berkeley software License Agreement       #
 * 6)  specifies the terms and conditions for redistribution.              #
 * 7)  This configuration file was created specifically for IBM's          #
 * 8)  SENDMAIL product for the IBM OS/2 Operating System.  Please avoid   #
 * 9)  making changes to this file, as it will change the operation of     #
 * 10)  SENDMAIL.                                                           #
 * 11)  This configuration file is used for outgoing mail in two ways:      #
 * 12)  1.  All mail is sent to a mail relay for delivery                   #
 * 13)  2.  All addresses are rewritten if necessary to make them look      #
 * 14)      like they came from a mail hub                                  #
 * 15)  Created by: William Chung for IBM Ultimedia Mail/2 "Lite"           #
 * 16)              and IBM NR/2                                            #
 * 17)              IBM T.J. Watson Research, Yorktown Heights, NY          #
 * 18)              September 23, 1994                                      #
 * 1)  2.  All addresses are rewritten if necessary to make them look      #
 * 2)      like they came from a mail hub                                  #
 * 3)  Created by: William Chung for IBM Ultimedia Mail/2 "Lite"           #
 * 4)              and IBM NR/2                                            #
 * 5)              IBM T.J. Watson Research, Yorktown Heights, NY          #
 * 6)              September 23, 1994                                      #
 * 1)              September 23, 1994                                      #


 * 1) Host-specific macros
 * 2) Note: The values of these macros are merely placeholders.
 * 3)       Actual values will get substituted later at delivery
 * 4)       time when sendmail is invoked with the -oM command
 * 5)       line flag to override these configuration file values.
 * 1)       time when sendmail is invoked with the -oM command
 * 2)       line flag to override these configuration file values.

DVmail.netcom.com
 * 1) The unqualified (domain-less) name of the mail relay

DHnetcom.com
 * 1) The fully-qualified domain name of the mail hub

DZ1.0um
 * 1) Version # of this file

Dj$w
 * 1) Official canonical hostname.
 * 2) Do not bother setting macro $w (hostname) since we do not use it
 * 3) and sendmail will set it for us anyway.
 * 1) and sendmail will set it for us anyway.


 * 1) Standard macros
 * 1) Standard macros

DnMailer-Daemon DlFrom $g $d Do.:%@!^=/[] Dq<$g>
 * 1) Name used for error messages
 * 1) UNIX header format
 * 1) Delimiter (operator) characters
 * 1) Format of a total name


 * 1) Options
 * 1) Options

Odbackground Oo Or15m OQc:\tcpip\etc\mqueue Os OT5d
 * 1) Process messages in the background.
 * 1) Accept oldstyle addresses
 * 1) SMTP read timeout
 * 1) Queue directory
 * 1) Always queue for safety
 * 1) Time to live in the queue

Pfirst-class=0 Pspecial-delivery=0 Pjunk=0
 * 1) Message precedences
 * 2) Note: use equal weight so we can let relay decide what to do
 * 1) Note: use equal weight so we can let relay decide what to do

Troot daemon
 * 1) Trusted users
 * 2) Note: not used by OS/2 sendmail
 * 1) Note: not used by OS/2 sendmail

HReceived: $?sfrom $s $.by $j ($v/$Z) id $i; $b H?D?Date: $a H?F?From: $q H?M?Message-Id: <$t.$i@$j> H?D?Resent-Date: $a H?F?Resent-From: $q H?M?Resent-Message-Id: <$t.$i@$j> H?x?Full-Name: $x
 * 1) Required headers
 * 1) Required headers

S0 R$*			$#relay $@$V $:$1
 * 1) Throw all mail to relay

S3 R$*<$*<$*>$*>$*	$3		denest R$*<$+>$*	$2		basic RFC822 parsing R$*<>$*		$n		RFC1123 <> R$-		$@ $1 @ $H	user => user@hub R$+@$+		$: $1 @ $[$2$]	canonify the hostname R$+@$w		$@ $1 @ $H	user@thishost => user@hub R$w!$+		$@ $2 @ $H	thishost!user => user@hub R$+%$w		$@ $>3 $1 @ $2	handle % hack thishost R$*		$@ $1		default, unchanged
 * 1) Rewrite local addresses so they look like they are from the hub

Mrelay,	P=[IPC], F=mDFMuCX, S=0, R=0, A=IPC $h Mlocal, P=c:\tcpip\umail\umailer.exe, F=lsDFP, S=10, R=20, A=-dest c:\tcpip\umail\server\inbox -to $u Mprog, P=xxx, A=Required by sendmail but we do not use this
 * 1) Mail Delivery Agents
 * 1) Mail Delivery Agents


 * 1) Sendmail configuration file *must* end with a newline - do not remove below newline

WHERE CAN I FIND THE FILES?
FTP to marketplace.com for TIA binaries, FAQs and other documentation.

FTP to ftp.netcom.com:/pub/rupa/tia and look at the readme. Here you will find the slipup.cmd files you need for various systems. It is recommended by the author of the files (rupa@netcom.com) that you get the latest version of slipup.cmd from his account.