Home » Archimedes archive » Acorn User » AU 1995-04.adf » !Internet_StarterPak » !SLIPdial/Scripts/automagic

!SLIPdial/Scripts/automagic

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1995-04.adf » !Internet_StarterPak
Filename: !SLIPdial/Scripts/automagic
Read OK:
File size: 2805 bytes
Load address: 0000
Exec address: 0000
File contents
#slipdial

# Script to automatically dial Demon at 0100 every morning.

############################################################
# For this script to work correctly, two modem configuration
# options are required, and a property of !TCPIP is assumed:
#
#  * The modem must make DCD follow the actual state of
#    the carrier from the remote modem (i.e. it must NOT
#    hold DCD high while on-line. On my Hayes compatible
#    modem this is option &C1.
#
#  * The modem must hang up if on-line when DTR goes low.
#    On my Hayes compatible modem this is option &D2.
#
#  * I assume all future version of !TCPIP will toggle
#    DTR low when they exit.
#
# The script works as follows: when !TCPIP quits (either
# manually or on a 'tcp hangup' timeout), it pulls DTR
# low. The modem hangs up (&D2). Then, since there is no
# longer a remote carrier present, DCD goes low (&C1).
# The script has a DCD alarm, which calls the dcd_drop
# function and eventually the hangup function.
#
# DCD can also go low (the carrier can also be dropped)
# due to line noise or Demon hanging up.
#
# Since the hangup function can also get called on an
# on-line timeout timer (see later), it kills !TCPIP.
#
# So - call termination (dropped carrier, !TCPIP exiting,
# or on-line timeout) will always result in the modem being
# placed back on-hook, and !TCPIP being killed.
############################################################

# Configure and build user menu.
call configure
call makemenus

# Setup serial port
driver USR
port %wport %prtnum
speed %speed
set protocol slip

# Define the phone number
set phonenum 01132984848

# Setup an alarm for automatic dialing
alarm /repeat /time=01:00 /id=everyday "call demon"

# Do absolutely nothing until the alarm triggers
# or a menu selection is made
:loop
message /close
wait /event
goto loop
exit

############################################################
# The following 5 functions are called from the user menu
# or by a timer. Each defines nntp and smtp. These are
# values substituted into the !TCPIP startup script. Hence
# the :domail function defines 'nntp' to be '#nntp' since
# it wishes to comment out all the nntp configuration in
# the AutoExec script.
############################################################

############################################################
# Call Demon (this is automatically triggered
#
# It sets 'timed' to 'yes' for various timers to be set.
# Call Demon, and jump to the 'loggedin' routine.
############################################################
:demon
set timed yes
set nntp nntp
set smtp smtp
call dialup
goto loggedin

############################################################
# A mail download
#
# Call Demon, and jump to the 'loggedin' routine.
############################################################
:domail
set timed yes
set nntp #nntp
set smtp smtp
call dialup
goto loggedin

############################################################
# A news download
#
# Call Demon, and jump to the 'loggedin' routine.
############################################################
:donews
set timed no
set nntp nntp
set smtp #smtp
call dialup
goto loggedin

############################################################
# News and mail
#
# Call Demon, and jump to the 'loggedin' routine.
############################################################
:doboth
set timed no
set nntp nntp
set smtp smtp
call dialup
goto loggedin

############################################################
# Interactive session
#
# Call Demon, and jump to the 'loggedin' routine.
############################################################
:interact
set timed no
set nntp #nntp
set smtp #smtp
call dialup
goto loggedin

############################################################
# Dial Demon.
#
# Create an AutoExec file for !TCPIP, claim and initialise
# the modem. Dial Demon. Login and set protocol. Capture
# and display MOTD. Wait for Demon to setup their SLIP
# service.
############################################################
:dialup

# The call hasn't failed (yet!)
set failed no

# See below...
set waittime 4
set starttime 0
set stoptime 0

# Create a !TCPIP AutoExec file
make <TCPIP$Dir>.AutoTempl <TCPIP$Dir>.AutoExec

# Claim and initialise the modem
if (!claim 3) goto call_failed
message /close
init ATZ
sleep 2
send ATQ0V1M0
if (!wait /del=5 OK) goto call_failed

# Try to dial Demon
retry 50 15
if (!dial /nodial=30 /nocar=10 /busy=5 %phonenum) call call_failed

# Successful connect. Login
if (!wait /del=20 ogin:) goto call_failed
send %nodename

# Send password. Also remember current time
set starttime %$time
if (!wait /del=20 word:) goto call_failed
send %password

# Send protocol.
if (!wait /del=50 ocol:) goto call_failed
send %protocol

# Get current time. Work out difference between now and when we
# had just sent our nodename. Halve it. Wait that long after the
# MOTD. This is intended to give a rough idea of speed the Demon
# machines are running at - i.e. the longer it takes to log on,
# the longer we have to wait before the SLIP service is running.
set stoptime %$time
set waittime {eval "%stoptime-%starttime"}
set waittime {eval "%waittime DIV 2"}
if (?eq %waittime 0) set waittime 1

# Get MOTD, and IP address
message /capture="IP" /end="HELLO" /maxlines=9 /centre
ipget 158.
if (!wait /del=30 HELLO) goto call_failed
wait /delay=%waittime "a while"
return 1

############################################################
# Call setup failed.
#
#  * Couldn't claim device
#  * Couldn't initialise modem
#  * Couldn't get an answer
#  * Timed out during login
#  * Timed out waiting for MOTD
#
# Mark the call as failed, inform the user and release
# the device.
############################################################
:call_failed
set failed yes
message "Call setup failed" /centre
release
return 0

############################################################
# Successfully logged in.
# 
# (Not strictly true -- will arrive here from call_failed
# too. Therefore check %failed and return).
############################################################
:loggedin
if (?eq %failed yes) return 1

# Set an alarm if this call is timed. This is so that we don't
# spend too long on-line unattended. :)
if (?eq %timed yes) alarm /time=+00:00:20 /id=timeout "goto hangup"

# Fire up !TCPIP
task /name="TCP/IP" <TCPIP2$dir>.!Run

# Watch for DCD to drop (i.e. the modem has hung up).
alarm /dcd "goto dcd_drop"

# Wait for a hangup. This loop terminates on the timeout alarm
# (if set) or the DCD alarm.
:hupwait
message /close
wait /event
goto hupwait

############################################################
# DCD has dropped.
#
# Cancel the timeout alarm (if it exists).
############################################################
:dcd_drop
alarm /cancel=timeout
goto hangup

############################################################
# Hangup the line
#
# Arrive here after a DCD drop (or a timeout alarm). Kill
# !TCPIP (if it's not already dead!). Inform the user of
# a successful finish. Release the serial device. Wait a
# couple of seconds for RISC OS to sort its life out.
# Compute a news transfer rate (if any news arrived).
# Optionally start TTFN and Newsbase (see later). Trim
# the DemHist file, and return.
############################################################
:hangup

# Kill !TCPIP
task /kill="TCP/IP"

# Inform the user
message "Call finished successfully" /centre

# Release the serial line and let RISC OS sort itself.
release
pause 2

# Compute news rate (if any arrived!)
set newsExists {?file <Mail$Dir>.folder.DemNews}
case %newsExists
when 1 2 3; set nrate {newsrate Dem}; message "news rate %nrate cps" /centre
when 0; message "no news downloaded" /centre
endcase
unset newsExists
unset nrate

# Optionally fire up !TTFN and !Newsbase
# Neither are started if this was a timed call.
# Each is only started only if it is not already running.
if (!?eq %timed yes) if (!?task TTFN) task /name="TTFN" <TTFN$Dir>.!Run
if (!?eq %timed yes) if (!?task Newsbase) task /name="Newsbase" <NewsBase$Dir>.!Run

# Trim the DemHist file and return
call trimfile <NNTP$Dir>.DemHist
return 1

############################################################
# Trim a file
#
# Time the file in %p1 by checking if it is 5000 bytes or
# longer. This is achieved by copying the last 200 lines
# into a temporary file and then moving the temorary file
# over the original.
############################################################
:trimfile
if (?lt {?file/size %p1} 5000) return
copy/tail=200 %p1 %p1-T;delete %p1;move %p1-T %p1
return 1

############################################################
# Configuration
#
# Read the system configuration information or call setup
# if a config file doesn't exist
############################################################
:configure
set filename {?file/expand slipdial:demonconfg}
if (!?file %filename) call setup
open/read/id=conf/error="return" %filename
read/id=conf/eof="goto closeconf" wport
read/id=conf/eof="goto closeconf" prtnum
read/id=conf/eof="goto closeconf" speed
read/id=conf/eof="goto closeconf" nodename
read/id=conf/eof="goto closeconf" password
read/id=conf/eof="goto closeconf" mercury
:closeconf
close/id=conf
return

############################################################
# Setup
#
# Ask the user for various parameters (note that this
# script doesn't use the mercury information
############################################################
:setup
input/prompt="Enter Serial Block Driver Name" wport
input/prompt="Enter Serial Port Number (if relevant)" prtnum
input/prompt="Enter Your Modem->Computer Speed (bps):" speed
input/prompt="Enter Your Demon Nodename:" nodename
input/prompt="Enter Your Password:" password
input/prompt="Enter Your Mercury PIN:" mercury
open/id=conf/write %filename
write/id=conf %wport
write/id=conf %prtnum
write/id=conf %speed
write/id=conf %nodename
write/id=conf %password
write/id=conf %mercury
close/id=conf
return 1

