Version 1.6 Commands:						7-May-84


com		-- switch to communications mode

cb		-- switch to communications mode, with windowing to make
		   usage in CB pleasant.  (Note you must be in half duplex
		   mode to use this effectively).

exit		-- return to DOS

set		-- Manipulate function key assignments
		   set			-- list the current assignments
		   set key string	-- make an assignment.  E.g.:
						set f1 "ls"
		   Note that function keys are called f1 ... f10, shifted
		   are called s1 ... s10, alted a1 ... a10.

stty		-- set terminal parameters:
		   stty <nn>	-- run at <nn> baud (e.g., 300, 1200, etc.)
		   stty 80	-- Switch to 80 column B&W
		   stty 40	-- Switch to 40 column B&W
		   stty w       -- accept VIDTEX switch to wide character
		   stty -w      -- screw that, I didn't buy this computer
		   		   to make it look like an apple
		   stty v	-- Treat ESC I as a vidtex poll sequence even
				   when the idiots forgot to sen the SI first
		   stty -v	-- Do as a VT52 with a ESC I unless in protcol
				   mode (idiotic people at CIS...mutter curse)
		   stty f	-- doesn't work yet
		   stty -f	-- I told you so.
		   stty echo	-- Remote echo
		   stty -echo	-- Local echo
		   stty 7       -- "and" all incoming characters with 0x7F
		   stty 8	-- Allow 8 bit (graphics) characters
		   stty 1	-- Use only screen 0 (monochrome/Tandy 2000)
		   stty 4	-- Use all 4 screens (IBM/CGA)


cat		-- aka type to non-UNIX fans:
		   cat <file>	-- print out the contents of <file>

switch <n>	-- switch to screen <n>

clear		-- clear the screen

cap		-- menu based capture buffer control

xmodem		-- Perform an XMODEM style file transfer
		   xmodem -rt <file>	-- receive a text file into <file>
		   xmodem -rb <file>    -- receive a binary file into <file>
		   xmodem -s  <file>	-- transmit a file named <file>

sendf		-- send a file, no error checking protocol
		   sendf <file>		-- sends the file without linefeeds
		   sendf -l <file>	-- sends linefeeds and all

ls <drive>	-- shows the files on [optionally] specified drive
more <file>	-- similar to type, but pauses every so often so you don't
		   feel like it's a speed reading course.  <space> gets
		   you one more line, <return> another screen full.

dial		-- Do funny things to the phone:
		   dial			-- prints a list of known #s
		   dial <name>		-- place a local call to <name>
		   dial <name> <car>	-- place a long distance call to
					   computer <name> using the long
					   distance service <car>
ap   <file1> <file2>	-- append file1 to file2
apl  <file>  <text>	-- Appends the line of <text> to the end of <file>
cp   <file1> <file2>	-- copies file1 to file2
grep <pat>   <file>	-- Print all lines in file <file> with <pat> in them
mv   <file1> <file2>	-- Renames file1 to file2
rm   <files>		-- Deletes the specified files.  rm will happily get
			   rid of everything if you rm *.* <caveat>
sleep <time>		-- sleep <time> seconds.  Used primarily for waiting
			   for the Hayes to let you talk to the world after
			   it says "CONNECT".
send "<message>"	-- transmits <message> to the modem (or whomever is
			   listening to the modem, eg., CIS).  Note that
			   "\m" is control-m, "\c" is control-c, ... etc.
wait			-- waits one of several patterns to appear in the
			   stream of data from the modem.
open			-- opens the capture buffer
close			-- closes the capture buffer
write <file>		-- appends the contents of the capture buffer to the
			   end of the specified file.
echo <text>		-- prints <text> out on the screen

misfort			-- Used to generate and transmit "fortunes"
			   (details TK)

wc <file>		-- compute number of chars, words, and lines in <file>

read <var>		-- reads one line of text from terminal into variable

pwd			-- prints the current directory (DOS 2.0)

