[net.sources] recent YAM user's manual

kfl (05/05/83)

			YAM (Yet Another Modem program)
			       by Chuck	Forsberg
			 ******** Highlights ********

	    Conversational mode	with optional capture to  file	and
	    multiple  page  review of past output.  File capture of
	    long files works with any system which responds to XOFF
	    within 400 characters.

	    Flexible uploading of suitable files to many  types	 of
	    remote  systems,  even  Bulletin  Boards without normal
	    uploading capability.

	    Error checking file	exchange with programs	using  Ward
	    Christensen's  protocol with optional Cyclic Redundancy
	    Check.  Enhanced  error  recovery  and  transfer  abort
	    logic.

	    Batch transmission of files	with compatible	programs.

	    High speed	operation;  9600  baud	file  transfer	and
	    conversational  terminal  operation,  buffered  printer
	    operation  at  >>1200  baud.   Full	 printer  buffering
	    allows  use	 of  slow  printers, or	printers with burst
	    transfers (line printer,  MX80,  etc.).   Function	key
	    escape  sequences  can  be	buffered,  wllowing  proper
	    operation when keyboard  baudrate  exceeds	modem  baud
	    rate.

	    Disk utility  functions  including	directory  listing,
	    change  disk and/or	user number, erase files, disk free
	    space calculation, file transfer time calculation, CRCK
	    file   check,   and	 local	listing	 of  files.   Great
	    flexibility	in specifying filenames.  New data  may	 be
	    appended  to existing ASCII	files.	Optionally, YAM	can
	    maintain log of files sent and/or received	with  disk,
	    filename, baud rate, and the name of the remote system.

	    Able to send files to TWX type machines.

	    Matching program (XYAM) for	use by	remote	systems	 as
	    XMODEM  replacement	 obtained  from	 same source files,
	    allows batch transfer of files with	full CRC  checking.
	    Matching  programs	(sb.c  and  rb.c) are available	for
	    Version 7 and System III Unix(tm).

	    Written in a modern	high level systems language (  C  )
	    for	ease of	portability and	maintenance.






       Manual Revised 01-04-83				     Page 1







       YAM/XYAM	3.44 Manual				     Page 2



			******** Rosetta Stone ********

       CAPTURE
	    When in the	T(term)	function, ALL data coming from	the
	    remote is captured in a circular buffer.

       DUMPING
	    When a receive file	 is  open  as  a  result  of  a	 "t
	    filename"  command,	 and  the circular buffer is nearly
	    full, that data is written out to the receive  file	 if
	    Dumping  is	on.  Setting Squelch mode (see below) turns
	    Dumping off	until a	^R character is	encountered.

       FUNCTION
	    An operation supported by yam, such	as DIR,	TYPE, S, R,
	    or	T(term).   A  command  may  set	or reset a MODE, or
	    perform 0 or more FUNCTIONS.

       IFF
	    If and only	if.

       MODE
	    Many modes affect the way  the  term  function  handles
	    data.

       OPTION
	    Option(s) apply to the S and R commands only.

       PREFIX
	    A letter that prefixes a command to	modify its action.

       TWX
	    Teletypewriter  Exchange  (Teletype	  Copr.	  TM).	  A
	    protocol  (of  sorts) used to send files (usually paper
	    tape) between Teletype machines.

       {}
	    Required argument.

       []
	    Optional argument.

       pattern ...
	    An empty pattern represents	all files  on  the  default
	    disk  with	the current user number.  A disk identifier
	    without filename represents	all files on that disk with
	    the	 current  user	number.	  Unambiguous and ambiguous
	    filenames may  be  specified  in  any  combination.	  A
	    pattern may	contain	any combination	of the above.





       Manual Revised 01-04-83				     Page 2







       YAM/XYAM	3.44 Manual				     Page 3



		    ******** Prefixes and Commands ********


       -{mode[s]}
	    Enable mode(s)  affecting  file  transmission/reception
	    with   the	term  function.	  (The "s" and "r" commands
	    always send	data transparently.)

       a:
	    Change to a: disk (or b, etc.) CP/M	versions print	the
	    free disk space in kilobytes.

       a1:
	    Change to a: disk user 1 WARNING: Do  NOT  change  user
	    number  when  file(s)  are open; CP/M 2.2 gets terribly
	    confused.  CP/M versions print the free disk  space	 in
	    kilobytes.

       a
	    Archive  prefix.   When  used  with	 any  command  that
	    accepts  wildcards,	 causes	 files with the	F3 ("Tag3")
	    bit	set to be excluded.  When used with the	s  or  dirr
	    commands, causes the F3 bit	to be set after	successfull
	    completion of operations on	each file.   This  facility
	    may	 be  used  to selectively transmit only	those files
	    that have been changed  since  the	last  transmission.
	    The	 user  should  verify that the F3 bit is reset when
	    files are  changed	by  particular	programs  (such	 as
	    Mince).

       bm
	    Set	baudrate to m. Example:	 "b19200"  NOTE:  some	212
	    type  modems  work	better	if  the	baud rate is set to
	    slightly less than 1200 baud; e.g.,	1180 baud.

       bye
	    Dump  any  call  in	 progress  by  dropping	 DTR  (data
	    terminal  ready).	A  call	or b (set baudrate) command
	    must  be  given  to	 reassert  DTR	before	making	 or
	    answering another data call.

       call name
	    Searches the PHONES	file for name.	If  the	 search	 is
	    successful,	 enable	 Data Terminal Ready (DTR), and	set
	    baudrate to	the value  (if	present)  corresponding	 to
	    name.   NOTE:  some	 212 type modems work better if	the
	    baud rate is set to	slightly less than 1200	baud; e.g.,
	    1180   baud.    If	autodial  is  supported,  dial	the
	    telephone number.  The specifics of	autodial  operation
	    may	 vary  with the	implementation.	 If autodial is	not
	    supported, the telephone number is	displayed.   It	 is



       Manual Revised 01-04-83				     Page 3







       YAM/XYAM	3.44 Manual				     Page 4



	    not	 necessary to type the entire name as it appears in
	    the	file, as YAM will find the first entry that matches
	    name.  Example: "call tcbbs" or "call tc"

       chat
	    Chat keyboard to keyboard.	Characters typed by  either
	    keyboard  are  echoed to both ends,	and RETURNS echo as
	    RETURN/LINEFEED.  Chat will	become hostile if the other
	    end	also echoes characters.

       close
	    Dump capture buffer	if a receive file  is  open,  close
	    files.

       crck [pattern ...]
	    Perform the	"crck" function	 on  the  specified  files.
	    The	  "crck"  algorithm  is	 stolen	 from  version	4.3
	    CRCK.ASM.

       dir [pattern ...]
	    Display pathnames matching pattern alphabetized  across
	    the	 page.	 The  usual ambiguous filenames	are allowed
	    under CP/M provided	a correct version  of  setfcb()	 is
	    used.   Since  dir or any other commands which accept a
	    pattern use	the circular buffer for	filename expansion,
	    be sure to write out any captured data first!  Example:
	    "dir" "dir *.c" "dir yam*.c" "dir *.c *.h"

       dirr [pattern ...]
	    Displays the directory with	the number  of	sectors	 in
	    each  file.	  The  number  of  files matched, number of
	    blocks, number of kb  allocated  to	 those	files,	and
	    estimated transmission time	at the current baudrate	for
	    all	files  listed  are  displayed.	 Transmission  time
	    estimate is	based on batch transmission from a Z89 with
	    700kb Tandon drives	to a Cromemco 4mHz 4fdc	system with
	    Persci 277 drive.  Time includes file i/o but not error
	    correction.

       d{mode[s]}
	    Disable  mode(s)   affecting   file	  transmission	 or
	    reception  with  the  term	function.  (The	"s" and	"r"
	    commands always send data transparently.)

       erase pattern ...
	    Erase the named files.  For	each matched pathname,	the
	    user  is prompted for Y, N,	or Q.  Y erases	the file, N
	    skips to the next file, and	Q or anything  else  aborts
	    the	 command.  The number of free blocks on	the default
	    disk is displayed.




       Manual Revised 01-04-83				     Page 4







       YAM/XYAM	3.44 Manual				     Page 5



       e{mode[s]}
	    Enable mode(s)  affecting  file  transmission/reception
	    with   the	term  function.	  (The "s" and "r" commands
	    always send	data transparently.)

       flip {ans,org}
	    Flip the  local  modem  between  answer  and  originate
	    modes.   This  command is not supported by all versions
	    of YAM.  See FLIP.

       f[mode[s]] name
	    Send file 'name' in	the term  function.   The  optional
	    mode  enables  one	or  modes.   If	squelch	is enabled,
	    preface with ^R and	append	with  ^T.   If	Q  mode	 is
	    enabled,  name  is	opened,	sending	is stopped, and	YAM
	    remains in command mode.  See also type/list command.

       help
	    Displays a command summary.	 This  command	closes	any
	    open send file.

       initialize
	    Initializes	yam to all its default	values.	  Does	not
	    reset the disk system (see "reset").

       kill
	    Kill all data in  the  capture  buffer.   Restores	the
	    pointers to	their initial positions.

       link
	    Link two ports.  Assuming correct  port  settings  (see
	    yam3.c), characters	from the MODEM port are	sent to	the
	    port  selected  with  the  Mport  command.	 Characters
	    received  from  the	 port  selected	are buffered in	the
	    circular buffer and	transmitted to the MODEM.  Keyboard
	    characters	are  sent  to  the slected port.  Operation
	    assumes that MODEM port is the slower of the two.  Exit
	    from this term - like mode is with kbd control E.

       list pattern [...]
	    List the file(s) specified	by  one	 or  more  possibly
	    ambiguous  pattern(s).   This  command  closes any open
	    send file.	Yam or Xyam compiled with USQ defined  will
	    automatically  detect  squeezed files and print them in
	    ASCII.    List   stops/resumes   printing	with	^S.
	    Keyboarding	 ^X  cancels, and ^K skips to the next file
	    (it	might take a few whacks	of the keyboard	to get	YAM
	    to	hear  it.)  XYAM  prefaces  each  file	with ^R	and
	    suffixes it	with ^T.  The standard putchar()  is  used,
	    so	tabs and newlines are expanded.	 The printer can be
	    enabled with ^P on the command line.  Because tabs	are



       Manual Revised 01-04-83				     Page 5







       YAM/XYAM	3.44 Manual				     Page 6



	    expanded,  files  containing  tabs	will  get larger if
	    downloaded with the	list command; if you can't use	the
	    s  command,	 at  least  use	 type.	 Likewise,  because
	    newlines are expanded to cr/lf, there will	usually	 be
	    two	carriage returns per line.

       mn
	    Change modem data port to (decimal)	n.  Example: "m224"

       o
	    Disable the	modem by turning off DTR.

       off
	    Disable modem and return to	operating system.

       pxm
	    Set	Parameter x to value m.

       reset [size]
	    Dump the capture buffer; if	a file is open,	 close	all
	    files,  and	 reset	CP/M's	disk  system.	This allows
	    swapping diskettes.	 The optional argument size becomes
	    the	 size  of  the	circular capture buffer, useful	for
	    debugging.

       replot [m]
	    Redisplay the last m lines received	from the modem.	 If
	    m  is 0 or absent, redisplay starting with the earliest
	    data.   A  screenful  is  displayed	 at  a	time.	The
	    commands accepted in replot	mode are listed	below.

       rewind
	    Rewind the buffer pointers for  the	 display,  printer,
	    and	 file  dump  from the term function.  The effect of
	    this command is the	same as	if the data had	 been  sent
	    another time.

       r[options] [file	...]
	    Receive with options 1 or more  files  using  the  Ward
	    Christensen	 protocol.   If	no filename is given, batch
	    mode is assumed.  (Note: batch mode	is  not	 compatible
	    with  MODEM7.)  If	more  than one filename	is given, a
	    single file	transfer will be made  for  each.   If	the
	    RESTRICTED	option is defined, a file received in error
	    will be unlinked (erased).

       s
	    Displays status information.

       s[options] pattern ...
	    If batch mode is specified with the	b option, 0 or more



       Manual Revised 01-04-83				     Page 6







       YAM/XYAM	3.44 Manual				     Page 7



	    files  are sent according to the ambiguous pathname(s).
	    If batch mode is not specified, the	 named	unambiguous
	    file(s) are	sent each in single file mode.

       type pattern [...]
	    Type the file(s) specified	by  one	 or  more  possibly
	    ambiguous  pattern(s).   This  command  closes any open
	    send file.	Yam or Xyam compiled with USQ defined  will
	    automatically  detect  squeezed files and print them in
	    ASCII.    Type   stops/resumes   printing	with	^S.
	    Keyboarding	 ^X cancels, and ^K skips to the next file.
	    XYAM prefaces each file with ^R and	 suffixes  it  with
	    ^T.	 Direct	console	output (bios(4,	...) is	used.

       t[c][mode] [file]
	    The	term function with optional capture to file.  0	 or
	    more modes may be enabled.	The c (close) option causes
	    data in the	capture	buffer to  be  written	and  closed
	    immediately.   View	 mode  causes  the term	function to
	    display  control  characters  by  prefixing	 ^  to	the
	    corresponding letter.  A receive file previously opened
	    by 't file'	will not be closed by 't'.

	    Keyboarded characters are treated in either	of two ways
	    depending  on  the	value  of Exitchar (see	parameters,
	    below).  If	Exitchar is non	zero, term will	return when
	    a  character  matching  Exitchar is	keyboarded, and	all
	    others  are	 passed	  without   any	  special   action.
	    Otherwise, the following subcommands are available:
	    ^@	   Break. Sends	a break	signal to the remote.	The
		 break	key on your terminal will probably generate
		 a ^@ (NULL) character.	 After the break  is  sent,
		 any remaining keyboard	input (usually garbage from
		 a break character) is discarded.

	    ^E	   Exits  from	the  term  function  back  to  main
		 command  level.   Rapidly typing ^E^E will instead
		 cause one ^E to be transmitted.

	    ^F	   Iff Q mode is in effect, transmit ANSWERBACK	 to
		 the  remote.	This  is  equivalent to	HEREIS on a
		 Teletype machine.

	    ^Q	   Iff a send file is open and its transmission	has
		 been  stopped	by a XOFF, transmission	is resumed.
		 Otherwise no special treatment.

	    ^S	   Iff	a  send	 file  is  open	 and  it  is  being
		 transmitted,  transmission  is	stopped.  Otherwise
		 no special treatment.




       Manual Revised 01-04-83				     Page 7







       YAM/XYAM	3.44 Manual				     Page 8



	    ^V	   Replots up to 24 lines starting with	either	the
		 first	character received after the last character
		 keyboarded, or	about 48 lines back  if	 less  than
		 400  characters  have been received since the last
		 character sent.  This allows the output  from	the
		 last  command to be conveniently reviewed.  Replot
		 then awaits next replot command (see below).  ^V^V
		 typed quickly sends one ^V instead.

	    The	following received characters are recognized in	the
	    term  function, when they are fetched from the circular
	    buffer for the display.

	    ^E	 Iff Q mode is in effect,  transmit  ANSWERBACK	 to
		 the remote.

	    SO If Cis02	mode is	in effect, turns on the	 Compuserve
		 A protocol.  This protocol is used with the XFTRAN
		 program and the DOW command  of  SIG/ACCESS.	See
		 yam4.c	  and  Compuserve's  CP-MIG  user group	for
		 more information.

	    XOFF Stops file transmission from yam.

	    XON	 Resumes file transmission.

	    TAB	 Tab characters	 are  expanded	to  spaces  on	the
		 display.   BUG:  Since	 YAM does not decode cursor
		 addressing commands, these commands should not	 be
		 intermixed with tabs on the same line.


       w
	    Write dumps	the circular buffer to the receive file, if
	    open.

       x
	    eXit to CP/M.  Dumps and closes any	open files.  If	YAM
	    has	 been  "nobooted", this	command	will avoid the CP/M
	    warm boot.	Any letters after x will cause the  command
	    to be ignored, so users may	keyboard "xyam s file" from
	    XYAM command prompt	without	untoward results.

       ;
	    Semicolon is an optional command delimiter which may be
	    used  in  place  or	 RETURN	 in order to place multiple
	    commands on	a line.	 Since commands	such as	"t" have an
	    indefinite	number	of  operands, the semicolon must be
	    used  to  string  commands	together.    Example:	"sb
	    *.c;off"   batch   transmits   all	 *.c   files,  then
	    disconnects.  Unfortunately, CP/M's	CCP clobbers ;	and



       Manual Revised 01-04-83				     Page 8







       YAM/XYAM	3.44 Manual				     Page 9



	    everything	 past  it  in  the  command  line,  so	use
	    backslash instead.

       \
	    An alternate to ; for CP/M systems.

       NATHAN
	    The	NATHAN command	sends  the  rest  of  the  physical
	    command  line to the modem,	starting with the very next
	    character.	This command works with	SUBMIT and XSUB	(if
	    lowercase  isn't  needed).	Normally a cr/lf is sent as
	    the	end of each  line,  but	 this  may  be	changed	 by
	    relevant mode(s).









































       Manual Revised 01-04-83				     Page 9







       YAM/XYAM	3.44 Manual				    Page 10



	    ******** MODES used	with D,	E, F, T	or U commands ********

       !
	    Negates the	sense of the following mode.  For  example,
	    t!l	will turn off the line printer.

       2
	    "2"	causes formfeed	from the remote	to clear the screen
	    (CLEARS  string  defined  in  bdscio.h).   Also enables
	    Compuserve A protocol if this feature is included.

       a
	    A return from the keyboard is sent as return, linefeed.
	    If half duplex, both are sent to the console.

       b
	    Binary mode	of TRANSMISSION	with  T	 function.   All  8
	    bits  are  sent.  Handy for	downloading binary files to
	    adjacent machines without  any  modem  program.   Don't
	    confuse  this  with	 the  S	 function  which  uses	the
	    Christensen	protocol.  Also	don't confuse with  i  mode
	    which affects files	received with the T function.

       d
	    Directly enables/disables dumping of captured  text	 is
	    squelch  mode  is in effect.  If squelch mode is not in
	    effect, always enables dumping.

       e
	    With term command, echo characters	received  from	the
	    modem  to  the  modem.   Use  this only for	keyboard to
	    keyboard communication,  and  then	only  at  one  end.
	    Reset   after  each	 command.   Does  not  imply  "Half
	    Duplex".

	    With  the  f  command,  selects   an   alternate   file
	    transmission  function  sendecho()	which  waits for an
	    echo to each  character  transmitted  (for	Throttle/10
	    seconds).	The  echoed character is output	to console.
	    See	"propagating yam" below.  Often	it is  fairly  easy
	    to	write  a  simple receive routine which synchronizes
	    with the sender by the simple expedient of echoing	the
	    characters	received.  On Heath/Zenith CP/M	system,	the
	    pip	device "TTY:" does just	that.

       f
	    Full duplex.

       g
	    Resumes (GO) sending file once in  the  term  function,
	    equivalent	to  XON.  Disabling GO causes a	file queued



       Manual Revised 01-04-83				    Page 10







       YAM/XYAM	3.44 Manual				    Page 11



	    for	transmission to	wait for an XON	character.

       h
	    Half Duplex.  Displays keyboarded  characters  as  they
	    are	sent to	the modem.

       i
	    Image transparent data  dumping,  all  8  bits  of	all
	    characters	received,  including NULLS.  This overrides
	    the	t and/or z modes.

       l
	    List  unit	(Printer)  on.	 Since	 the   printer	 is
	    separately	buffered,  it  needn't	be  as	fast as	the
	    incoming data as long as the difference doesn't  exceed
	    the	buffer size.  The rewind command may be	used to	get
	    extra copies of the	received data.

       n
	    Called nlmode, after the corresponding tty mode in Unix
	    systems.  Send NEWLINE (lf)	only when transmitting file
	    (no	 CR).	Send  keyboarded  CR  as   NEWLINE.    When
	    receiving  a  file	to  disk  with	the  term function,
	    NEWLINE is stored on disk  as  \r  \n.   This  mode	 is
	    useful  when  communicating	 with  a Unix system.  When
	    uploading files using  cat(1),  nlmode  avoids  sending
	    extra blank	lines.

       o
	    Onetrip.  Exit back	to CP/M	before the next	prompt.

       p
	    Send CR only at end	 of  line,  and	 then  pause  until
	    echoes  from  remote  have stopped.	 Useful	for sending
	    files to bulletin boards where the remote needs time to
	    prepare for	the next text line.

       r
	    Called crmode.  Sends  CR  only  at	 the  end  of  each
	    transmitted	line.

       s
	    Squelch the	 dumping  of  captured	data  with  ^T	and
	    unsquelch  with ^R.	 These characters are not copied to
	    the	file.  When a receive file is opened  with  Squelch
	    mode  is  selected,	 writing to the	file is	turned off.
	    Selecting squelch mode automatically turns writing off;
	    disabling  squelch automatically turns it on.  (See	"d"
	    above).

       t



       Manual Revised 01-04-83				    Page 11







       YAM/XYAM	3.44 Manual				    Page 12



	    If Waitnum is more than 1,	wait  for  echoes  to  stop
	    after sending each Waitnum characters for period Pause.
	    If Waitnum==1, send	at 1/Throttle, measured	in loops of
	    the	term() function.  The default values of	Waitnum	and
	    Throttle provide transmission at  about  50	 words	per
	    minute  regardless of baud rate.  This is handy because
	    many remote	systems	cannot accept input at full speed.

       v
	    View control characters as ^C.  Useful in  shutting	 up
	    the	  bloody   bell.   In  addition	 to  the  above,  v
	    distinguishes characters with the  parity  bit  set	 by
	    prepending	a  tilde  (~).	Note: View mode	is distinct
	    from view  option.	 This  mode  is	 reset	after  each
	    command.

       w
	    Wait to receive GOchar after sending a CR at the end of
	    a	line.	Default	 for  GOchar  is  linefeed  (see  g
	    parameter below).  If GOchar is not	received, the  wait
	    times out in the same manner as with p mode.

       x
	    Exit from the term function	when EOF is encountered	 on
	    transmitted	file.

       z
	    Close file when ^Z is  encountered	while  dumping	the
	    capture buffer.  Otherwise ^Z is ignored.  It should be
	    noted that The Source coughs up an occasional  ^Z  just
	    as	the  "UPI"  program  is	 about	to output something
	    interesting.






















       Manual Revised 01-04-83				    Page 12







       YAM/XYAM	3.44 Manual				    Page 13



	      ******** Options used with S or R	commands ********

	    All	options	are reset after	each command.


       b
	    Batch option.  Pathnames are provided  by  the  sender.
	    Disk   names   are	 excluded   from   the	transmitted
	    pathname(s), and may not be	specified for batch  option
	    reception (use the change directory	command).

       c
	    Request  Cyclic  Redundancy	 Check	instead	 of  simple
	    checksum.	This  option  must  be specified with the R
	    function.  The receiving program automatically  signals
	    the	 sending  program  if  CRC  is	to  be	used.	The
	    probability	of an undetected transmission error is much
	    less if CRC	is used	in place of arithmetic checksum.

       k
	    Use	1 K  byte  blocks  with	 the  S	 and  R	 functions.
	    Default block length is 128.  Increases throughput when
	    the	baudrate is high, relative to the response times of
	    the	 channel and computers.	 NOTE: some 212	type modems
	    work better	if the baud rate is set	 to  slightly  less
	    than  1200	baud;  e.g., 1180 baud.	 This is especially
	    true if using 1k blocks.

       q
	    Quiet option inhibits some of the  status  information.
	    Quiet  option  is not necessary for	proper operation at
	    higher baudrates.

       t
	    Execute the	term function after file transfer(s).

       v
	    View the  data  being  transmitted.	  Correct  data	 is
	    displayed once.  Viewing ascii files does not interfere
	    with  correct  transmission	 at  extreme  baud   rates,
	    although throughput	will be	affected.  For each sector,
	    data is viewed once	before sending/after receiving.

       y
	    Yes	it is OK to clobber a file  already  on	 disk.	 If
	    absent,  the operator is given a choice of appending to
	    the	current	file (a), erasing it (y) or aborting (n).







       Manual Revised 01-04-83				    Page 13







       YAM/XYAM	3.44 Manual				    Page 14



	       ********	Parameters used	with P command ********

       gm
	    Set	GOchar to m (decimal).	Default	is linefeed.   (See
	    w  mode.)  Some  remote systems accept uploads with	a ?
	    for	each line.  Optimum operation with  such  a  system
	    might  call	 for  pg63  pp10000 pt90 ftw filename.	The
	    first sets the goahead character to	question mark,	the
	    second sets	the timeout to a long delay, the third sets
	    throttle to	a speed	which allows the remote	to echo	 at
	    300	baud (assuming no tabs), and finally the command to
	    send the file with throttle	and wait  at  end  of  line
	    (also  eliminating the lf).	 If this sounds	too complex
	    you	can always go back to longhand.

       em
	    Set	Exitchar to m (decimal).   Same	 format	 as  GOchar
	    discussed  above.  If defined (non-zero), term function
	    will  return  when	m  is  keyboarded,  and	 ALL  other
	    keyboarded	characters  are	 passed	 to the	remote.	 Be
	    sure  not  to  set	Exitchar  to  something	 you  can't
	    keyboard!

       wn
	    Set	Waitnum	to n.  See "w" mode for	 details.   Default
	    is 1.

       tm
	    Set	Throttle to m.	The default  value  corresponds	 to
	    about 80 words per minute sending speed.

       pm
	    Set	Pause to  m.   When  the  free	characters  in	the
	    circular  buffer  reach  400,  an  XOFF is sent.  Pause
	    controls  the  time	 which	must  then   pass   without
	    characters received	before believing that the other	end
	    really has obeyed the XOFF character, as opposed to	the
	    sometimes  lengthy	Compuserve hitches in the getalong.
	    If Pause is	too short, it is possible that a  lurch	 in
	    output  will  be  interpreted as acknowledgement of	the
	    XOFF, only to have more characters arrive whilst yam is
	    occupied   dumping	the  buffer  to	 disk.	 When  this
	    happens,  unfortunate  characters  are  routed  to	the
	    proverbial	bit  bucket, and you can retry the download
	    as	the  timesharing  service  increments  the  connect
	    charge.   The  default  value seems	suitable for Source
	    over Tymnet	and BBS	systems.  Pause	is  also  the  echo
	    wait  period  used	with  the  p   mode, as	well as	the
	    timeout for	 w  mode.   Some  bulletin  board  programs
	    require  a longer pause when accepting files with the p
	    or w mode.



       Manual Revised 01-04-83				    Page 14







       YAM/XYAM	3.44 Manual				    Page 15



		       ********	Replot Commands	********

	    Commands within replot consist of a	 single	 character.
	    Replot   maps   uppercase,	 lowercase,   and   control
	    characters together	in decoding commands.

       b
	    Beginning of buffer

       k
	    Kills entire buffer	contents.

       v
       backspace
	    Previous page (some	overlap	provided)

       space
	    Next page

       p
	    Backup one line and	redisplay

       n
       LF
	    Advance one	line

       x
	    Exit after diaplaying rest of  buffer  contents.   This
	    effectively	 restores  the	screen	and keyboard to	the
	    same state they were in before replot was  entered,	 so
	    you	 can  see  where  you  were  in	 keyboarding to	the
	    remote.  For example, suppose you are typing in a  line
	    of	commands  and  you need	to "thumb back"	through	the
	    remote's output for	some vital nugget  of  information.
	    (After   you   enter  a  20	 line  email  message,	NOW
	    Compuserve asks you	for the	8 digit	account	 number	 to
	    mail  it to!) So you hit some Control V's until you	see
	    it on the screen.  Now you can't remember  whether	you
	    typed a space after	the last part of you command to	the
	    remote.  No	sweat, just exit replot	with x	and  you'll
	    see	just where you were (But don't forget that number!)

       z
	    Kill the rest of the buffer	by  setting  the  character
	    insertion  pointer to just after the end of	the current
	    display.  This subcommand should not be  used  if  some
	    data  has been sent	to either the list device (with	tl)
	    or a receive file (t  filename)  since  the	 last  kill
	    command  as	 the  pointers	might  get  out	of sync	and
	    attempt to output the entire 64k memory space, entrails
	    and	all.



       Manual Revised 01-04-83				    Page 15







       YAM/XYAM	3.44 Manual				    Page 16



       OTHERWISE
	    Return to previous function




















































       Manual Revised 01-04-83				    Page 16







       YAM/XYAM	3.44 Manual				    Page 17



		     ******** Sample YAM Session ********

	    A sample session might be:



	     A0>yam b19200 b:	      Set 19kb,	Change to b disk
	     dirr yam?.? yamhlp.mss   List files and calculate xmsn time
	     sb	yam?.? yamhlp.mss     Send them	to a local system

	     call hydepark	      Can't remember the phone number!
	     t			      Term Function
	     minirbbs
	     E			      Enter a message, etc.

	     ^E

	     ftp letter		      Open 'letter' and	send to	bbs, using
				      prompt and throttle modes	to slow
				      transmission so the remote system	won't
				      drop characters. YAM remains in T(erm)
				      after the	file is	sent.
	     xmodem s foo.bqr	      Command host to download a file

	     ^E
	     rt	secret.tqp	      Download the file, then back to term function

	     ^V	pause ^V^V	      Flip back	three pages,
				      to first part of directory listed	previously
	     CR			      Back to term function
				      More keyboarding with remote, logoff
	     (^E		      if CDO defined, term will	exit by	itself)
	     off		      Drop DTR so modem	won't answer calls,
				      Return to	CPM




















       Manual Revised 01-04-83				    Page 17







       YAM/XYAM	3.44 Manual				    Page 18



			    ******** Notes ********

	    The	transmission of	pathnames  in  batch  mode  differs
	    from  that used in MODEM7.	Yam sends the pathname as a
	    null terminated string in a	standard  Ward	Christensen
	    type packet	with a sector number of	0.  Disk specifiers
	    (B:) are not sent.	The sender waits for an	initial	NAK
	    before  sending  the pathname.  An explicit	NAK is sent
	    by the receiver at intervals when is ready to receive a
	    pathname.	 Upon	receiving   and	 acknowledging	the
	    pathname packet, the receiver opens	the file  and  then
	    sends the initial NAK for the data in the file.  A null
	    pathname terminates	batch transmission.

	    The	remainder of the pathname sector is set	 to  nulls.
	    Future  versions  of  YAM  (running	on 8086	MS-DOS,	for
	    example), may add optional fields after the	first  null
	    for	 file information such as modification time (should
	    not	be transmission	time!!), or exact length.

	    When operating with	a timesharing system and/or through
	    network  or	 satellite  links,  considerable  delays in
	    transmission and responce to blocks	may severely reduce
	    throughput	of  an FTP (file transfer protocol).  The k
	    option causes the s	command	to use	1024  byte  blocks,
	    rather than	the standard 128.  At high baud	rates, this
	    reduces the	protocol related  overhead  up	to  87	per
	    cent,  depending on	file length, by	reducing the number
	    of blocks which must be  sent  and	acknowledged  by  a
	    factor  of	8.   1024  byte	 blocks	are selected by	the
	    sender.   An  STX  at  the	beginning  of  each   block
	    (otherwise SOH for 128 bytes) inicates this	block is 1k
	    long.  Pathnames are always	sent with 128 byte blocks.

	    Files sent with 1k blocks  may  not	 agree	with  their
	    originals  due to the addition of up to seven extra	128
	    byte sectors (padded with CPMEOF).

	    Buffering problems	on  some  timesharing  systems	may
	    mitigate againgst use of 1k	blocks at high baudrates.

	    Readiness to receive  sectors  with	 Cyclic	 Redundancy
	    Check  (2 bytes) instead of	the usual additive checksum
	    is indicated by a 0103 (ASCII "C") for  initial  "naks"
	    instead  of	025.  CRC option is highly recommended when
	    using 1k blocks.

	    File transmission is compatible with MODEM7	 in  single
	    file,  standard  block  length mode.  File transmission
	    may	be aborted  by	sending	 a  SEQUENCE  of  CAN  (^X)
	    characters.	   Each	 character  keyboarded	will  cause



       Manual Revised 01-04-83				    Page 18







       YAM/XYAM	3.44 Manual				    Page 19



	    readline() to return a TIMEOUT  error,  thus  regaining
	    keyboard control relatively	easily.

	    I routinely	send files at 9600 baud	between	 a  Z89	 (2
	    mHz)  and  a Cromemco 4mHz system.	This still works at
	    9600  baud	even  with  CRC!   Reception  in  the  term
	    function  seems  to	 works	well  at 9600 baud on a	Z89
	    provided the printer is off.  If you use bios calls	for
	    terminal  i/o (e.g., TRS-80	version), the maximum speed
	    may	be less	in the term function.

	    *#Use these	numbers	for comparison.	 Your  mileage	and
	    range  may	differ	depending  on  clock speed, circuit
	    distance and RFI/EMI.  Calif. est. lower.

	    Quiet mode is not necessary	 for  proper  operation	 at
	    19kb,  although  it	 does increase throughput slightly.
	    View option	 (S  and  R  commands)	does  not  decrease
	    maximum  baud  rate,  although  throughput is obviously
	    affected according to the ratio of	terminal  speed	 to
	    communications rate.

	    Printer  operation	with  bios  calls  or	view   mode
	    substantially  reduces  the	 highest  baudrate possible
	    with  the  term  function  without	losing	 characters
	    (independent   of  actual  printer	speed).	  The  term
	    function will send XOFF to prevent buffer  overflow	 if
	    the	 printer  is  on,  or  if a receive file is in use.
	    Term function on the Cromemco with a 300  baud  printer
	    works fine at 4800 baud.


	    Baudrate  selection	 routines  are	provided  for	the
	    Cromemco TUART and Z89 serial board	(8250's).

	    If you  want  YAM  to  use	the  modem  port's  current
	    baudrate, provide a	readbaud() function (in	yam5.c)	and
	    don't define INITBAUD.  If you  can't  read	 the  modem
	    port's  baudrate,  define DEFBAUD default_baudrate.	 If
	    you	wish yam  to  initialize  the  modem  port,  define
	    INITBAUD.

	    In the  term  function,  use  of  the  circular  buffer
	    provides some advantages.

		 Incoming data may come	in at a	 rate  higher  than
		 the display and/or printer.  Tab expansion for	the
		 display does not compromise this ability.

		 The user may decide to	save a timesharing  session
		 on the	disk AFTER it has started (or possibly even



       Manual Revised 01-04-83				    Page 19







       YAM/XYAM	3.44 Manual				    Page 20



		 finished) as long as the buffer pointers have	not
		 wrapped around.

		 The same ability also applies to the printer.	The
		 printer  need	not be as fast as the modem as long
		 as the	Tortoise is allowed to catch up.

		 Received data may be redisplayed (rep command).

	    At high  speeds,  the  display  will  fall	behind	the
	    incoming  data,  as	 storing of raw	modem data into	the
	    buffer takes precedence over all else.  As a result,  a
	    defective  or  incorrectly	programmed modem port which
	    sources data at high speed can  lockout  the  keyboard.
	    If	yam  "goes  away"  when	entering the term function,
	    this may be	the cause.

	    If insufficient stack space	is provided above  the	end
	    of the circular buffer, yam	may sulk when attempting to
	    exit from the term function.  The amount of	stack space
	    is	determined  in	the init function (in yam1.c) where
	    bufend is initialized.

	    The	t and z	modes affecting	dumping	 of  captured  data
	    take  effect when the circular buffer is written to	the
	    receive file, not as the characters	are first  received
	    from the data port.

	    The	append	option	(available  if	receiving  filename
	    where  filename  exists)  operates	by  calculating	the
	    length of the file,	searching the last  NSECTS  records
	    for	 ^Z,  and  positioning	the pointers appropriately.
	    Since YAM fills the	rest of	the entire last	record with
	    ^Z,	the last record	of an existing file may	be "cleaned
	    up"	by the command sequence	"kill  tc  filename"  which
	    clears  the	 capture buffer, opens filename	for append,
	    and	then closes it without adding any text.

			Communicating with TWX Machines

	    YAM	has certain features which facilitate sending files
	    to	 TWX  machines.	  Files	 for  transmission  to	TWX
	    machines   conventionally	begin	with   the    local
	    answerback,	which may be triggered by a ^F in the file.
	    After the test of the  file,  add  an  ENQ	(^E)  which
	    releases  the  TWX	machine's answerback, another ^F to
	    send your answerback, and finally a	^D to allow the	TWX
	    machine to disconnect.

	    To send a file, the	following sequence is recommended:




       Manual Revised 01-04-83				    Page 20







       YAM/XYAM	3.44 Manual				    Page 21



	    yam	call name fq sendfile thqx logfile close off

	    Both sendfile and logfile should be	open  by  the  time
	    connection	is  made, or the called	TWX machine may	not
	    get	a timely response to its ENQ (^E).  Since YAM  uses
	    the	 same  file descriptor for looking up phone numbers
	    and	receive	files, you cannot  open	 the  receive  file
	    before using the call command.

	    If printer operation is desired,  change  the  thqx	 to
	    thqxl.











































       Manual Revised 01-04-83				    Page 21







       YAM/XYAM	3.44 Manual				    Page 22



		       ********	Installing Yam ********

	    Yam	 consists  of  yam.h,	yamsys.h,   yam8.asm,	and
	    yam[1235710].c.   Yam  currently supports the Z89 (with
	    aux	 board),  Cromemco  TUART,  TRS-80  II,	 and  Apple
	    (currently with Z19	console).

	    Yamsys.h is	not part of the	distribution;  one  of	the
	    configuration  dependent  header  files  is	 copied	 to
	    yamsys.h.  SOME of these files are:	 Yamz89.h  is  used
	    for	 Z89  computers	 (check	 the port definitions to be
	    sure they agree with your usage.) Yamtuart.h  is  setup
	    for	 a  TUART  board  at  60H.  Yamz89xm.h describes an
	    XMODEM  configuration   with   the	 Z89.	 Yamtrsii.h
	    describes  a  TRS-80  Mod II.  One of these	(Or one	you
	    write for your system) should  be  copied  to  yamsys.h
	    before compiling the files.

	    YAM	 also  references  some	 of  the   definitions	 in
	    BDSCIO.H.	When cross-compiling a version of yam for a
	    different system, be sure to reference a bdscio.h  file
	    suitable  for  the	target	system.	 Alternatively,	one
	    might #undef CDATA	and  any  other	 definitions  which
	    otherwise  would  speak  with  forked tongue; YAMLYLE.H
	    will be an example of this trick.

	    Starting with  Version  3.08  there	 will  be  multiple
	    versions  of  yam5.c  depending  on	 the target system.
	    There haven't been any changes to  yam5.c  (except	for
	    porting  to	 new systems), so you should be	fairly safe
	    hanging on to your current version.	 If you	do  have  a
	    special  version  of yam5, please edit out ALL code	and
	    comments not  directly  relevant  to  your	application
	    (including the unused versions of readline)	to minimize
	    storage  space  and	 transmission  time   for   RCP/M's
	    handling yam.

	    Compilation	should be with -e 7500 for all files and -o
	    for	 yam[235]  and	yam10 for best runtime performance.
	    Note that  yam[147]	 are  NOT  compiles  with  -o;	the
	    execution  speed  of  the  functions  in these files is
	    unimportant, and it	is better to save code space by	not
	    using -o.  Consult the .sub	files for examples.  If	you
	    have added some code for autodial, etc., the  externals
	    need to start higher.  If the externals start below	the
	    end	of code, YAM will say  "urk"  and  exit,  hopefully
	    before doing anything REALLY nasty.

	    Yam	should be linked with the object  module  with	the
	    largest  set of "local globals" first.  Currently, this
	    is yam10.  These variables overlay similar variables in



       Manual Revised 01-04-83				    Page 22







       YAM/XYAM	3.44 Manual				    Page 23



	    some    other    files.	They   are   not   required
	    simultaneously, but	the linker  must  see  the  largest
	    common area	first to allocate sufficient room for them.
	    (N.B.: I do	 not  recommend	 this  hack  as	 a  general
	    method!)

	    Yam	can be made somewhat smaller if	the -o is left	out
	    and	 the external address is downsized accordingly.	 To
	    make  the  smallest	 YAM  possible,	 define	 CDOS	and
	    RESTRICTED and then	leave off as many optional #defines
	    as possible.  The  bdsnew  library	(assembly  language
	    versions  of  some standard	functions) may be used with
	    slight improvments in code size and	speed.

	    I have found YAM to	be  handy  for	transferring  files
	    between  adjacent  machines; hence all the attention to
	    high speed operation.

	    If your machine uses a different type of UART chip,	 or
	    a  built-in	 modem	card,  then the	yamsys.h and yam5.c
	    files will need work.

	    Proper operation of	YAM cannot be guaranteed with BDS C
	    versions  prior  to	 1.46.	 If  you  don't	 have  that
	    version, send 8 bucks  and	a  copy	 of  your  software
	    license  (a	Xerox of your distribution disk	showing	its
	    label should do) to:
			    BDS	C Users	Group
			    Robert Ward
			    Dedicated Microsystems Inc
			    409	E Kansas ST
			    Yates Center, Kansas 66783
	    Versions before 1.46 are a no-no.





















       Manual Revised 01-04-83				    Page 23







       YAM/XYAM	3.44 Manual				    Page 24



		     *************************************
		     **********	PROPAGATING YAM	**********
		     *************************************

	    Often the question	arises,	 "How  do  I  get  YAM	(or
	    whatever)  into  this  neat	new machine with the *%!@$@
	    format disks?

	    The	b mode was put in  just	 for  you!   First,  cross-
	    compile   a	  version  of  YAM  with  a  yamsys.h  file
	    appropriate	for the	target machine.	 Then, connect	the
	    two	machines RS232 ports together, and initialize those
	    ports so they talk to each other.  Presumably,  YAM	 is
	    running  on	 the host machine.  Now	run ddt, sid, zsid,
	    dcon, or whatever and write	a tiny program up in fairly
	    high memory	(above the highest address used	by YAM,	say
	    7000h).

	    This program will:
	     1.	 Set HL	to 100h
	     2.	 Wait for UART for data	available
	     3.	 Input data from UART (Note: UART must be in 8 bit,
	    no parity mode)
	     4.	 Store data to memory (mov m,a)
	     5.	 Increment HL
	     6.	 Jump to 2 above.

	    When the file is all sent, interrupt the program,  jump
	    to	location  0.   Then  you  can save YAM.COM.  If	you
	    can't interrupt this program without blowing  it  away,
	    you'll  have  to  change  it  to detect the	end of data
	    (perhaps count the number of bytes received	in  the	 DE
	    register) and make the program jump	to location 0.

	    Another  possibility  would	 be  to	 unload	 the   yam-
	    target.com	image  into  a hex file	( UNLOAD2.ASM works
	    fine ).  Then run pip in the target	machine	with  input
	    from the serial port and output to a file using pip's B
	    parameter.	With the B parameter, pip buffers  incoming
	    data  in  memory until an XOFF (Control-S) is received.
	    To get that, send the file from the	host  with  "yam  f
	    file.hex"  and  from  time	to time	hit two	^S's on	the
	    host keyboard.  The	first ^S stops	the  transfer,	the
	    second  will  be  passed to	the other machine where	pip
	    will see it.  When pip has written out the buffer, type
	    ^Q	on  the	 host  to  resume.   (Be sure to stop often
	    enough so pip's buffer doesn't overflow.) (With pip, go
	    slow  -300	baud  is  much	better then typing it in by
	    hand!) (If	the  target  system  seems  to	be  echoing
	    characters,	 slowing  down the transfer with the t mode
	    may	help.) Finally,	 load  the  file  with	the  target



       Manual Revised 01-04-83				    Page 24







       YAM/XYAM	3.44 Manual				    Page 25



	    system's  load  command.  Also, if the target system is
	    echoing characters (TTY:  input  device)  the  FE  file
	    command may	be easier to use.

	    Once you have a working  yam  in  the  target  machine,
	    other  files  come	across	effortlessly with the batch
	    file transfer option.

	    Happy propagation and may your  machines  trap  fertile
	    YAM's.

			   Notes on Uploading Files

		    If the remote has YAM, XYAM, MODEM,	XMODEM,	 or
	    umodem, you	can upload files with the s command on your
	    computer and the corresponding r command on	the remote.
	    Newer versions of some of these programs support Cyclic
	    Redundancy	Check  as  an  alternative  to	the  simple
	    checksum   used   by   the	original  Ward	Christensen
	    protocol.  CRC is much better at detecting errors and I
	    recommend its use where available.

		    Unfortunately, this	protocol is not	implemented
	    on	the  popular  timesharing  services  The Source	and
	    Compuserve.	 It is often possible to upload	files using
	    the	 F  command,  perhaps with one or more modes.  Your
	    chances of success improve if you set "enab	flow"  when
	    connecting to Telenet.  If using Tymnet, type ^R^X just
	    before the host computer name to  enable  flow  control
	    with XOFF and XON.	It often helps to use "half duplex"
	    when connecting to the computer.

			      Important	#define's

       MODOUT(c)
	    This outputs the character c to the	modem.	This  macro
	    need  not  check  whether  the  modem  is  ready  for a
	    character as that has  already  been  done.	  MODOUT(c)
	    must return	immeadiately regardless	of what	is in c.

       LPOUT(c)
	    Likewise,  unadorned  output  of  c	 to  the   printer.
	    LPOUT(c) must return immeadiately regardless of what is
	    in c.

       TTYOUT(c)
	    Unadorned output of	c to the local display.	 YAM checks
	    that  the  local  display  is  ready  before  executing
	    TTYOUT(c).	  TTYOUT(c)   must   return    immeadiately
	    regardless	of  what  is  in  c.  Caution if using bdos
	    function 6 which has special cases for 0xFE	and 0xFF.



       Manual Revised 01-04-83				    Page 25







       YAM/XYAM	3.44 Manual				    Page 26



       MYSYSTEM
	    Defining this causes yam2 to be compiled with a call to
	    yam4.c  for	handling the Compuserve	A protocol for file
	    transfer (see 2 mode).  Unless you know  what  you	are
	    doing,  you	 should	 use  the following even if it is a
	    bloody lie as xftran may not accept	something original.
	    If	this  is  included, you	will need yam4.c, otherwise
	    not.

		    #define				   MYSYSTEM
	    "#CPMHeath/Zenith,CC,HC,PA,PL 15"


       SCREAMER	n
	    Compiles  a	 call  to  yterm()  instead  of	 term()	 if
	    baudrate  >	 n and no speical modes	have been set which
	    would be  rendered	useless.   Without  yterm,  maximum
	    baudrate  may be limited to	much less than 9600.  Yterm
	    is written in assmebly language and	 must  be  modified
	    slightly according to the local hardware configuration.
	    The	yterm function is in yam9.csm.


	    Note: if you miss only the first few  characters  in  a
	    line,  and	if  your  system  has  memory mapped video,
	    screamer won't help	you much; you need to speed up	the
	    scrolling  process!	  Note	that  yterm  lacks  much of
	    term's  functionality.   On	 a  Z89	 with  direct  bios
	    keyboard input, yterm functions at 19200 baud.

       ANSWERBACK
	    This string	is transmitted from term function in Q mode
	    in	response to keyboard ^F	or ^E received from remote.
	    Conventionally,  ANSWERBACK	 consists  of  "\r\n<phone-
	    number>  <user  name>  <city>\r\n\021"  where city is a
	    three or four letter abbreviation specified	by  Western
	    Union  Telegraph  company.	 Teletype  answerbacks	are
	    limited to 20 characters, a	 limitation  which  needn't
	    concern us.

       PHONES
	    This file (usually "A:YAMPHONE.T") contains	a  list	 of
	    names, phone numbers, and baudrates.  The names must be
	    in lower case.

       HELPFILE
	    Contains a short summary of	commands and  other  useful
	    information	 about	YAM  suitable  for use as an online
	    cribsheet.	Currently a helpfile exists only for XYAM.

       CDOS



       Manual Revised 01-04-83				    Page 26







       YAM/XYAM	3.44 Manual				    Page 27



	    Makes YAM work on CDOS  operating  system  by  deleting
	    CP/M 2.2 operations	such as	user number, calculate file
	    length, etc.  If you have CP/M 1.4,	CDOS just might	 do
	    the	trick for you.

       KBMASK
	    This is normally 0177 to strip parity  from	 keyboarded
	    characters,	but may	be 0377	if a full 8 bit	keyboard is
	    used.

       USERINIT
	    Causes  init()  to	call  a	 user	supplied   function
	    userinit().

       TERMRESET
	    A string enclosed in quotes	which sets the terminal	 to
	    the	 mode  desireable for the term function.  TERMRESET
	    as defined for the Z19 turns on wraparound.

       RXNONO
	    Define this	as a string of	characters,  any  of  which
	    would  cause  your	terminal  and/or cbios grief if	not
	    suppressed by term function.

       ESCCAL
	    Many terminals seend escape	sequences for certain keys.
	    In	 a   typical  modem  program  configuration,  these
	    sequences will fail	to transmit  properly  because	the
	    modem (300 or 1200 baud) cannot transmit the characters
	    as fast as the terminal generates them.   I	 ESCCAL	 is
	    defined,  yam will check for rapid escape sequences	and
	    buffer the following characters.  ESCCAL should be	set
	    to	 the  lowest  number  (shortest	 delay)	 that  will
	    recognize the sequences.  This logic is not	 needed	 if
	    the	keyboard is interrupt driven.  This feature may	not
	    work if the	remote is sending data at maximum speed	the
	    instant   the   function   key   is	  used.	  For  more
	    information,  study	 the  functions	 on   yam3.c   that
	    reference abptr and/or abend.

       STATLINE
	    Define this	if your	terminal has an	extra (viz.,  25th)
	    line  usable  for  status  information  which  does	not
	    scroll  up	nor  interfere	with  scrolling.   lpstat()
	    writes  to	the  entire  status  line, clearing out	any
	    previous contents. pstat() writes starting at the  48th
	    position,  not  disturbing	any  information written by
	    lpstat().

       MODEMSTUFF
	    If you provide routines setbaud(),	readbaud(),  bye(),



       Manual Revised 01-04-83				    Page 27







       YAM/XYAM	3.44 Manual				    Page 28



	    and	 onhook(), define MODEMSTUFF to	exclude	the default
	    dummy routines.

       AUTODIAL
	    If your modem supports autodial, write your	own version
	    of	dial()	and define AUTODIAL to suppress	the default
	    routine.

       FLIP
	    If you have	a flip()  subroutine  in  your	yam5,  this
	    causes   flip   to	be  included  as  a  command.	See
	    yam5pmmi.c for an example of a flip	routine.

       MIERROR
	    If your uart has a separate	 register  for	error  bits
	    (not  the  register	that holds receive data	available),
	    mierror should be an expression which returns non  zero
	    in	case  of  overrun, framing, or other error, but	not
	    carrier dropout.  This version of readline has not been
	    tested.

       MIREADYERROR
	    Define this	if data	available and the error	bits are in
	    the	 same register,	especially if reading that register
	    clears some	error bits, or if the error bits are  valid
	    only if data available.

       IOTYPE
	    This defaults to char for i/o mapped systems  with	256
	    ports.   This  may	be  defined to unsigned	or long	for
	    systems with more ports (8086 or memory mapped i/o).

       Z19
	    Generates output for Z19 functions,	 especially  status
	    (25th) line.

       USQ
	    Allows the	type  command  to  automatically  recognize
	    squeezed  files  and  display them in ASCII	form.  Adds
	    1000 hex to	program	size.

       RXLOG
	    Log	all files received from	remote	systems	 in  RXLOG.
	    Information	  stored   includes   user   number,  disk,
	    filename, baudrate,	and the	name of	the  remote  system
	    given in the last call command (LASTCALR in	xyam).

       TXLOG
	    Log	all files transmitted to remote	systems	 in  TXLOG.
	    Information	same as	above.




       Manual Revised 01-04-83				    Page 28







       YAM/XYAM	3.44 Manual				    Page 29



       LOGFILE
	    Must be defined if either of the above are.

       NATHAN
	    Students of	American History  will	recall	the  famous
	    patriot  Nathan Hale who said "I regret that I have	but
	    one	asterisk for my	country." Octal	code 052.















































       Manual Revised 01-04-83				    Page 29







       YAM/XYAM	3.44 Manual				    Page 30



		      ******** XYAM Differences	********

	    XYAM  is  produced	by  defining  XMODEM  in  the  file
	    'yamsys.h'.	 Consult 'yamz89xm.h' and 'yamx.sub' for an
	    example.  Certain #defines are especially applicable to
	    XYAM:

       RESTRICTED
	    Certain commands and options are  disabled.	  Filenames
	    with '.BAD'	extensions and files with $SYS or TAG2 bits
	    set	cannot be opened.  They	will not appear	with DIR or
	    DIRR commands.

	    A file with	extension of '.COM' will be uploaded with a
	    '.OBJ'    extension.     Existing	files	cannot	 be
	    overwritten.  If a file  is	 received  (r  command)	 in
	    error, it will be unlinked.

       CDO
	    Define a test for carrier drop out so  that	 XYAM  will
	    automatically  exit	T(erm) function	when the connection
	    is broken.

       BYEPROG
	    Bye, O and OFF commands chain to BYEPROG.COM if BYEPROG
	    is defined (as a string).  For systems wishing to use a
	    BYE.COM to request comments.



























       Manual Revised 01-04-83				    Page 30







       YAM/XYAM	3.44 Manual				    Page 31



		     Recent Revisions/Enhancements to YAM
	     3.44   Name   changes   and   typo	  corrections	for
	    portability.
	     3.43 Nlmode and crmode now	affect file xmsn  with	the
	    sendecho function as well as term.
	     3.42 inp()	and  outp()  calls  in	yam3.c	changed	 to
	    equivalent	 macros	  for	portability.	Disk  block
	    calculation	fixed re Paul Homchick.
	     3.41 Keyboard excape sequences buffered (see  ESCCAL).
	    LOOPBACKNONO and u command removed.
	     3.39 Modem	port selection has been	moved from yam1	 to
	    yam5.   CISlen  is no longer a settable parameter.	Low
	    is no  longer  a  settable	parameter.   All  parameter
	    commands   now  take  a  decimal  number;  this  avoids
	    problems  encountered   in	 previous   versions   when
	    attempting	to  set	GOchar to colon.  FE sends an ascii
	    file to computers with charaacter echo (pip	file=tty:).
	    A  bug  which  caused  spurious  XOFF  to  be sent when
	    sending file in term mode has been fixed. Z100 version.
	    9-16-82
	     3.37 Increased some  timeouts  in	yam2.c	for  better
	    operations with sluggish remotes. 9-1-82
	     3.35 NULL sends break in yam3 (was	^B^B). 8-28-82
	     3.34 Changed starting point of replot command and also
	    speeded it up by using externs. 8-1-82
	     3.33  Changed  yterm()  to	 assembly  subroutine,	p/o
	    yam9.csm.  Changed yam8 to .csm format also.  Removed y
	    command (selection is automatic).  7-31-82
	     3.31 Added	A prefix, LINKPORT, and	completed Micro-Com
	    autodial routine. 7-23-82
	     3.30 Added	k flag for 1024	byte block FTP,	as well	 as
	    other improvements to yam2.c 7-11-82 Added y command, a
	    faster subset of the t command.  Capture  to  file	now
	    ignores CR,	trnaslates LF into CR-LF unless	image mode.
	    Moved time-sensitive  functions  from  yam7	 to  yam10,
	    allowing memory savings by not using -o on yam7.c.
	     3.29 Removed Join mode.   Added  x	 command.   "Added"
	    TTYOUT,  MODOUT,  and  LPOUT  macros (with argument) to
	    reduce conditionals	in YAM3.C and YAM7.C 6-26
	     3.28 Added	FLIP for PMMI type modems. The memory usage
	    change  made  in  3.26  has	been cleaned up	by use of a
	    union to assure correct memory layout regardless of	the
	    compiler  used.   A	 yam5pmmi.c file for the pmmi modem
	    now	exists.	6-12-82
	     3.27 Changed autodial() function for CAFPERS. 6-11-82
	     3.26 Further changes to aid maintenance  of  different
	    versions  of  yam.	 Needs BDS C 1.46 to compile due to
	    nested conditionals.  init() moved	to  yam7.c.  Memory
	    usage changed allowing larger buffer area.
	     3.25 NATHAN defined. CIS  protocol	 entry	changed	 to
	    help error recovery. 5-31-82



       Manual Revised 01-04-83				    Page 31







       YAM/XYAM	3.44 Manual				    Page 32



	     3.24 Corrected usage of CLKMHZ
	     3.23  Official  8-bit  version.  Added   -,   o   mode
	    (Onetrip),	 and   Cislen	parameter.   Jeff  Martin's
	    corrections	added to manual.
	     3.22 Unofficial  Version.	Includes  CIS/MNET  A  file
	    transfer  protocol optional	with yam4.c (see MYSYSTEM).
	    Changed Cis02 handling. Changed  statline  in  yam2	 to
	    display  number  of	 characters  received in kilobytes.
	    Some  coding  changes  reflecting	awkward	  sequences
	    discovered while porting to	CP/M-86	on IBM PC version.
	     3.20 New  Base  Version  (for  dif's).  Changed  error
	    printouts in yam2.	Documentation update.
	     3.19 J mode joins short lines when	at less	than column
	    40.
	     3.18 N mode now  prepends	\r  to	\n  when  the  term
	    function is	receiving a file. 1-1-82.
	     3.17 Added	E parameter 12-19-81.
	     3.16 Setting Squelch (TS ES FS  or	 DS)  automatically
	    sets  Dumping  to not Squelch.  In Twxmode half duplex,
	    transmitted	file is	copied to receive file	(if  open),
	    and	is printed if print mode is on.	12-16-81.
	     3.15  Added  term	Q  mode	 for  TWX  operations  with
	    ANSWERBACK.	  Changed wcgetsec() logic so noise hits on
	    the	line before the	first sector do	not cause a speedup
	    in the timeout parameter. 12-14-81.
	     3.14 Added	append option for receiving files, replot K
	    subcommand,	 changed  previous  K subcommand to Z. In N
	    mode, keyboard CR is transmitted as	NL. 12-11-81.
	     3.13 For non STATLINE, changed "Awaiting Pathname NAK"
	    to "+" and "Awaiting initial NAK" "^".
	     3.12 Added	replot X and K	subcommands,  changed  type
	    unsqueeze  to  avoid  array	 overflow  problems on long
	    pathnames.	Added  term   function	 break	 subcommand
	    (requires sendbrk()	function in yam5.c). 11-5-81.
	     3.11 Added	Cis02 mode  for	 Compuserve  access,  fixed
	    logfile  problem  (first  few  files didn't	show).	Tab
	    expansion fix courtesy Jeff	Martin (I  thought  it	was
	    the	Z89!) 11-28-81.
	     3.10 Changed yam10.c to stop printout on  ^Z  in  file
	    11-22-81.
	     3.09 Cosmetic change to type command in  xyam.  11-17-
	    81.
	     3.08   Added   USERINIT   option	useful	 for   some
	    implementations. 11-14-81.
	     3.07 Minor	change to yam1.c  for  benefit	of  memory-
	    mapped systems 11-11-81.
	     3.06 IOTYPE  added	 for  memory  mapped  systems  List
	    command  now  distinct  from type.	Cosmetic changes to
	    opentx(). 11-8-81.
	     3.05  Added  automatic  recognition  and  display	 of
	    squeezed  files.  Inclusion	 of  the  unsqueeze feature



       Manual Revised 01-04-83				    Page 32







       YAM/XYAM	3.44 Manual				    Page 33



	    (#define USQ) may require clink -r 800 11-7-81.
	     3.04 Added	GOchar parameter, enhanced view	mode  11-6-
	    81.
	     3.03 Number of sectors  and  xmsn	time  printed  when
	    opening files 11-5-81.
	     3.02 Xyam resets user number  when	 exec'ing  BYEPROG.
	    11-01-81.
	     3.01  Added  INITBAUD.  Your   yam?????.h	 may   need
	    revision. 10-31-81.
	     3.00 Nomenclature changed to  facilitate  differential
	    file updates 10-25-81.
	     2.34 Added	era and	NATHAN commands, O mode. 10-24-81.
	     2.33 Changed Unixish "FILE" to struct _buf	 in  yam.h.
	    10-21-81.
	     2.32  Added  BYEPROG  define,  deleted  T,	 U,  and  W
	    commands from XYAM.	10-18-81.
	     2.31 Corrected tab	expansion and kbd XON XOFF handling
	    in yam3.c 10-17-81.
	     2.30 Supports CRC	error  checking	 option	 compatible
	    with  XMODEM45  10-15-81.	Chat  function	now in both
	    yam/xyam.
	     2.24 Added	free disk space	report on a: etc.  command,
	    Upchuck function.
	     2.23 Added	"crck" command.






























       Manual Revised 01-04-83				    Page 33