############################################################
# Make menus
############################################################
:makemenus
menu "Mail:call domail" "News:call donews" "Both:call doboth" "Interactive:call interact" "Quit:quit"
return 1
00000000  23 73 6c 69 70 64 69 61  6c 0a 0a 23 20 53 63 72  |#slipdial..# Scr|
00000010  69 70 74 20 74 6f 20 61  75 74 6f 6d 61 74 69 63  |ipt to automatic|
00000020  61 6c 6c 79 20 64 69 61  6c 20 44 65 6d 6f 6e 20  |ally dial Demon |
00000030  61 74 20 30 31 30 30 20  65 76 65 72 79 20 6d 6f  |at 0100 every mo|
00000040  72 6e 69 6e 67 2e 0a 0a  23 23 23 23 23 23 23 23  |rning...########|
00000050  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000080  23 23 23 23 0a 23 20 46  6f 72 20 74 68 69 73 20  |####.# For this |
00000090  73 63 72 69 70 74 20 74  6f 20 77 6f 72 6b 20 63  |script to work c|
000000a0  6f 72 72 65 63 74 6c 79  2c 20 74 77 6f 20 6d 6f  |orrectly, two mo|
000000b0  64 65 6d 20 63 6f 6e 66  69 67 75 72 61 74 69 6f  |dem configuratio|
000000c0  6e 0a 23 20 6f 70 74 69  6f 6e 73 20 61 72 65 20  |n.# options are |
000000d0  72 65 71 75 69 72 65 64  2c 20 61 6e 64 20 61 20  |required, and a |
000000e0  70 72 6f 70 65 72 74 79  20 6f 66 20 21 54 43 50  |property of !TCP|
000000f0  49 50 20 69 73 20 61 73  73 75 6d 65 64 3a 0a 23  |IP is assumed:.#|
00000100  0a 23 20 20 2a 20 54 68  65 20 6d 6f 64 65 6d 20  |.#  * The modem |
00000110  6d 75 73 74 20 6d 61 6b  65 20 44 43 44 20 66 6f  |must make DCD fo|
00000120  6c 6c 6f 77 20 74 68 65  20 61 63 74 75 61 6c 20  |llow the actual |
00000130  73 74 61 74 65 20 6f 66  0a 23 20 20 20 20 74 68  |state of.#    th|
00000140  65 20 63 61 72 72 69 65  72 20 66 72 6f 6d 20 74  |e carrier from t|
00000150  68 65 20 72 65 6d 6f 74  65 20 6d 6f 64 65 6d 20  |he remote modem |
00000160  28 69 2e 65 2e 20 69 74  20 6d 75 73 74 20 4e 4f  |(i.e. it must NO|
00000170  54 0a 23 20 20 20 20 68  6f 6c 64 20 44 43 44 20  |T.#    hold DCD |
00000180  68 69 67 68 20 77 68 69  6c 65 20 6f 6e 2d 6c 69  |high while on-li|
00000190  6e 65 2e 20 4f 6e 20 6d  79 20 48 61 79 65 73 20  |ne. On my Hayes |
000001a0  63 6f 6d 70 61 74 69 62  6c 65 0a 23 20 20 20 20  |compatible.#    |
000001b0  6d 6f 64 65 6d 20 74 68  69 73 20 69 73 20 6f 70  |modem this is op|
000001c0  74 69 6f 6e 20 26 43 31  2e 0a 23 0a 23 20 20 2a  |tion &C1..#.#  *|
000001d0  20 54 68 65 20 6d 6f 64  65 6d 20 6d 75 73 74 20  | The modem must |
000001e0  68 61 6e 67 20 75 70 20  69 66 20 6f 6e 2d 6c 69  |hang up if on-li|
000001f0  6e 65 20 77 68 65 6e 20  44 54 52 20 67 6f 65 73  |ne when DTR goes|
00000200  20 6c 6f 77 2e 0a 23 20  20 20 20 4f 6e 20 6d 79  | low..#    On my|
00000210  20 48 61 79 65 73 20 63  6f 6d 70 61 74 69 62 6c  | Hayes compatibl|
00000220  65 20 6d 6f 64 65 6d 20  74 68 69 73 20 69 73 20  |e modem this is |
00000230  6f 70 74 69 6f 6e 20 26  44 32 2e 0a 23 0a 23 20  |option &D2..#.# |
00000240  20 2a 20 49 20 61 73 73  75 6d 65 20 61 6c 6c 20  | * I assume all |
00000250  66 75 74 75 72 65 20 76  65 72 73 69 6f 6e 20 6f  |future version o|
00000260  66 20 21 54 43 50 49 50  20 77 69 6c 6c 20 74 6f  |f !TCPIP will to|
00000270  67 67 6c 65 0a 23 20 20  20 20 44 54 52 20 6c 6f  |ggle.#    DTR lo|
00000280  77 20 77 68 65 6e 20 74  68 65 79 20 65 78 69 74  |w when they exit|
00000290  2e 0a 23 0a 23 20 54 68  65 20 73 63 72 69 70 74  |..#.# The script|
000002a0  20 77 6f 72 6b 73 20 61  73 20 66 6f 6c 6c 6f 77  | works as follow|
000002b0  73 3a 20 77 68 65 6e 20  21 54 43 50 49 50 20 71  |s: when !TCPIP q|
000002c0  75 69 74 73 20 28 65 69  74 68 65 72 0a 23 20 6d  |uits (either.# m|
000002d0  61 6e 75 61 6c 6c 79 20  6f 72 20 6f 6e 20 61 20  |anually or on a |
000002e0  27 74 63 70 20 68 61 6e  67 75 70 27 20 74 69 6d  |'tcp hangup' tim|
000002f0  65 6f 75 74 29 2c 20 69  74 20 70 75 6c 6c 73 20  |eout), it pulls |
00000300  44 54 52 0a 23 20 6c 6f  77 2e 20 54 68 65 20 6d  |DTR.# low. The m|
00000310  6f 64 65 6d 20 68 61 6e  67 73 20 75 70 20 28 26  |odem hangs up (&|
00000320  44 32 29 2e 20 54 68 65  6e 2c 20 73 69 6e 63 65  |D2). Then, since|
00000330  20 74 68 65 72 65 20 69  73 20 6e 6f 0a 23 20 6c  | there is no.# l|
00000340  6f 6e 67 65 72 20 61 20  72 65 6d 6f 74 65 20 63  |onger a remote c|
00000350  61 72 72 69 65 72 20 70  72 65 73 65 6e 74 2c 20  |arrier present, |
00000360  44 43 44 20 67 6f 65 73  20 6c 6f 77 20 28 26 43  |DCD goes low (&C|
00000370  31 29 2e 0a 23 20 54 68  65 20 73 63 72 69 70 74  |1)..# The script|
00000380  20 68 61 73 20 61 20 44  43 44 20 61 6c 61 72 6d  | has a DCD alarm|
00000390  2c 20 77 68 69 63 68 20  63 61 6c 6c 73 20 74 68  |, which calls th|
000003a0  65 20 64 63 64 5f 64 72  6f 70 0a 23 20 66 75 6e  |e dcd_drop.# fun|
000003b0  63 74 69 6f 6e 20 61 6e  64 20 65 76 65 6e 74 75  |ction and eventu|
000003c0  61 6c 6c 79 20 74 68 65  20 68 61 6e 67 75 70 20  |ally the hangup |
000003d0  66 75 6e 63 74 69 6f 6e  2e 0a 23 0a 23 20 44 43  |function..#.# DC|
000003e0  44 20 63 61 6e 20 61 6c  73 6f 20 67 6f 20 6c 6f  |D can also go lo|
000003f0  77 20 28 74 68 65 20 63  61 72 72 69 65 72 20 63  |w (the carrier c|
00000400  61 6e 20 61 6c 73 6f 20  62 65 20 64 72 6f 70 70  |an also be dropp|
00000410  65 64 29 0a 23 20 64 75  65 20 74 6f 20 6c 69 6e  |ed).# due to lin|
00000420  65 20 6e 6f 69 73 65 20  6f 72 20 44 65 6d 6f 6e  |e noise or Demon|
00000430  20 68 61 6e 67 69 6e 67  20 75 70 2e 0a 23 0a 23  | hanging up..#.#|
00000440  20 53 69 6e 63 65 20 74  68 65 20 68 61 6e 67 75  | Since the hangu|
00000450  70 20 66 75 6e 63 74 69  6f 6e 20 63 61 6e 20 61  |p function can a|
00000460  6c 73 6f 20 67 65 74 20  63 61 6c 6c 65 64 20 6f  |lso get called o|
00000470  6e 20 61 6e 0a 23 20 6f  6e 2d 6c 69 6e 65 20 74  |n an.# on-line t|
00000480  69 6d 65 6f 75 74 20 74  69 6d 65 72 20 28 73 65  |imeout timer (se|
00000490  65 20 6c 61 74 65 72 29  2c 20 69 74 20 6b 69 6c  |e later), it kil|
000004a0  6c 73 20 21 54 43 50 49  50 2e 0a 23 0a 23 20 53  |ls !TCPIP..#.# S|
000004b0  6f 20 2d 20 63 61 6c 6c  20 74 65 72 6d 69 6e 61  |o - call termina|
000004c0  74 69 6f 6e 20 28 64 72  6f 70 70 65 64 20 63 61  |tion (dropped ca|
000004d0  72 72 69 65 72 2c 20 21  54 43 50 49 50 20 65 78  |rrier, !TCPIP ex|
000004e0  69 74 69 6e 67 2c 0a 23  20 6f 72 20 6f 6e 2d 6c  |iting,.# or on-l|
000004f0  69 6e 65 20 74 69 6d 65  6f 75 74 29 20 77 69 6c  |ine timeout) wil|
00000500  6c 20 61 6c 77 61 79 73  20 72 65 73 75 6c 74 20  |l always result |
00000510  69 6e 20 74 68 65 20 6d  6f 64 65 6d 20 62 65 69  |in the modem bei|
00000520  6e 67 0a 23 20 70 6c 61  63 65 64 20 62 61 63 6b  |ng.# placed back|
00000530  20 6f 6e 2d 68 6f 6f 6b  2c 20 61 6e 64 20 21 54  | on-hook, and !T|
00000540  43 50 49 50 20 62 65 69  6e 67 20 6b 69 6c 6c 65  |CPIP being kille|
00000550  64 2e 0a 23 23 23 23 23  23 23 23 23 23 23 23 23  |d..#############|
00000560  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000580  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 0a  |###############.|
00000590  0a 23 20 43 6f 6e 66 69  67 75 72 65 20 61 6e 64  |.# Configure and|
000005a0  20 62 75 69 6c 64 20 75  73 65 72 20 6d 65 6e 75  | build user menu|
000005b0  2e 0a 63 61 6c 6c 20 63  6f 6e 66 69 67 75 72 65  |..call configure|
000005c0  0a 63 61 6c 6c 20 6d 61  6b 65 6d 65 6e 75 73 0a  |.call makemenus.|
000005d0  0a 23 20 53 65 74 75 70  20 73 65 72 69 61 6c 20  |.# Setup serial |
000005e0  70 6f 72 74 0a 64 72 69  76 65 72 20 55 53 52 0a  |port.driver USR.|
000005f0  70 6f 72 74 20 25 77 70  6f 72 74 20 25 70 72 74  |port %wport %prt|
00000600  6e 75 6d 0a 73 70 65 65  64 20 25 73 70 65 65 64  |num.speed %speed|
00000610  0a 73 65 74 20 70 72 6f  74 6f 63 6f 6c 20 73 6c  |.set protocol sl|
00000620  69 70 0a 0a 23 20 44 65  66 69 6e 65 20 74 68 65  |ip..# Define the|
00000630  20 70 68 6f 6e 65 20 6e  75 6d 62 65 72 0a 73 65  | phone number.se|
00000640  74 20 70 68 6f 6e 65 6e  75 6d 20 30 31 31 33 32  |t phonenum 01132|
00000650  39 38 34 38 34 38 0a 0a  23 20 53 65 74 75 70 20  |984848..# Setup |
00000660  61 6e 20 61 6c 61 72 6d  20 66 6f 72 20 61 75 74  |an alarm for aut|
00000670  6f 6d 61 74 69 63 20 64  69 61 6c 69 6e 67 0a 61  |omatic dialing.a|
00000680  6c 61 72 6d 20 2f 72 65  70 65 61 74 20 2f 74 69  |larm /repeat /ti|
00000690  6d 65 3d 30 31 3a 30 30  20 2f 69 64 3d 65 76 65  |me=01:00 /id=eve|
000006a0  72 79 64 61 79 20 22 63  61 6c 6c 20 64 65 6d 6f  |ryday "call demo|
000006b0  6e 22 0a 0a 23 20 44 6f  20 61 62 73 6f 6c 75 74  |n"..# Do absolut|
000006c0  65 6c 79 20 6e 6f 74 68  69 6e 67 20 75 6e 74 69  |ely nothing unti|
000006d0  6c 20 74 68 65 20 61 6c  61 72 6d 20 74 72 69 67  |l the alarm trig|
000006e0  67 65 72 73 0a 23 20 6f  72 20 61 20 6d 65 6e 75  |gers.# or a menu|
000006f0  20 73 65 6c 65 63 74 69  6f 6e 20 69 73 20 6d 61  | selection is ma|
00000700  64 65 0a 3a 6c 6f 6f 70  0a 6d 65 73 73 61 67 65  |de.:loop.message|
00000710  20 2f 63 6c 6f 73 65 0a  77 61 69 74 20 2f 65 76  | /close.wait /ev|
00000720  65 6e 74 0a 67 6f 74 6f  20 6c 6f 6f 70 0a 65 78  |ent.goto loop.ex|
00000730  69 74 0a 0a 23 23 23 23  23 23 23 23 23 23 23 23  |it..############|
00000740  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000770  0a 23 20 54 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |.# The following|
00000780  20 35 20 66 75 6e 63 74  69 6f 6e 73 20 61 72 65  | 5 functions are|
00000790  20 63 61 6c 6c 65 64 20  66 72 6f 6d 20 74 68 65  | called from the|
000007a0  20 75 73 65 72 20 6d 65  6e 75 0a 23 20 6f 72 20  | user menu.# or |
000007b0  62 79 20 61 20 74 69 6d  65 72 2e 20 45 61 63 68  |by a timer. Each|
000007c0  20 64 65 66 69 6e 65 73  20 6e 6e 74 70 20 61 6e  | defines nntp an|
000007d0  64 20 73 6d 74 70 2e 20  54 68 65 73 65 20 61 72  |d smtp. These ar|
000007e0  65 0a 23 20 76 61 6c 75  65 73 20 73 75 62 73 74  |e.# values subst|
000007f0  69 74 75 74 65 64 20 69  6e 74 6f 20 74 68 65 20  |ituted into the |
00000800  21 54 43 50 49 50 20 73  74 61 72 74 75 70 20 73  |!TCPIP startup s|
00000810  63 72 69 70 74 2e 20 48  65 6e 63 65 0a 23 20 74  |cript. Hence.# t|
00000820  68 65 20 3a 64 6f 6d 61  69 6c 20 66 75 6e 63 74  |he :domail funct|
00000830  69 6f 6e 20 64 65 66 69  6e 65 73 20 27 6e 6e 74  |ion defines 'nnt|
00000840  70 27 20 74 6f 20 62 65  20 27 23 6e 6e 74 70 27  |p' to be '#nntp'|
00000850  20 73 69 6e 63 65 0a 23  20 69 74 20 77 69 73 68  | since.# it wish|
00000860  65 73 20 74 6f 20 63 6f  6d 6d 65 6e 74 20 6f 75  |es to comment ou|
00000870  74 20 61 6c 6c 20 74 68  65 20 6e 6e 74 70 20 63  |t all the nntp c|
00000880  6f 6e 66 69 67 75 72 61  74 69 6f 6e 20 69 6e 0a  |onfiguration in.|
00000890  23 20 74 68 65 20 41 75  74 6f 45 78 65 63 20 73  |# the AutoExec s|
000008a0  63 72 69 70 74 2e 0a 23  23 23 23 23 23 23 23 23  |cript..#########|
000008b0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
000008e0  23 23 23 0a 0a 23 23 23  23 23 23 23 23 23 23 23  |###..###########|
000008f0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000920  23 0a 23 20 43 61 6c 6c  20 44 65 6d 6f 6e 20 28  |#.# Call Demon (|
00000930  74 68 69 73 20 69 73 20  61 75 74 6f 6d 61 74 69  |this is automati|
00000940  63 61 6c 6c 79 20 74 72  69 67 67 65 72 65 64 0a  |cally triggered.|
00000950  23 0a 23 20 49 74 20 73  65 74 73 20 27 74 69 6d  |#.# It sets 'tim|
00000960  65 64 27 20 74 6f 20 27  79 65 73 27 20 66 6f 72  |ed' to 'yes' for|
00000970  20 76 61 72 69 6f 75 73  20 74 69 6d 65 72 73 20  | various timers |
00000980  74 6f 20 62 65 20 73 65  74 2e 0a 23 20 43 61 6c  |to be set..# Cal|
00000990  6c 20 44 65 6d 6f 6e 2c  20 61 6e 64 20 6a 75 6d  |l Demon, and jum|
000009a0  70 20 74 6f 20 74 68 65  20 27 6c 6f 67 67 65 64  |p to the 'logged|
000009b0  69 6e 27 20 72 6f 75 74  69 6e 65 2e 0a 23 23 23  |in' routine..###|
000009c0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
000009f0  23 23 23 23 23 23 23 23  23 0a 3a 64 65 6d 6f 6e  |#########.:demon|
00000a00  0a 73 65 74 20 74 69 6d  65 64 20 79 65 73 0a 73  |.set timed yes.s|
00000a10  65 74 20 6e 6e 74 70 20  6e 6e 74 70 0a 73 65 74  |et nntp nntp.set|
00000a20  20 73 6d 74 70 20 73 6d  74 70 0a 63 61 6c 6c 20  | smtp smtp.call |
00000a30  64 69 61 6c 75 70 0a 67  6f 74 6f 20 6c 6f 67 67  |dialup.goto logg|
00000a40  65 64 69 6e 0a 0a 23 23  23 23 23 23 23 23 23 23  |edin..##########|
00000a50  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000a80  23 23 0a 23 20 41 20 6d  61 69 6c 20 64 6f 77 6e  |##.# A mail down|
00000a90  6c 6f 61 64 0a 23 0a 23  20 43 61 6c 6c 20 44 65  |load.#.# Call De|
00000aa0  6d 6f 6e 2c 20 61 6e 64  20 6a 75 6d 70 20 74 6f  |mon, and jump to|
00000ab0  20 74 68 65 20 27 6c 6f  67 67 65 64 69 6e 27 20  | the 'loggedin' |
00000ac0  72 6f 75 74 69 6e 65 2e  0a 23 23 23 23 23 23 23  |routine..#######|
00000ad0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000b00  23 23 23 23 23 0a 3a 64  6f 6d 61 69 6c 0a 73 65  |#####.:domail.se|
00000b10  74 20 74 69 6d 65 64 20  79 65 73 0a 73 65 74 20  |t timed yes.set |
00000b20  6e 6e 74 70 20 23 6e 6e  74 70 0a 73 65 74 20 73  |nntp #nntp.set s|
00000b30  6d 74 70 20 73 6d 74 70  0a 63 61 6c 6c 20 64 69  |mtp smtp.call di|
00000b40  61 6c 75 70 0a 67 6f 74  6f 20 6c 6f 67 67 65 64  |alup.goto logged|
00000b50  69 6e 0a 0a 23 23 23 23  23 23 23 23 23 23 23 23  |in..############|
00000b60  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000b90  0a 23 20 41 20 6e 65 77  73 20 64 6f 77 6e 6c 6f  |.# A news downlo|
00000ba0  61 64 0a 23 0a 23 20 43  61 6c 6c 20 44 65 6d 6f  |ad.#.# Call Demo|
00000bb0  6e 2c 20 61 6e 64 20 6a  75 6d 70 20 74 6f 20 74  |n, and jump to t|
00000bc0  68 65 20 27 6c 6f 67 67  65 64 69 6e 27 20 72 6f  |he 'loggedin' ro|
00000bd0  75 74 69 6e 65 2e 0a 23  23 23 23 23 23 23 23 23  |utine..#########|
00000be0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000c10  23 23 23 0a 3a 64 6f 6e  65 77 73 0a 73 65 74 20  |###.:donews.set |
00000c20  74 69 6d 65 64 20 6e 6f  0a 73 65 74 20 6e 6e 74  |timed no.set nnt|
00000c30  70 20 6e 6e 74 70 0a 73  65 74 20 73 6d 74 70 20  |p nntp.set smtp |
00000c40  23 73 6d 74 70 0a 63 61  6c 6c 20 64 69 61 6c 75  |#smtp.call dialu|
00000c50  70 0a 67 6f 74 6f 20 6c  6f 67 67 65 64 69 6e 0a  |p.goto loggedin.|
00000c60  0a 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |.###############|
00000c70  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000c90  23 23 23 23 23 23 23 23  23 23 23 23 23 0a 23 20  |#############.# |
00000ca0  4e 65 77 73 20 61 6e 64  20 6d 61 69 6c 0a 23 0a  |News and mail.#.|
00000cb0  23 20 43 61 6c 6c 20 44  65 6d 6f 6e 2c 20 61 6e  |# Call Demon, an|
00000cc0  64 20 6a 75 6d 70 20 74  6f 20 74 68 65 20 27 6c  |d jump to the 'l|
00000cd0  6f 67 67 65 64 69 6e 27  20 72 6f 75 74 69 6e 65  |oggedin' routine|
00000ce0  2e 0a 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |..##############|
00000cf0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000d10  23 23 23 23 23 23 23 23  23 23 23 23 23 23 0a 3a  |##############.:|
00000d20  64 6f 62 6f 74 68 0a 73  65 74 20 74 69 6d 65 64  |doboth.set timed|
00000d30  20 6e 6f 0a 73 65 74 20  6e 6e 74 70 20 6e 6e 74  | no.set nntp nnt|
00000d40  70 0a 73 65 74 20 73 6d  74 70 20 73 6d 74 70 0a  |p.set smtp smtp.|
00000d50  63 61 6c 6c 20 64 69 61  6c 75 70 0a 67 6f 74 6f  |call dialup.goto|
00000d60  20 6c 6f 67 67 65 64 69  6e 0a 0a 23 23 23 23 23  | loggedin..#####|
00000d70  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000da0  23 23 23 23 23 23 23 0a  23 20 49 6e 74 65 72 61  |#######.# Intera|
00000db0  63 74 69 76 65 20 73 65  73 73 69 6f 6e 0a 23 0a  |ctive session.#.|
00000dc0  23 20 43 61 6c 6c 20 44  65 6d 6f 6e 2c 20 61 6e  |# Call Demon, an|
00000dd0  64 20 6a 75 6d 70 20 74  6f 20 74 68 65 20 27 6c  |d jump to the 'l|
00000de0  6f 67 67 65 64 69 6e 27  20 72 6f 75 74 69 6e 65  |oggedin' routine|
00000df0  2e 0a 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |..##############|
00000e00  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000e20  23 23 23 23 23 23 23 23  23 23 23 23 23 23 0a 3a  |##############.:|
00000e30  69 6e 74 65 72 61 63 74  0a 73 65 74 20 74 69 6d  |interact.set tim|
00000e40  65 64 20 6e 6f 0a 73 65  74 20 6e 6e 74 70 20 23  |ed no.set nntp #|
00000e50  6e 6e 74 70 0a 73 65 74  20 73 6d 74 70 20 23 73  |nntp.set smtp #s|
00000e60  6d 74 70 0a 63 61 6c 6c  20 64 69 61 6c 75 70 0a  |mtp.call dialup.|
00000e70  67 6f 74 6f 20 6c 6f 67  67 65 64 69 6e 0a 0a 23  |goto loggedin..#|
00000e80  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000eb0  23 23 23 23 23 23 23 23  23 23 23 0a 23 20 44 69  |###########.# Di|
00000ec0  61 6c 20 44 65 6d 6f 6e  2e 0a 23 0a 23 20 43 72  |al Demon..#.# Cr|
00000ed0  65 61 74 65 20 61 6e 20  41 75 74 6f 45 78 65 63  |eate an AutoExec|
00000ee0  20 66 69 6c 65 20 66 6f  72 20 21 54 43 50 49 50  | file for !TCPIP|
00000ef0  2c 20 63 6c 61 69 6d 20  61 6e 64 20 69 6e 69 74  |, claim and init|
00000f00  69 61 6c 69 73 65 0a 23  20 74 68 65 20 6d 6f 64  |ialise.# the mod|
00000f10  65 6d 2e 20 44 69 61 6c  20 44 65 6d 6f 6e 2e 20  |em. Dial Demon. |
00000f20  4c 6f 67 69 6e 20 61 6e  64 20 73 65 74 20 70 72  |Login and set pr|
00000f30  6f 74 6f 63 6f 6c 2e 20  43 61 70 74 75 72 65 0a  |otocol. Capture.|
00000f40  23 20 61 6e 64 20 64 69  73 70 6c 61 79 20 4d 4f  |# and display MO|
00000f50  54 44 2e 20 57 61 69 74  20 66 6f 72 20 44 65 6d  |TD. Wait for Dem|
00000f60  6f 6e 20 74 6f 20 73 65  74 75 70 20 74 68 65 69  |on to setup thei|
00000f70  72 20 53 4c 49 50 0a 23  20 73 65 72 76 69 63 65  |r SLIP.# service|
00000f80  2e 0a 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |..##############|
00000f90  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00000fb0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 0a 3a  |##############.:|
00000fc0  64 69 61 6c 75 70 0a 0a  23 20 54 68 65 20 63 61  |dialup..# The ca|
00000fd0  6c 6c 20 68 61 73 6e 27  74 20 66 61 69 6c 65 64  |ll hasn't failed|
00000fe0  20 28 79 65 74 21 29 0a  73 65 74 20 66 61 69 6c  | (yet!).set fail|
00000ff0  65 64 20 6e 6f 0a 0a 23  20 53 65 65 20 62 65 6c  |ed no..# See bel|
00001000  6f 77 2e 2e 2e 0a 73 65  74 20 77 61 69 74 74 69  |ow....set waitti|
00001010  6d 65 20 34 0a 73 65 74  20 73 74 61 72 74 74 69  |me 4.set startti|
00001020  6d 65 20 30 0a 73 65 74  20 73 74 6f 70 74 69 6d  |me 0.set stoptim|
00001030  65 20 30 0a 0a 23 20 43  72 65 61 74 65 20 61 20  |e 0..# Create a |
00001040  21 54 43 50 49 50 20 41  75 74 6f 45 78 65 63 20  |!TCPIP AutoExec |
00001050  66 69 6c 65 0a 6d 61 6b  65 20 3c 54 43 50 49 50  |file.make <TCPIP|
00001060  24 44 69 72 3e 2e 41 75  74 6f 54 65 6d 70 6c 20  |$Dir>.AutoTempl |
00001070  3c 54 43 50 49 50 24 44  69 72 3e 2e 41 75 74 6f  |<TCPIP$Dir>.Auto|
00001080  45 78 65 63 0a 0a 23 20  43 6c 61 69 6d 20 61 6e  |Exec..# Claim an|
00001090  64 20 69 6e 69 74 69 61  6c 69 73 65 20 74 68 65  |d initialise the|
000010a0  20 6d 6f 64 65 6d 0a 69  66 20 28 21 63 6c 61 69  | modem.if (!clai|
000010b0  6d 20 33 29 20 67 6f 74  6f 20 63 61 6c 6c 5f 66  |m 3) goto call_f|
000010c0  61 69 6c 65 64 0a 6d 65  73 73 61 67 65 20 2f 63  |ailed.message /c|
000010d0  6c 6f 73 65 0a 69 6e 69  74 20 41 54 5a 0a 73 6c  |lose.init ATZ.sl|
000010e0  65 65 70 20 32 0a 73 65  6e 64 20 41 54 51 30 56  |eep 2.send ATQ0V|
000010f0  31 4d 30 0a 69 66 20 28  21 77 61 69 74 20 2f 64  |1M0.if (!wait /d|
00001100  65 6c 3d 35 20 4f 4b 29  20 67 6f 74 6f 20 63 61  |el=5 OK) goto ca|
00001110  6c 6c 5f 66 61 69 6c 65  64 0a 0a 23 20 54 72 79  |ll_failed..# Try|
00001120  20 74 6f 20 64 69 61 6c  20 44 65 6d 6f 6e 0a 72  | to dial Demon.r|
00001130  65 74 72 79 20 35 30 20  31 35 0a 69 66 20 28 21  |etry 50 15.if (!|
00001140  64 69 61 6c 20 2f 6e 6f  64 69 61 6c 3d 33 30 20  |dial /nodial=30 |
00001150  2f 6e 6f 63 61 72 3d 31  30 20 2f 62 75 73 79 3d  |/nocar=10 /busy=|
00001160  35 20 25 70 68 6f 6e 65  6e 75 6d 29 20 63 61 6c  |5 %phonenum) cal|
00001170  6c 20 63 61 6c 6c 5f 66  61 69 6c 65 64 0a 0a 23  |l call_failed..#|
00001180  20 53 75 63 63 65 73 73  66 75 6c 20 63 6f 6e 6e  | Successful conn|
00001190  65 63 74 2e 20 4c 6f 67  69 6e 0a 69 66 20 28 21  |ect. Login.if (!|
000011a0  77 61 69 74 20 2f 64 65  6c 3d 32 30 20 6f 67 69  |wait /del=20 ogi|
000011b0  6e 3a 29 20 67 6f 74 6f  20 63 61 6c 6c 5f 66 61  |n:) goto call_fa|
000011c0  69 6c 65 64 0a 73 65 6e  64 20 25 6e 6f 64 65 6e  |iled.send %noden|
000011d0  61 6d 65 0a 0a 23 20 53  65 6e 64 20 70 61 73 73  |ame..# Send pass|
000011e0  77 6f 72 64 2e 20 41 6c  73 6f 20 72 65 6d 65 6d  |word. Also remem|
000011f0  62 65 72 20 63 75 72 72  65 6e 74 20 74 69 6d 65  |ber current time|
00001200  0a 73 65 74 20 73 74 61  72 74 74 69 6d 65 20 25  |.set starttime %|
00001210  24 74 69 6d 65 0a 69 66  20 28 21 77 61 69 74 20  |$time.if (!wait |
00001220  2f 64 65 6c 3d 32 30 20  77 6f 72 64 3a 29 20 67  |/del=20 word:) g|
00001230  6f 74 6f 20 63 61 6c 6c  5f 66 61 69 6c 65 64 0a  |oto call_failed.|
00001240  73 65 6e 64 20 25 70 61  73 73 77 6f 72 64 0a 0a  |send %password..|
00001250  23 20 53 65 6e 64 20 70  72 6f 74 6f 63 6f 6c 2e  |# Send protocol.|
00001260  0a 69 66 20 28 21 77 61  69 74 20 2f 64 65 6c 3d  |.if (!wait /del=|
00001270  35 30 20 6f 63 6f 6c 3a  29 20 67 6f 74 6f 20 63  |50 ocol:) goto c|
00001280  61 6c 6c 5f 66 61 69 6c  65 64 0a 73 65 6e 64 20  |all_failed.send |
00001290  25 70 72 6f 74 6f 63 6f  6c 0a 0a 23 20 47 65 74  |%protocol..# Get|
000012a0  20 63 75 72 72 65 6e 74  20 74 69 6d 65 2e 20 57  | current time. W|
000012b0  6f 72 6b 20 6f 75 74 20  64 69 66 66 65 72 65 6e  |ork out differen|
000012c0  63 65 20 62 65 74 77 65  65 6e 20 6e 6f 77 20 61  |ce between now a|
000012d0  6e 64 20 77 68 65 6e 20  77 65 0a 23 20 68 61 64  |nd when we.# had|
000012e0  20 6a 75 73 74 20 73 65  6e 74 20 6f 75 72 20 6e  | just sent our n|
000012f0  6f 64 65 6e 61 6d 65 2e  20 48 61 6c 76 65 20 69  |odename. Halve i|
00001300  74 2e 20 57 61 69 74 20  74 68 61 74 20 6c 6f 6e  |t. Wait that lon|
00001310  67 20 61 66 74 65 72 20  74 68 65 0a 23 20 4d 4f  |g after the.# MO|
00001320  54 44 2e 20 54 68 69 73  20 69 73 20 69 6e 74 65  |TD. This is inte|
00001330  6e 64 65 64 20 74 6f 20  67 69 76 65 20 61 20 72  |nded to give a r|
00001340  6f 75 67 68 20 69 64 65  61 20 6f 66 20 73 70 65  |ough idea of spe|
00001350  65 64 20 74 68 65 20 44  65 6d 6f 6e 0a 23 20 6d  |ed the Demon.# m|
00001360  61 63 68 69 6e 65 73 20  61 72 65 20 72 75 6e 6e  |achines are runn|
00001370  69 6e 67 20 61 74 20 2d  20 69 2e 65 2e 20 74 68  |ing at - i.e. th|
00001380  65 20 6c 6f 6e 67 65 72  20 69 74 20 74 61 6b 65  |e longer it take|
00001390  73 20 74 6f 20 6c 6f 67  20 6f 6e 2c 0a 23 20 74  |s to log on,.# t|
000013a0  68 65 20 6c 6f 6e 67 65  72 20 77 65 20 68 61 76  |he longer we hav|
000013b0  65 20 74 6f 20 77 61 69  74 20 62 65 66 6f 72 65  |e to wait before|
000013c0  20 74 68 65 20 53 4c 49  50 20 73 65 72 76 69 63  | the SLIP servic|
000013d0  65 20 69 73 20 72 75 6e  6e 69 6e 67 2e 0a 73 65  |e is running..se|
000013e0  74 20 73 74 6f 70 74 69  6d 65 20 25 24 74 69 6d  |t stoptime %$tim|
000013f0  65 0a 73 65 74 20 77 61  69 74 74 69 6d 65 20 7b  |e.set waittime {|
00001400  65 76 61 6c 20 22 25 73  74 6f 70 74 69 6d 65 2d  |eval "%stoptime-|
00001410  25 73 74 61 72 74 74 69  6d 65 22 7d 0a 73 65 74  |%starttime"}.set|
00001420  20 77 61 69 74 74 69 6d  65 20 7b 65 76 61 6c 20  | waittime {eval |
00001430  22 25 77 61 69 74 74 69  6d 65 20 44 49 56 20 32  |"%waittime DIV 2|
00001440  22 7d 0a 69 66 20 28 3f  65 71 20 25 77 61 69 74  |"}.if (?eq %wait|
00001450  74 69 6d 65 20 30 29 20  73 65 74 20 77 61 69 74  |time 0) set wait|
00001460  74 69 6d 65 20 31 0a 0a  23 20 47 65 74 20 4d 4f  |time 1..# Get MO|
00001470  54 44 2c 20 61 6e 64 20  49 50 20 61 64 64 72 65  |TD, and IP addre|
00001480  73 73 0a 6d 65 73 73 61  67 65 20 2f 63 61 70 74  |ss.message /capt|
00001490  75 72 65 3d 22 49 50 22  20 2f 65 6e 64 3d 22 48  |ure="IP" /end="H|
000014a0  45 4c 4c 4f 22 20 2f 6d  61 78 6c 69 6e 65 73 3d  |ELLO" /maxlines=|
000014b0  39 20 2f 63 65 6e 74 72  65 0a 69 70 67 65 74 20  |9 /centre.ipget |
000014c0  31 35 38 2e 0a 69 66 20  28 21 77 61 69 74 20 2f  |158..if (!wait /|
000014d0  64 65 6c 3d 33 30 20 48  45 4c 4c 4f 29 20 67 6f  |del=30 HELLO) go|
000014e0  74 6f 20 63 61 6c 6c 5f  66 61 69 6c 65 64 0a 77  |to call_failed.w|
000014f0  61 69 74 20 2f 64 65 6c  61 79 3d 25 77 61 69 74  |ait /delay=%wait|
00001500  74 69 6d 65 20 22 61 20  77 68 69 6c 65 22 0a 72  |time "a while".r|
00001510  65 74 75 72 6e 20 31 0a  0a 23 23 23 23 23 23 23  |eturn 1..#######|
00001520  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00001550  23 23 23 23 23 0a 23 20  43 61 6c 6c 20 73 65 74  |#####.# Call set|
00001560  75 70 20 66 61 69 6c 65  64 2e 0a 23 0a 23 20 20  |up failed..#.#  |
00001570  2a 20 43 6f 75 6c 64 6e  27 74 20 63 6c 61 69 6d  |* Couldn't claim|
00001580  20 64 65 76 69 63 65 0a  23 20 20 2a 20 43 6f 75  | device.#  * Cou|
00001590  6c 64 6e 27 74 20 69 6e  69 74 69 61 6c 69 73 65  |ldn't initialise|
000015a0  20 6d 6f 64 65 6d 0a 23  20 20 2a 20 43 6f 75 6c  | modem.#  * Coul|
000015b0  64 6e 27 74 20 67 65 74  20 61 6e 20 61 6e 73 77  |dn't get an answ|
000015c0  65 72 0a 23 20 20 2a 20  54 69 6d 65 64 20 6f 75  |er.#  * Timed ou|
000015d0  74 20 64 75 72 69 6e 67  20 6c 6f 67 69 6e 0a 23  |t during login.#|
000015e0  20 20 2a 20 54 69 6d 65  64 20 6f 75 74 20 77 61  |  * Timed out wa|
000015f0  69 74 69 6e 67 20 66 6f  72 20 4d 4f 54 44 0a 23  |iting for MOTD.#|
00001600  0a 23 20 4d 61 72 6b 20  74 68 65 20 63 61 6c 6c  |.# Mark the call|
00001610  20 61 73 20 66 61 69 6c  65 64 2c 20 69 6e 66 6f  | as failed, info|
00001620  72 6d 20 74 68 65 20 75  73 65 72 20 61 6e 64 20  |rm the user and |
00001630  72 65 6c 65 61 73 65 0a  23 20 74 68 65 20 64 65  |release.# the de|
00001640  76 69 63 65 2e 0a 23 23  23 23 23 23 23 23 23 23  |vice..##########|
00001650  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00001680  23 23 0a 3a 63 61 6c 6c  5f 66 61 69 6c 65 64 0a  |##.:call_failed.|
00001690  73 65 74 20 66 61 69 6c  65 64 20 79 65 73 0a 6d  |set failed yes.m|
000016a0  65 73 73 61 67 65 20 22  43 61 6c 6c 20 73 65 74  |essage "Call set|
000016b0  75 70 20 66 61 69 6c 65  64 22 20 2f 63 65 6e 74  |up failed" /cent|
000016c0  72 65 0a 72 65 6c 65 61  73 65 0a 72 65 74 75 72  |re.release.retur|
000016d0  6e 20 30 0a 0a 23 23 23  23 23 23 23 23 23 23 23  |n 0..###########|
000016e0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00001710  23 0a 23 20 53 75 63 63  65 73 73 66 75 6c 6c 79  |#.# Successfully|
00001720  20 6c 6f 67 67 65 64 20  69 6e 2e 0a 23 20 0a 23  | logged in..# .#|
00001730  20 28 4e 6f 74 20 73 74  72 69 63 74 6c 79 20 74  | (Not strictly t|
00001740  72 75 65 20 2d 2d 20 77  69 6c 6c 20 61 72 72 69  |rue -- will arri|
00001750  76 65 20 68 65 72 65 20  66 72 6f 6d 20 63 61 6c  |ve here from cal|
00001760  6c 5f 66 61 69 6c 65 64  0a 23 20 74 6f 6f 2e 20  |l_failed.# too. |
00001770  54 68 65 72 65 66 6f 72  65 20 63 68 65 63 6b 20  |Therefore check |
00001780  25 66 61 69 6c 65 64 20  61 6e 64 20 72 65 74 75  |%failed and retu|
00001790  72 6e 29 2e 0a 23 23 23  23 23 23 23 23 23 23 23  |rn)..###########|
000017a0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
000017d0  23 0a 3a 6c 6f 67 67 65  64 69 6e 0a 69 66 20 28  |#.:loggedin.if (|
000017e0  3f 65 71 20 25 66 61 69  6c 65 64 20 79 65 73 29  |?eq %failed yes)|
000017f0  20 72 65 74 75 72 6e 20  31 0a 0a 23 20 53 65 74  | return 1..# Set|
00001800  20 61 6e 20 61 6c 61 72  6d 20 69 66 20 74 68 69  | an alarm if thi|
00001810  73 20 63 61 6c 6c 20 69  73 20 74 69 6d 65 64 2e  |s call is timed.|
00001820  20 54 68 69 73 20 69 73  20 73 6f 20 74 68 61 74  | This is so that|
00001830  20 77 65 20 64 6f 6e 27  74 0a 23 20 73 70 65 6e  | we don't.# spen|
00001840  64 20 74 6f 6f 20 6c 6f  6e 67 20 6f 6e 2d 6c 69  |d too long on-li|
00001850  6e 65 20 75 6e 61 74 74  65 6e 64 65 64 2e 20 3a  |ne unattended. :|
00001860  29 0a 69 66 20 28 3f 65  71 20 25 74 69 6d 65 64  |).if (?eq %timed|
00001870  20 79 65 73 29 20 61 6c  61 72 6d 20 2f 74 69 6d  | yes) alarm /tim|
00001880  65 3d 2b 30 30 3a 30 30  3a 32 30 20 2f 69 64 3d  |e=+00:00:20 /id=|
00001890  74 69 6d 65 6f 75 74 20  22 67 6f 74 6f 20 68 61  |timeout "goto ha|
000018a0  6e 67 75 70 22 0a 0a 23  20 46 69 72 65 20 75 70  |ngup"..# Fire up|
000018b0  20 21 54 43 50 49 50 0a  74 61 73 6b 20 2f 6e 61  | !TCPIP.task /na|
000018c0  6d 65 3d 22 54 43 50 2f  49 50 22 20 3c 54 43 50  |me="TCP/IP" <TCP|
000018d0  49 50 32 24 64 69 72 3e  2e 21 52 75 6e 0a 0a 23  |IP2$dir>.!Run..#|
000018e0  20 57 61 74 63 68 20 66  6f 72 20 44 43 44 20 74  | Watch for DCD t|
000018f0  6f 20 64 72 6f 70 20 28  69 2e 65 2e 20 74 68 65  |o drop (i.e. the|
00001900  20 6d 6f 64 65 6d 20 68  61 73 20 68 75 6e 67 20  | modem has hung |
00001910  75 70 29 2e 0a 61 6c 61  72 6d 20 2f 64 63 64 20  |up)..alarm /dcd |
00001920  22 67 6f 74 6f 20 64 63  64 5f 64 72 6f 70 22 0a  |"goto dcd_drop".|
00001930  0a 23 20 57 61 69 74 20  66 6f 72 20 61 20 68 61  |.# Wait for a ha|
00001940  6e 67 75 70 2e 20 54 68  69 73 20 6c 6f 6f 70 20  |ngup. This loop |
00001950  74 65 72 6d 69 6e 61 74  65 73 20 6f 6e 20 74 68  |terminates on th|
00001960  65 20 74 69 6d 65 6f 75  74 20 61 6c 61 72 6d 0a  |e timeout alarm.|
00001970  23 20 28 69 66 20 73 65  74 29 20 6f 72 20 74 68  |# (if set) or th|
00001980  65 20 44 43 44 20 61 6c  61 72 6d 2e 0a 3a 68 75  |e DCD alarm..:hu|
00001990  70 77 61 69 74 0a 6d 65  73 73 61 67 65 20 2f 63  |pwait.message /c|
000019a0  6c 6f 73 65 0a 77 61 69  74 20 2f 65 76 65 6e 74  |lose.wait /event|
000019b0  0a 67 6f 74 6f 20 68 75  70 77 61 69 74 0a 0a 23  |.goto hupwait..#|
000019c0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
000019f0  23 23 23 23 23 23 23 23  23 23 23 0a 23 20 44 43  |###########.# DC|
00001a00  44 20 68 61 73 20 64 72  6f 70 70 65 64 2e 0a 23  |D has dropped..#|
00001a10  0a 23 20 43 61 6e 63 65  6c 20 74 68 65 20 74 69  |.# Cancel the ti|
00001a20  6d 65 6f 75 74 20 61 6c  61 72 6d 20 28 69 66 20  |meout alarm (if |
00001a30  69 74 20 65 78 69 73 74  73 29 2e 0a 23 23 23 23  |it exists)..####|
00001a40  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00001a70  23 23 23 23 23 23 23 23  0a 3a 64 63 64 5f 64 72  |########.:dcd_dr|
00001a80  6f 70 0a 61 6c 61 72 6d  20 2f 63 61 6e 63 65 6c  |op.alarm /cancel|
00001a90  3d 74 69 6d 65 6f 75 74  0a 67 6f 74 6f 20 68 61  |=timeout.goto ha|
00001aa0  6e 67 75 70 0a 0a 23 23  23 23 23 23 23 23 23 23  |ngup..##########|
00001ab0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00001ae0  23 23 0a 23 20 48 61 6e  67 75 70 20 74 68 65 20  |##.# Hangup the |
00001af0  6c 69 6e 65 0a 23 0a 23  20 41 72 72 69 76 65 20  |line.#.# Arrive |
00001b00  68 65 72 65 20 61 66 74  65 72 20 61 20 44 43 44  |here after a DCD|
00001b10  20 64 72 6f 70 20 28 6f  72 20 61 20 74 69 6d 65  | drop (or a time|
00001b20  6f 75 74 20 61 6c 61 72  6d 29 2e 20 4b 69 6c 6c  |out alarm). Kill|
00001b30  0a 23 20 21 54 43 50 49  50 20 28 69 66 20 69 74  |.# !TCPIP (if it|
00001b40  27 73 20 6e 6f 74 20 61  6c 72 65 61 64 79 20 64  |'s not already d|
00001b50  65 61 64 21 29 2e 20 49  6e 66 6f 72 6d 20 74 68  |ead!). Inform th|
00001b60  65 20 75 73 65 72 20 6f  66 0a 23 20 61 20 73 75  |e user of.# a su|
00001b70  63 63 65 73 73 66 75 6c  20 66 69 6e 69 73 68 2e  |ccessful finish.|
00001b80  20 52 65 6c 65 61 73 65  20 74 68 65 20 73 65 72  | Release the ser|
00001b90  69 61 6c 20 64 65 76 69  63 65 2e 20 57 61 69 74  |ial device. Wait|
00001ba0  20 61 0a 23 20 63 6f 75  70 6c 65 20 6f 66 20 73  | a.# couple of s|
00001bb0  65 63 6f 6e 64 73 20 66  6f 72 20 52 49 53 43 20  |econds for RISC |
00001bc0  4f 53 20 74 6f 20 73 6f  72 74 20 69 74 73 20 6c  |OS to sort its l|
00001bd0  69 66 65 20 6f 75 74 2e  0a 23 20 43 6f 6d 70 75  |ife out..# Compu|
00001be0  74 65 20 61 20 6e 65 77  73 20 74 72 61 6e 73 66  |te a news transf|
00001bf0  65 72 20 72 61 74 65 20  28 69 66 20 61 6e 79 20  |er rate (if any |
00001c00  6e 65 77 73 20 61 72 72  69 76 65 64 29 2e 0a 23  |news arrived)..#|
00001c10  20 4f 70 74 69 6f 6e 61  6c 6c 79 20 73 74 61 72  | Optionally star|
00001c20  74 20 54 54 46 4e 20 61  6e 64 20 4e 65 77 73 62  |t TTFN and Newsb|
00001c30  61 73 65 20 28 73 65 65  20 6c 61 74 65 72 29 2e  |ase (see later).|
00001c40  20 54 72 69 6d 0a 23 20  74 68 65 20 44 65 6d 48  | Trim.# the DemH|
00001c50  69 73 74 20 66 69 6c 65  2c 20 61 6e 64 20 72 65  |ist file, and re|
00001c60  74 75 72 6e 2e 0a 23 23  23 23 23 23 23 23 23 23  |turn..##########|
00001c70  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00001ca0  23 23 0a 3a 68 61 6e 67  75 70 0a 0a 23 20 4b 69  |##.:hangup..# Ki|
00001cb0  6c 6c 20 21 54 43 50 49  50 0a 74 61 73 6b 20 2f  |ll !TCPIP.task /|
00001cc0  6b 69 6c 6c 3d 22 54 43  50 2f 49 50 22 0a 0a 23  |kill="TCP/IP"..#|
00001cd0  20 49 6e 66 6f 72 6d 20  74 68 65 20 75 73 65 72  | Inform the user|
00001ce0  0a 6d 65 73 73 61 67 65  20 22 43 61 6c 6c 20 66  |.message "Call f|
00001cf0  69 6e 69 73 68 65 64 20  73 75 63 63 65 73 73 66  |inished successf|
00001d00  75 6c 6c 79 22 20 2f 63  65 6e 74 72 65 0a 0a 23  |ully" /centre..#|
00001d10  20 52 65 6c 65 61 73 65  20 74 68 65 20 73 65 72  | Release the ser|
00001d20  69 61 6c 20 6c 69 6e 65  20 61 6e 64 20 6c 65 74  |ial line and let|
00001d30  20 52 49 53 43 20 4f 53  20 73 6f 72 74 20 69 74  | RISC OS sort it|
00001d40  73 65 6c 66 2e 0a 72 65  6c 65 61 73 65 0a 70 61  |self..release.pa|
00001d50  75 73 65 20 32 0a 0a 23  20 43 6f 6d 70 75 74 65  |use 2..# Compute|
00001d60  20 6e 65 77 73 20 72 61  74 65 20 28 69 66 20 61  | news rate (if a|
00001d70  6e 79 20 61 72 72 69 76  65 64 21 29 0a 73 65 74  |ny arrived!).set|
00001d80  20 6e 65 77 73 45 78 69  73 74 73 20 7b 3f 66 69  | newsExists {?fi|
00001d90  6c 65 20 3c 4d 61 69 6c  24 44 69 72 3e 2e 66 6f  |le <Mail$Dir>.fo|
00001da0  6c 64 65 72 2e 44 65 6d  4e 65 77 73 7d 0a 63 61  |lder.DemNews}.ca|
00001db0  73 65 20 25 6e 65 77 73  45 78 69 73 74 73 0a 77  |se %newsExists.w|
00001dc0  68 65 6e 20 31 20 32 20  33 3b 20 73 65 74 20 6e  |hen 1 2 3; set n|
00001dd0  72 61 74 65 20 7b 6e 65  77 73 72 61 74 65 20 44  |rate {newsrate D|
00001de0  65 6d 7d 3b 20 6d 65 73  73 61 67 65 20 22 6e 65  |em}; message "ne|
00001df0  77 73 20 72 61 74 65 20  25 6e 72 61 74 65 20 63  |ws rate %nrate c|
00001e00  70 73 22 20 2f 63 65 6e  74 72 65 0a 77 68 65 6e  |ps" /centre.when|
00001e10  20 30 3b 20 6d 65 73 73  61 67 65 20 22 6e 6f 20  | 0; message "no |
00001e20  6e 65 77 73 20 64 6f 77  6e 6c 6f 61 64 65 64 22  |news downloaded"|
00001e30  20 2f 63 65 6e 74 72 65  0a 65 6e 64 63 61 73 65  | /centre.endcase|
00001e40  0a 75 6e 73 65 74 20 6e  65 77 73 45 78 69 73 74  |.unset newsExist|
00001e50  73 0a 75 6e 73 65 74 20  6e 72 61 74 65 0a 0a 23  |s.unset nrate..#|
00001e60  20 4f 70 74 69 6f 6e 61  6c 6c 79 20 66 69 72 65  | Optionally fire|
00001e70  20 75 70 20 21 54 54 46  4e 20 61 6e 64 20 21 4e  | up !TTFN and !N|
00001e80  65 77 73 62 61 73 65 0a  23 20 4e 65 69 74 68 65  |ewsbase.# Neithe|
00001e90  72 20 61 72 65 20 73 74  61 72 74 65 64 20 69 66  |r are started if|
00001ea0  20 74 68 69 73 20 77 61  73 20 61 20 74 69 6d 65  | this was a time|
00001eb0  64 20 63 61 6c 6c 2e 0a  23 20 45 61 63 68 20 69  |d call..# Each i|
00001ec0  73 20 6f 6e 6c 79 20 73  74 61 72 74 65 64 20 6f  |s only started o|
00001ed0  6e 6c 79 20 69 66 20 69  74 20 69 73 20 6e 6f 74  |nly if it is not|
00001ee0  20 61 6c 72 65 61 64 79  20 72 75 6e 6e 69 6e 67  | already running|
00001ef0  2e 0a 69 66 20 28 21 3f  65 71 20 25 74 69 6d 65  |..if (!?eq %time|
00001f00  64 20 79 65 73 29 20 69  66 20 28 21 3f 74 61 73  |d yes) if (!?tas|
00001f10  6b 20 54 54 46 4e 29 20  74 61 73 6b 20 2f 6e 61  |k TTFN) task /na|
00001f20  6d 65 3d 22 54 54 46 4e  22 20 3c 54 54 46 4e 24  |me="TTFN" <TTFN$|
00001f30  44 69 72 3e 2e 21 52 75  6e 0a 69 66 20 28 21 3f  |Dir>.!Run.if (!?|
00001f40  65 71 20 25 74 69 6d 65  64 20 79 65 73 29 20 69  |eq %timed yes) i|
00001f50  66 20 28 21 3f 74 61 73  6b 20 4e 65 77 73 62 61  |f (!?task Newsba|
00001f60  73 65 29 20 74 61 73 6b  20 2f 6e 61 6d 65 3d 22  |se) task /name="|
00001f70  4e 65 77 73 62 61 73 65  22 20 3c 4e 65 77 73 42  |Newsbase" <NewsB|
00001f80  61 73 65 24 44 69 72 3e  2e 21 52 75 6e 0a 0a 23  |ase$Dir>.!Run..#|
00001f90  20 54 72 69 6d 20 74 68  65 20 44 65 6d 48 69 73  | Trim the DemHis|
00001fa0  74 20 66 69 6c 65 20 61  6e 64 20 72 65 74 75 72  |t file and retur|
00001fb0  6e 0a 63 61 6c 6c 20 74  72 69 6d 66 69 6c 65 20  |n.call trimfile |
00001fc0  3c 4e 4e 54 50 24 44 69  72 3e 2e 44 65 6d 48 69  |<NNTP$Dir>.DemHi|
00001fd0  73 74 0a 72 65 74 75 72  6e 20 31 0a 0a 23 23 23  |st.return 1..###|
00001fe0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00002010  23 23 23 23 23 23 23 23  23 0a 23 20 54 72 69 6d  |#########.# Trim|
00002020  20 61 20 66 69 6c 65 0a  23 0a 23 20 54 69 6d 65  | a file.#.# Time|
00002030  20 74 68 65 20 66 69 6c  65 20 69 6e 20 25 70 31  | the file in %p1|
00002040  20 62 79 20 63 68 65 63  6b 69 6e 67 20 69 66 20  | by checking if |
00002050  69 74 20 69 73 20 35 30  30 30 20 62 79 74 65 73  |it is 5000 bytes|
00002060  20 6f 72 0a 23 20 6c 6f  6e 67 65 72 2e 20 54 68  | or.# longer. Th|
00002070  69 73 20 69 73 20 61 63  68 69 65 76 65 64 20 62  |is is achieved b|
00002080  79 20 63 6f 70 79 69 6e  67 20 74 68 65 20 6c 61  |y copying the la|
00002090  73 74 20 32 30 30 20 6c  69 6e 65 73 0a 23 20 69  |st 200 lines.# i|
000020a0  6e 74 6f 20 61 20 74 65  6d 70 6f 72 61 72 79 20  |nto a temporary |
000020b0  66 69 6c 65 20 61 6e 64  20 74 68 65 6e 20 6d 6f  |file and then mo|
000020c0  76 69 6e 67 20 74 68 65  20 74 65 6d 6f 72 61 72  |ving the temorar|
000020d0  79 20 66 69 6c 65 0a 23  20 6f 76 65 72 20 74 68  |y file.# over th|
000020e0  65 20 6f 72 69 67 69 6e  61 6c 2e 0a 23 23 23 23  |e original..####|
000020f0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00002120  23 23 23 23 23 23 23 23  0a 3a 74 72 69 6d 66 69  |########.:trimfi|
00002130  6c 65 0a 69 66 20 28 3f  6c 74 20 7b 3f 66 69 6c  |le.if (?lt {?fil|
00002140  65 2f 73 69 7a 65 20 25  70 31 7d 20 35 30 30 30  |e/size %p1} 5000|
00002150  29 20 72 65 74 75 72 6e  0a 63 6f 70 79 2f 74 61  |) return.copy/ta|
00002160  69 6c 3d 32 30 30 20 25  70 31 20 25 70 31 2d 54  |il=200 %p1 %p1-T|
00002170  3b 64 65 6c 65 74 65 20  25 70 31 3b 6d 6f 76 65  |;delete %p1;move|
00002180  20 25 70 31 2d 54 20 25  70 31 0a 72 65 74 75 72  | %p1-T %p1.retur|
00002190  6e 20 31 0a 0a 23 23 23  23 23 23 23 23 23 23 23  |n 1..###########|
000021a0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
000021d0  23 0a 23 20 43 6f 6e 66  69 67 75 72 61 74 69 6f  |#.# Configuratio|
000021e0  6e 0a 23 0a 23 20 52 65  61 64 20 74 68 65 20 73  |n.#.# Read the s|
000021f0  79 73 74 65 6d 20 63 6f  6e 66 69 67 75 72 61 74  |ystem configurat|
00002200  69 6f 6e 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |ion information |
00002210  6f 72 20 63 61 6c 6c 20  73 65 74 75 70 0a 23 20  |or call setup.# |
00002220  69 66 20 61 20 63 6f 6e  66 69 67 20 66 69 6c 65  |if a config file|
00002230  20 64 6f 65 73 6e 27 74  20 65 78 69 73 74 0a 23  | doesn't exist.#|
00002240  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00002270  23 23 23 23 23 23 23 23  23 23 23 0a 3a 63 6f 6e  |###########.:con|
00002280  66 69 67 75 72 65 0a 73  65 74 20 66 69 6c 65 6e  |figure.set filen|
00002290  61 6d 65 20 7b 3f 66 69  6c 65 2f 65 78 70 61 6e  |ame {?file/expan|
000022a0  64 20 73 6c 69 70 64 69  61 6c 3a 64 65 6d 6f 6e  |d slipdial:demon|
000022b0  63 6f 6e 66 67 7d 0a 69  66 20 28 21 3f 66 69 6c  |confg}.if (!?fil|
000022c0  65 20 25 66 69 6c 65 6e  61 6d 65 29 20 63 61 6c  |e %filename) cal|
000022d0  6c 20 73 65 74 75 70 0a  6f 70 65 6e 2f 72 65 61  |l setup.open/rea|
000022e0  64 2f 69 64 3d 63 6f 6e  66 2f 65 72 72 6f 72 3d  |d/id=conf/error=|
000022f0  22 72 65 74 75 72 6e 22  20 25 66 69 6c 65 6e 61  |"return" %filena|
00002300  6d 65 0a 72 65 61 64 2f  69 64 3d 63 6f 6e 66 2f  |me.read/id=conf/|
00002310  65 6f 66 3d 22 67 6f 74  6f 20 63 6c 6f 73 65 63  |eof="goto closec|
00002320  6f 6e 66 22 20 77 70 6f  72 74 0a 72 65 61 64 2f  |onf" wport.read/|
00002330  69 64 3d 63 6f 6e 66 2f  65 6f 66 3d 22 67 6f 74  |id=conf/eof="got|
00002340  6f 20 63 6c 6f 73 65 63  6f 6e 66 22 20 70 72 74  |o closeconf" prt|
00002350  6e 75 6d 0a 72 65 61 64  2f 69 64 3d 63 6f 6e 66  |num.read/id=conf|
00002360  2f 65 6f 66 3d 22 67 6f  74 6f 20 63 6c 6f 73 65  |/eof="goto close|
00002370  63 6f 6e 66 22 20 73 70  65 65 64 0a 72 65 61 64  |conf" speed.read|
00002380  2f 69 64 3d 63 6f 6e 66  2f 65 6f 66 3d 22 67 6f  |/id=conf/eof="go|
00002390  74 6f 20 63 6c 6f 73 65  63 6f 6e 66 22 20 6e 6f  |to closeconf" no|
000023a0  64 65 6e 61 6d 65 0a 72  65 61 64 2f 69 64 3d 63  |dename.read/id=c|
000023b0  6f 6e 66 2f 65 6f 66 3d  22 67 6f 74 6f 20 63 6c  |onf/eof="goto cl|
000023c0  6f 73 65 63 6f 6e 66 22  20 70 61 73 73 77 6f 72  |oseconf" passwor|
000023d0  64 0a 72 65 61 64 2f 69  64 3d 63 6f 6e 66 2f 65  |d.read/id=conf/e|
000023e0  6f 66 3d 22 67 6f 74 6f  20 63 6c 6f 73 65 63 6f  |of="goto closeco|
000023f0  6e 66 22 20 6d 65 72 63  75 72 79 0a 3a 63 6c 6f  |nf" mercury.:clo|
00002400  73 65 63 6f 6e 66 0a 63  6c 6f 73 65 2f 69 64 3d  |seconf.close/id=|
00002410  63 6f 6e 66 0a 72 65 74  75 72 6e 0a 0a 23 23 23  |conf.return..###|
00002420  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00002450  23 23 23 23 23 23 23 23  23 0a 23 20 53 65 74 75  |#########.# Setu|
00002460  70 0a 23 0a 23 20 41 73  6b 20 74 68 65 20 75 73  |p.#.# Ask the us|
00002470  65 72 20 66 6f 72 20 76  61 72 69 6f 75 73 20 70  |er for various p|
00002480  61 72 61 6d 65 74 65 72  73 20 28 6e 6f 74 65 20  |arameters (note |
00002490  74 68 61 74 20 74 68 69  73 0a 23 20 73 63 72 69  |that this.# scri|
000024a0  70 74 20 64 6f 65 73 6e  27 74 20 75 73 65 20 74  |pt doesn't use t|
000024b0  68 65 20 6d 65 72 63 75  72 79 20 69 6e 66 6f 72  |he mercury infor|
000024c0  6d 61 74 69 6f 6e 0a 23  23 23 23 23 23 23 23 23  |mation.#########|
000024d0  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00002500  23 23 23 0a 3a 73 65 74  75 70 0a 69 6e 70 75 74  |###.:setup.input|
00002510  2f 70 72 6f 6d 70 74 3d  22 45 6e 74 65 72 20 53  |/prompt="Enter S|
00002520  65 72 69 61 6c 20 42 6c  6f 63 6b 20 44 72 69 76  |erial Block Driv|
00002530  65 72 20 4e 61 6d 65 22  20 77 70 6f 72 74 0a 69  |er Name" wport.i|
00002540  6e 70 75 74 2f 70 72 6f  6d 70 74 3d 22 45 6e 74  |nput/prompt="Ent|
00002550  65 72 20 53 65 72 69 61  6c 20 50 6f 72 74 20 4e  |er Serial Port N|
00002560  75 6d 62 65 72 20 28 69  66 20 72 65 6c 65 76 61  |umber (if releva|
00002570  6e 74 29 22 20 70 72 74  6e 75 6d 0a 69 6e 70 75  |nt)" prtnum.inpu|
00002580  74 2f 70 72 6f 6d 70 74  3d 22 45 6e 74 65 72 20  |t/prompt="Enter |
00002590  59 6f 75 72 20 4d 6f 64  65 6d 2d 3e 43 6f 6d 70  |Your Modem->Comp|
000025a0  75 74 65 72 20 53 70 65  65 64 20 28 62 70 73 29  |uter Speed (bps)|
000025b0  3a 22 20 73 70 65 65 64  0a 69 6e 70 75 74 2f 70  |:" speed.input/p|
000025c0  72 6f 6d 70 74 3d 22 45  6e 74 65 72 20 59 6f 75  |rompt="Enter You|
000025d0  72 20 44 65 6d 6f 6e 20  4e 6f 64 65 6e 61 6d 65  |r Demon Nodename|
000025e0  3a 22 20 6e 6f 64 65 6e  61 6d 65 0a 69 6e 70 75  |:" nodename.inpu|
000025f0  74 2f 70 72 6f 6d 70 74  3d 22 45 6e 74 65 72 20  |t/prompt="Enter |
00002600  59 6f 75 72 20 50 61 73  73 77 6f 72 64 3a 22 20  |Your Password:" |
00002610  70 61 73 73 77 6f 72 64  0a 69 6e 70 75 74 2f 70  |password.input/p|
00002620  72 6f 6d 70 74 3d 22 45  6e 74 65 72 20 59 6f 75  |rompt="Enter You|
00002630  72 20 4d 65 72 63 75 72  79 20 50 49 4e 3a 22 20  |r Mercury PIN:" |
00002640  6d 65 72 63 75 72 79 0a  6f 70 65 6e 2f 69 64 3d  |mercury.open/id=|
00002650  63 6f 6e 66 2f 77 72 69  74 65 20 25 66 69 6c 65  |conf/write %file|
00002660  6e 61 6d 65 0a 77 72 69  74 65 2f 69 64 3d 63 6f  |name.write/id=co|
00002670  6e 66 20 25 77 70 6f 72  74 0a 77 72 69 74 65 2f  |nf %wport.write/|
00002680  69 64 3d 63 6f 6e 66 20  25 70 72 74 6e 75 6d 0a  |id=conf %prtnum.|
00002690  77 72 69 74 65 2f 69 64  3d 63 6f 6e 66 20 25 73  |write/id=conf %s|
000026a0  70 65 65 64 0a 77 72 69  74 65 2f 69 64 3d 63 6f  |peed.write/id=co|
000026b0  6e 66 20 25 6e 6f 64 65  6e 61 6d 65 0a 77 72 69  |nf %nodename.wri|
000026c0  74 65 2f 69 64 3d 63 6f  6e 66 20 25 70 61 73 73  |te/id=conf %pass|
000026d0  77 6f 72 64 0a 77 72 69  74 65 2f 69 64 3d 63 6f  |word.write/id=co|
000026e0  6e 66 20 25 6d 65 72 63  75 72 79 0a 63 6c 6f 73  |nf %mercury.clos|
000026f0  65 2f 69 64 3d 63 6f 6e  66 0a 72 65 74 75 72 6e  |e/id=conf.return|
00002700  20 31 0a 0a 23 23 23 23  23 23 23 23 23 23 23 23  | 1..############|
00002710  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00002740  0a 23 20 4d 61 6b 65 20  6d 65 6e 75 73 0a 23 23  |.# Make menus.##|
00002750  23 23 23 23 23 23 23 23  23 23 23 23 23 23 23 23  |################|
*
00002780  23 23 23 23 23 23 23 23  23 23 0a 3a 6d 61 6b 65  |##########.:make|
00002790  6d 65 6e 75 73 0a 6d 65  6e 75 20 22 4d 61 69 6c  |menus.menu "Mail|
000027a0  3a 63 61 6c 6c 20 64 6f  6d 61 69 6c 22 20 22 4e  |:call domail" "N|
000027b0  65 77 73 3a 63 61 6c 6c  20 64 6f 6e 65 77 73 22  |ews:call donews"|
000027c0  20 22 42 6f 74 68 3a 63  61 6c 6c 20 64 6f 62 6f  | "Both:call dobo|
000027d0  74 68 22 20 22 49 6e 74  65 72 61 63 74 69 76 65  |th" "Interactive|
000027e0  3a 63 61 6c 6c 20 69 6e  74 65 72 61 63 74 22 20  |:call interact" |
000027f0  22 51 75 69 74 3a 71 75  69 74 22 0a 72 65 74 75  |"Quit:quit".retu|
00002800  72 6e 20 31 0a                                    |rn 1.|
00002805