cd <path>		-- change directory (use of "/" instead of "\" is OK)
pattern			-- Define the patterns being watched for in the
			   stream of text from the modem:

		pattern reset		-- reset all patterns to inactive
		pattern reset n		-- resets pattern n (0..9) to inactive
		pattern n "pattern"	-- defines pattern n to match contents
					   of quotes  Note that \m is etc.

if		-- Conditional branch:

		   if match n <label>	-- if the wait terminated because
					   pattern n was seen, goto <label>
		   if !match n <label>	-- if ... any but pattern n ...

		   if same <a> <b> <label>	-- If a==b, goto label
		   if !same <a> <b> <label>	-- if a!=b, goto label

		   if !fexist <file> <label>	-- if <file> doesn't exist...

goto <label>	-- Unconditional branch

: <label>	-- Branch target.  Must have *exatcly* one space between colon
		   and <label>.  Also useful for comments.

<name>		-- Invokes a "script" of commands.  If there is a file called
		   <name>.csh, it will be used for commands.  Nesting up to
		   five levels permited.

Multiple commands on the same line can be given by seperating them with a
semi-colon, e.g.:
	send "AT\m" ; wait "OK" ; sleep 1 ; send "ATDT7582090\m" ; com

Communications mode commands:  (initial settings):

F1	-- prints help file which isn't writen yet.
F2	-- invokes the "sendf" command with prompts.
F3	-- same as "cap" command.
F4	-- clear the screen
F9	-- send "\o\m"
F10	-- accepts one command from keyboard, executes it, returns to
	   com.  Note that the command can be a script, or even, gasp,
	   "com", which would leave you running the communications package
	   under the command interpreter which is running under the
	   communications package which is ultimately under the command
	   interpreter ..... doing this sort of thing too deeply could
	   leave you back in DOS with a terse message "NO CORE"...

SHIFT-F1	-- Exit back to command mode

ALT-F1		-- switch 0
ALT-F2		-- switch 1
ALT-F3		-- switch 2
ALT-F4		-- switch 3




An example phone.num (which is where phone numbers reside):


	cis0:7584114:300:CompuServe 300 baud only
	cis1:7582090:1200,300:CompuServe 1200/300
	pcbbsnyc:541-5975:1200,300:PC BBS in NYC


An example "carrier" file (att.) (two lines):

	1-
	,


An example "carrier" file (mci.) (two lines also):

	6354192,,,,ddddd-
	,


(Note that "ddddd" is the MCI access code).

An example login.csh file:


	pattern reset
	pattern 1 CONNECT
	pattern 2 CARRIER ; :		As in "NO CARRIER"
	echo Dialing CIS now...
	send ATDT7582090\m
	wait
	if match 1 connect
	echo Trying alternate number...
	send ATDT7584114\m
	wait
	if match 1 connect
	echo Failure!
	goto end
	: connect
	echo Connection made..
	pattern reset
	pattern 1 ":"
	sleep 1
	send \c
	wait
	send 76703,373\m ; : My ppn .. probably best to change to yours!
	wait
	send "this isn't my password\m"
	: end



Here's a script (progra.csh) to run through The programmer's SIG and
read all new messages.


	pattern reset
	pattern 0 unction:
	open
	send "go pcs158\m"
	wait
	pattern 0 "RE T)"
	pattern 1 unction:
	send rn\m
	: loop
	wait
	if match 1 end
	send \m
	goto loop
	: end
	close
	write b:progra.tmp



Here's the script I use to visit the IBM SIG (ibmsig.csh) to come in,
catch *my* messages, do a qsn, and then set the high message counter:


	pattern reset
	pattern 0 unction:
	open
	send "go pcs131\m"
	wait
	pattern 0 "(C RE T)"
	pattern 1 unction:
	send rm\m
	: loop
	wait
	if match 1 qsn
	send \m
	goto loop
	: qsn
	pattern reset
	pattern 0 unction:
	send qsn\m
	wait
	pattern 1 "(C RE T)"
	send "rr;n\m"
	wait
	close
	write b:ibmsig.tmp
	send t\m


Here's a script that maintains and accesses a "database" of people's names
and PPNS (This is called "who.csh", and maintains the database "who.dat".
To add a ppn, give the command "who -add", otherwise, say "who <pattern>"
to receive a list of all names/ppns with <pattern> in them.):

	if !same $$ 2 usage
	if !fexist who.dat nodata
	if same $1 -add addname
	grep $1 who.dat
	goto end
	: usage
	echo "usage: who <ppn> | <name> | -add"
	goto end
	: nodata
	echo "no file who.dat to search"
	goto end
	: addname
	echo -n "PPN to add:"
	read 1
	echo -n "Name to add:"
	read 2
	apl who.dat $1 "\i" $2
	goto end
	: end


[end]
ame
	echo -n "PPN to add:"
	read 1
