home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol158 / yamimpl.lqt / YAMIMPL.LST
Encoding:
File List  |  1985-02-10  |  42.8 KB  |  990 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.                            Implementation Manual for
  75.                             YAM (Yet Another Modem)
  76.                                by Chuck Forsberg
  77.  
  78.  
  79.                             Distributed with YAMC86
  80.                        (Converted for CI C86 and CP/M-86)
  81.                                 by Paul Homchick
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.      Yam Implementation Manual  Revised 9-10-83                      Page 1
  134.  
  135.  
  136.           
  137.           
  138.  
  139.  
  140.      1  FILE TRANSFER PROTOCOL  
  141.      1. FILE TRANSFER PROTOCOL 
  142.  
  143.           The  transmission  of  pathnames  in batch mode differs from
  144.           that used in MODEM7.  Yam  sends  the  pathname  as  a  null
  145.           terminated string in a standard Ward Christensen type packet 
  146.           with a sector number of 0.  
  147.           
  148.           The  sender  may append the following additional information
  149.           starting  one  byte  after  the  null  that  terminates  the
  150.           pathname: 
  151.           
  152.           sprintf(p, "%lu %lo %o", f.st_size, f.st_mtime, f.st_mode); 
  153.           
  154.           where  st_size  is  the  exact  length of the file in bytes,
  155.           st_mtime is the modification date in seconds since 1970, and 
  156.           st_mode is the file mode, as defined for Unix V7/Sys3.    If
  157.           the  mod  time  is  unavailable,  a  0  value will cause the
  158.           receiver to ignore it.  If the file mode is unavailable, a 0 
  159.           value will cause the receiver to ignore it and use a dafault 
  160.           file mode.  
  161.           
  162.           Disk specifiers (B:) are not sent.  Directory names of  full
  163.           pathnames are  not  (generally)  sent.   If this information
  164.           (including the trailing null provided  by  sprintf)  exceeds
  165.           the  128  byte standard sector length, a long sector must be
  166.           sent.  
  167.           
  168.           The sender waits for  an  initial  NAK  before  sending  the
  169.           pathname.   An  explicit  NAK  is  sent  by  the receiver at
  170.           intervals when  is  ready  to  receive  a  pathname.    Upon
  171.           receiving   and   acknowledging  the  pathname  packet,  the
  172.           receiver opens the file and then sends the initial  NAK  for
  173.           the data  in  the  file.    A null pathname terminates batch
  174.           transmission.  
  175.           
  176.           The remainder of the pathname sector is set to nulls.  
  177.           
  178.  
  179.  
  180.      2  Installing Yam  
  181.      2. Installing Yam 
  182.  
  183.           
  184.           Yam   consists   of   yam.h,   yamsys.h,    yam8.asm,    and
  185.           yam[1235710].c.   Yam  currently  supports the Z89 (with aux
  186.           board), Cromemco TUART, TRS-80 II, and Apple (currently with 
  187.           Z19 console).  
  188.           
  189.           Yamsys.h is  not  part  of  the  distribution;  one  of  the
  190.           configuration  dependent header files is copied to yamsys.h.
  191.           SOME of these files are: Yamz89.h is used for Z89  computers
  192.           (check  the port definitions to be sure they agree with your
  193.           usage.) Yamtuart.h is  setup  for  a  TUART  board  at  60H.
  194.           Yamz89xm.h  describes  an XMODEM configuration with the Z89.
  195.           Yamtrsii.h describes a TRS-80 Mod II.  One of these (Or  one
  196.  
  197.  
  198.      YAM/XYAM                     Version 4.24                       Page 1
  199.  
  200.  
  201.      Yam Implementation Manual  Revised 9-10-83                      Page 2
  202.  
  203.  
  204.           you  write  for  your  system)  should be copied to yamsys.h
  205.           before compiling the files.  
  206.           
  207.           YAM also references some of  the  definitions  in  BDSCIO.H.
  208.           When  cross-compiling  a  version  of  yam  for  a different
  209.           system, be sure to reference a bdscio.h  file  suitable  for
  210.           the target  system.    Alternatively, one might #undef CDATA
  211.           and any other definitions which otherwise would  speak  with
  212.           forked tongue; YAMLYLE.Hwill be an example of this trick.  
  213.           
  214.           Starting  with  Version 3.08 there will be multiple versions
  215.           of yam5.c depending on the target system.  There  have  been
  216.           few  changes  to yam5.c (except for porting to new systems),
  217.           so you should be fairly safe  hanging  on  to  your  current
  218.           version.   If  you do have a special version of yam5, please
  219.           edit out ALL code and comments not directly relevant to your 
  220.           application (including the unused versions of  readline)  to
  221.           minimize  storage  space  and  transmission time for RCP/M's
  222.           archiving yam.  
  223.           
  224.           Compilation should be with -e ????  for all files and -o for 
  225.           yam[235] and yam10 for best runtime performance.  Note  that
  226.           yam[147]  are  NOT  compiles with -o; the execution speed of
  227.           the functions in these  files  is  unimportant,  and  it  is
  228.           better to save code space by not using -o.  Consult the .sub 
  229.           files for examples.  If the externals start below the end of 
  230.           code,  YAM  will  say "urk" and exit, hopefully before doing
  231.           anything REALLY nasty.  
  232.           
  233.           Yam should be linked with the object module with the largest 
  234.           set of "local globals" first.  Currently, this is in  yam10.
  235.           These  variables  overlay  similar  variables  in some other
  236.           files.  They are not required simultaneously, but the linker 
  237.           must  see  the  largest  common  area  first   to   allocate
  238.           sufficient room  for  them.   (N.B.: I do not recommend this
  239.           hack as a general method!) 
  240.           
  241.           Care should be taken to  ensure  that  all  .crl  files  are
  242.           compiled  or  assembled  with compatible versions of cc1 and
  243.           bds.lib.  
  244.           
  245.           Yam can be made somewhat smaller if the -o is left  out  and
  246.           the external  address is downsized accordingly.  To make the
  247.           smallest YAM possible, define CDOS and RESTRICTED  and  then
  248.           leave off as many optional #defines as possible.  The bdsnew 
  249.           library   (assembly   language  versions  of  some  standard
  250.           functions) may be used with slight improvments in code  size
  251.           and speed.    (Bdsnew  library  is  named bn.crl in the .SUB
  252.           files used for yam.) 
  253.           
  254.           YAM  is  handy  for  transferring  files  between   directly
  255.           connected  machines;  hence  all the attention to high speed
  256.           operation.  
  257.           
  258.           If your machine uses a different type of  UART  chip,  or  a
  259.           built-in modem card, then the yamsys.h and yam5.c files will 
  260.           need work.  
  261.           
  262.  
  263.  
  264.      YAM/XYAM                     Version 4.24                       Page 2
  265.  
  266.  
  267.      Yam Implementation Manual  Revised 9-10-83                      Page 3
  268.  
  269.  
  270.           Compilation and proper operation of YAM cannot be guaranteed 
  271.           with  BDS  C versions prior to 1.50a. If you don't have that
  272.           version, send 8 (maybe more now!) bucks and a copy  of  your
  273.           software  license (a Xerox of your distribution disk showing
  274.           its label should do) to: 
  275.                   BDS C Users Group
  276.                   Robert Ward
  277.                   Dedicated Microsystems Inc
  278.                   409 E Kansas ST
  279.                   Yates Center, Kansas 66783
  280.           Versions before 1.46 are a no-no.  
  281.           
  282.  
  283.  
  284.      3  PROPAGATING YAM  
  285.      3. PROPAGATING YAM 
  286.  
  287.           
  288.           Often the question arises, "How do I get YAM  (or  whatever)
  289.           into this neat new machine with the *%!@$@ format disks?  
  290.           
  291.  
  292.           3 1 Binary Serial File Transfer  
  293.           3.1 Binary Serial File Transfer 
  294.           The b  mode was put in just for you!  First, cross-compile a
  295.           version of YAM with a  yamsys.h  file  appropriate  for  the
  296.           target machine.   Then, connect the two machines RS232 ports
  297.           together, and initialize those ports so they  talk  to  each
  298.           other.  Presumably, YAM is running on the host machine.  Now 
  299.           run  ddt,  sid,  zsid,  dcon,  or  whatever and write a tiny
  300.           program up in fairly high memory (above the highest  address
  301.           used by YAM, say 7000h).  
  302.           
  303.           This program will: 
  304.  
  305.  
  306.             Set HL to 100h  
  307.             Set HL to 100h 
  308.  
  309.             Wait for UART for data available  
  310.             Wait for UART for data available 
  311.  
  312.             Input  data  from  UART   Note   UART must be in 8 bit  no 
  313.             Input  data  from  UART  (Note:  UART must be in 8 bit, no
  314.                 parity mode   
  315.                 parity mode) 
  316.  
  317.             Store data to memory  mov m a   
  318.             Store data to memory (mov m,a) 
  319.  
  320.             Increment HL  
  321.             Increment HL 
  322.  
  323.             Jump to 2 above    
  324.             Jump to 2 above.  
  325.           
  326.           When the file is all sent, interrupt the  program,  jump  to
  327.           location 0.   Then  you  can  save  YAM.COM.    If you can't
  328.           interrupt this program without blowing it away, you'll  have
  329.           to  change  it  to detect the end of data (perhaps count the
  330.           number of bytes received in the DE register)  and  make  the
  331.           program jump to location 0.  
  332.           
  333.  
  334.           3 2 Hex File Transfer  
  335.           3.2 Hex File Transfer 
  336.           Another  possibility  would  be to unload the yam-target.com
  337.           image into a hex file ( UNLOAD2.ASM works fine ).  Then  run
  338.  
  339.  
  340.      YAM/XYAM                     Version 4.24                       Page 3
  341.  
  342.  
  343.      Yam Implementation Manual  Revised 9-10-83                      Page 4
  344.  
  345.  
  346.           pip  in  the  target machine with input from the serial port
  347.           and output to a file using pip's B parameter.   With  the  B
  348.           parameter, pip buffers incoming data in memory until an XOFF 
  349.           (Control-S) is  received.    To get that, send the file from
  350.           the host with "yam f file.hex" and from time to time hit two 
  351.           ^S's on the host keyboard.  The first ^S stops the transfer, 
  352.           the second will be passed to the  other  machine  where  pip
  353.           will see  it.   When pip has written out the buffer, type ^Q
  354.           on the host to resume.  (Be sure to  stop  often  enough  so
  355.           pip's buffer doesn't overflow.) (With pip, go slow -300 baud 
  356.           is much better then typing it in by hand!) Finally, load the 
  357.           file with  the  target  system's load command.  Also, if the
  358.           target system is echoing characters (TTY: input device)  the
  359.           FE file command may be easier to use.  
  360.           
  361.           If   the  target  system  echos  characters,  use  the  ``fe
  362.       filename'' command  which waits for an answering echo before
  363.       sending the next  character.  If that doesn't work properly,
  364.           try ``ft'',  slowing down the transfer with the t mode.  
  365.           
  366.           Once you have a working yam running on target machine, other 
  367.           files come across effortlessly with the batch file  transfer
  368.           option.  
  369.           
  370.           Happy propagation and may your machines trap fertile YAM's.  
  371.           
  372.  
  373.  
  374.      4  Important  define s  
  375.      4. Important #define's 
  376.  
  377.           
  378.  
  379.  
  380.             MODOUT c                                                    
  381.             MODOUT(c) This outputs the character c to the modem.  This 
  382.                 macro  need not check whether the modem is ready for a
  383.                 character as that has already been  done.    MODOUT(c)
  384.                 must return immeadiately regardless of what is in c.  
  385.                 
  386.  
  387.             LPOUT c                                                    
  388.             LPOUT(c)  Likewise,  unadorned output of c to the printer.
  389.                 LPOUT(c) must return immeadiately regardless  of  what
  390.                 is in c.  
  391.                 
  392.  
  393.             POREADY                                                    
  394.             POREADY  This  define returns non zero if the line printer
  395.                 is ready to accept a character.  It must always return 
  396.                 0 if LPOUT(c)  would  not  return  immeadiately.    If
  397.                 POREADY  is  slow,  enabling  the printer at high baud
  398.                 rates may cause characters to be lost.  
  399.                 
  400.  
  401.             TTYOUT c                                                    
  402.             TTYOUT(c) Unadorned output of c to the local display.  YAM 
  403.                 checks  that  the  local  display  is   ready   before
  404.                 executing TTYOUT(c).        TTYOUT(c)    must   return
  405.                 immeadiately regardless of what is  in  c.    Caution:
  406.                 don't  use bdos function 6 which has special cases for
  407.                 0xFE and 0xFF.  
  408.                 
  409.  
  410.  
  411.      YAM/XYAM                     Version 4.24                       Page 4
  412.  
  413.  
  414.      Yam Implementation Manual  Revised 9-10-83                      Page 5
  415.  
  416.  
  417.             CICHAR                                                     
  418.             CICHAR Unadorned unconditional console input.   This  must
  419.                 not  trap  on  any  control characters needed for host
  420.                 communications.  
  421.                 
  422.  
  423.             MYSYSTEM                                                   
  424.             MYSYSTEM Defining this causes yam2 to be compiled  with  a
  425.                 call  to yam4.c for handling the Compuserve A protocol
  426.                 for file transfer (see 2 mode).  Unless you know  what
  427.                 you are doing, you should use the following even if it 
  428.                 is  a  bloody  lie  as xftran may not accept something
  429.                 original.  If this is included, you will need  yam4.c,
  430.                 otherwise not.  
  431.                 
  432.                 #define MYSYSTEM "#CPMHeath/Zenith,CC,HC,PA,PL\015" 
  433.                 
  434.                 
  435.  
  436.             KBDBRK                                                      
  437.             KBDBRK This defines the keyboard character that translates 
  438.                 to a  break in yam3.  It should not be a normally used
  439.                 character.  
  440.                 
  441.  
  442.             FNXEXT                                                     
  443.             FNXEXT   This   character   unconditionally   exits   term
  444.                 function.  Normally, this is defined only if a special 
  445.                 function  key  is  available  as  that  code cannot be
  446.                 transmitted.  If FNXEXT is  defined,  FNXREP  (replot)
  447.                 must also be defined.  
  448.                 
  449.  
  450.             ANSWERBACK                                                 
  451.             ANSWERBACK  This  string is transmitted from term function
  452.                 in Q mode in response to keyboard ^F  or  ^E  received
  453.                 from remote.    Conventionally, ANSWERBACK consists of
  454.                 "\\r\\n<phone-number> <user  name>  <city>\\r\\n\\021"
  455.                 where  city  is  a  three  or four letter abbreviation
  456.                 specified  by   Western   Union   Telegraph   company.
  457.                 Teletype  answerbacks  are limited to 20 characters, a
  458.                 limitation which needn't concern us.  
  459.                 
  460.  
  461.             PHONES                                                     
  462.             PHONES This file (usually "A:YAMPHONE.T") contains a  list
  463.                 of names,  phone  numbers,  and  baudrates.  The names
  464.                 must be in lower case.  
  465.                 
  466.  
  467.             HELPFILE                                                   
  468.             HELPFILE Contains a short summary of  commands  and  other
  469.                 useful  information  about  YAM suitable for use as an
  470.                 online cribsheet.  Currently a  helpfile  exists  only
  471.                 for XYAM.  
  472.                 
  473.  
  474.             CDOS                                                       
  475.             CDOS  Makes  YAM work on CDOS operating system by deleting
  476.                 CP/M 2.2 operations such  as  user  number,  calculate
  477.                 file length,  etc.    If  you have CP/M 1.4, CDOS just
  478.                 might do the trick for you.  Since my Cromenco  system
  479.                 has refused to work for the batter part of a year now, 
  480.                 there  is  an  excellent chance yam won't compile with
  481.                 CDOS defined.  In addition, newer versions  of  BDS  C
  482.                 require  the  CP/M  2  features, and yam won't compile
  483.  
  484.  
  485.      YAM/XYAM                     Version 4.24                       Page 5
  486.  
  487.  
  488.      Yam Implementation Manual  Revised 9-10-83                      Page 6
  489.  
  490.  
  491.                 with earlier versions.  So there.  
  492.                 
  493.  
  494.             KBMASK                                                     
  495.             KBMASK  This  is  normally  0177  to  strip  parity   from
  496.                 keyboarded characters, but may be 0377 if a full 8 bit 
  497.                 keyboard is used.  
  498.                 
  499.  
  500.             USERINIT                                                   
  501.             USERINIT  Causes  init()  to call a user supplied function
  502.                 userinit().  This may be  used  to  set  up  interrupt
  503.                 vectors, global variables, etc.  Note that userinit is 
  504.                 called in response to the init command.  
  505.                 
  506.  
  507.             USEREXIT                                                   
  508.             USEREXIT  Defining this causes a call to userexit() before
  509.                 any normal exit() call.  If userinit() has  ``stolen''
  510.                 something  from  the  operating  system,  (such  as an
  511.                 interrupt  vector)  userexit  should  ``return''   it.
  512.                 Since  yam is often exited with control C, that should
  513.                 be trapped also.  
  514.                 
  515.  
  516.             TERMREPLOT                                                 
  517.             TERMREPLOT A string enclosed in quotes  which  clears  the
  518.                 screen  and  sets  the terminal to the mode desireable
  519.                 for replot.  Replot assumes that TERMREPLOT turns  off
  520.                 line wraparound.  
  521.                 
  522.  
  523.             TERMRESET                                                  
  524.             TERMRESET  A  string  enclosed  in  quotes  which sets the
  525.                 terminal to the mode desireable for the term  function
  526.                 and clears  the  status  line  (if  any).  This string
  527.                 should not clear  the  screen.    It  should  set  the
  528.                 terminal  in the mode(s) expected by  vi or other host
  529.                 based screen editors with which YAM is to be used.  In 
  530.                 particular, special effects  (if  any)  of  TERMREPLOT
  531.                 should be negated.  
  532.                 
  533.  
  534.             TERMINIT                                                    
  535.             TERMINIT This string should unconditionally initialize and 
  536.                 clear the screen.  
  537.                 
  538.  
  539.             CLEARS                                                     
  540.             CLEARS  String to clear the screen and home cursor without
  541.                 changing modes.  
  542.                 
  543.  
  544.             CLEARL                                                     
  545.             CLEARL String to return cursor to left  margin  and  clear
  546.                 the current  line.    If the "clear line" command does
  547.                 not return the  cursor,  a  carriage  return  must  be
  548.                 included in this string.  
  549.                 
  550.  
  551.             INTOREV                                    
  552.             INTOREV String to turn on reverse video.  
  553.                 
  554.  
  555.             OUTAREV                                     
  556.             OUTAREV String to turn off reverse video.  
  557.                 
  558.  
  559.  
  560.  
  561.      YAM/XYAM                     Version 4.24                       Page 6
  562.  
  563.  
  564.      Yam Implementation Manual  Revised 9-10-83                      Page 7
  565.  
  566.  
  567.             RXNONO                                                      
  568.             RXNONO Define this as a string of characters, any of which 
  569.                 would  cause  your  terminal and/or cbios grief if not
  570.                 suppressed by term function.  
  571.                 
  572.  
  573.             STATLINE                                                   
  574.             STATLINE Define this if your terminal has an extra  (viz.,
  575.                 25th)  line  usable  for status information which does
  576.                 not scroll up nor interfere with scrolling.   lpstat()
  577.                 writes  to  the  entire  status line, clearing out any
  578.                 previous contents.  pstat()  writes  starting  at  the
  579.                 48th  position, not disturbing any information written
  580.                 by lpstat().  
  581.                 
  582.  
  583.             T4014                                            
  584.             T4014 Special code for storage tube terminals.  
  585.                 
  586.  
  587.             NOSCROLL                                                    
  588.             NOSCROLL Special considerations for terminals which do not 
  589.                 scroll, such as storage tube terminals.  
  590.                 
  591.  
  592.             MODEMSTUFF                                                 
  593.             MODEMSTUFF If you provide routines setbaud(),  readbaud(),
  594.                 bye(),  and onhook(), define MODEMSTUFF to exclude the
  595.                 default dummy routines.  
  596.                 
  597.  
  598.             AUTODIAL                                                   
  599.             AUTODIAL If your modem supports autodial, write  your  own
  600.                 version  of dial() and define AUTODIAL to suppress the
  601.                 default routine.  
  602.                 
  603.  
  604.             FLIP                                                       
  605.             FLIP If you have a flip() subroutine in  your  yam5,  this
  606.                 causes flip   to  be  included  as  a  command.    See
  607.                 yam5pmmi.c for an example of a flip routine.  
  608.                 
  609.  
  610.             MIERROR                                                    
  611.             MIERROR If your uart has a  separate  register  for  error
  612.                 bits   (not  the  register  that  holds  receive  data
  613.                 available), mierror  should  be  an  expression  which
  614.                 returns non zero in case of overrun, framing, or other 
  615.                 error, but  not  carrier  dropout.    This  version of
  616.                 readline has not been tested.  
  617.                 
  618.  
  619.             MIREADYERROR                                               
  620.             MIREADYERROR Define this if data available and  the  error
  621.                 bits  are  in the same register, especially if reading
  622.                 that register clears some error bits, or if the  error
  623.                 bits are valid only if data available.  
  624.                 
  625.  
  626.             IOTYPE                                                     
  627.             IOTYPE  This  defaults to char for i/o mapped systems with
  628.                 256 ports.  This may be defined to  unsigned  or  long
  629.                 for  systems  with  more  ports (8086 or memory mapped
  630.                 i/o).  
  631.                 
  632.  
  633.             Z19                                                        
  634.             Z19 Generates output for Z19 functions, especially  status
  635.                 (25th) line.  
  636.  
  637.  
  638.      YAM/XYAM                     Version 4.24                       Page 7
  639.  
  640.  
  641.      Yam Implementation Manual  Revised 9-10-83                      Page 8
  642.  
  643.  
  644.                 
  645.  
  646.             USQ                                                        
  647.             USQ  Allows  the  type  command to automatically recognize
  648.                 squeezed files and display them in ASCII form.    Adds
  649.                 1000 hex to program size.  
  650.                 
  651.  
  652.             RXLOG                                                      
  653.             RXLOG  Log  all  files  received  from  remote  systems in
  654.                 RXLOG.  Information stored includes user number, disk, 
  655.                 filename, baudrate, and the name of the remote  system
  656.                 given in the last call command (LASTCALR in xyam).  
  657.                 
  658.  
  659.             TXLOG                                                      
  660.             TXLOG  Log  all  files  transmitted  to  remote systems in
  661.                 TXLOG.  Information same as above.  
  662.                 
  663.  
  664.             LOGFILE                                               
  665.             LOGFILE Must be defined if either of the above are.  
  666.                 
  667.  
  668.             NATHAN                                                      
  669.             NATHAN Students of American History will recall the famous 
  670.                 patriot Nathan Hale who said "I regret that I have but 
  671.                 one asterisk for my country."  Octal code 052.  
  672.           
  673.  
  674.  
  675.      5  Tuning Parameters  
  676.      5. Tuning Parameters 
  677.  
  678.           Yam uses a number of tuneable  parameters  for  portability.
  679.           The  values  used  depend strongly on the speed of functions
  680.           and operating system calls used to interrogate the  keyboard
  681.           and modem  port.   They are also affected by the clock speed
  682.           and code quality of the compilier used.    These  parameters
  683.           have  been  added  on a somewhat ad hoc basis, so one should
  684.           grep the source files  to  determine  the  extent  of  their
  685.           effects.  
  686.           
  687.  
  688.                 
  689.  
  690.             CLKMHZ                                                     
  691.             CLKMHZ This   is  a  ``master''  parameter.    Use  it  to
  692.                 calibrate  the  timeout  in  readline  (see  yam5   or
  693.                 equivalent).  
  694.                 
  695.  
  696.             MOMCAL                                                      
  697.             MOMCAL Should give a delay (see yam3) as short as possible 
  698.                 while   still   allowing   the   user  to  comfortably
  699.                 double-stroke control-E or control-V.  
  700.                 
  701.  
  702.             SCREAMER n                                                  
  703.             SCREAMER n Compiles a call to yterm() instead of term() if 
  704.                 baudrate > n and no special modes have been set  which
  705.                 would be  rendered  useless.    Without yterm, maximum
  706.                 baudrate may be limited to much less than 9600.  Yterm 
  707.                 is written in assmebly language and must  be  modified
  708.                 slightly    according    to    the    local   hardware
  709.                 configuration.  The yterm function is in yam9.csm.  
  710.                 
  711.  
  712.  
  713.      YAM/XYAM                     Version 4.24                       Page 8
  714.  
  715.  
  716.      Yam Implementation Manual  Revised 9-10-83                      Page 9
  717.  
  718.  
  719.                 
  720.                 Note: if you miss only the first few characters  in  a
  721.                 line,  and  if  your  system  has memory mapped video,
  722.                 screamer won't help you much; you need to speed up the 
  723.                 scrolling process!  Note  that  yterm  lacks  much  of
  724.                 term's functionality.    On  a  Z89  with  direct bios
  725.                 keyboard  input,  yterm  functions   at   19200   baud
  726.                 (assuming 19kb crt port!).  
  727.                 
  728.  
  729.             KBDNOW             !                                       
  730.             KBDNOW  This  forces  term  function  to  interrogate  the
  731.                 keyboard each time a character  is  displayed  to  the
  732.                 console rather than when there are no modem characters 
  733.                 waiting to   be   displayed.     With  computers  with
  734.                 interrupt-buffered  modem  ports,  this  #define  will
  735.                 allow  the  keyboard to always get a word in edgewise.
  736.                 It is not recommended otherwise.  
  737.                 
  738.  
  739.             ESCCAL                                                     
  740.             ESCCAL Many terminals send escape  sequences  for  certain
  741.                 keys.   In  some  configurations, these sequences will
  742.                 fail to transmit properly because the  modem  (300  or
  743.                 1200  baud)  cannot transmit the characters as fast as
  744.                 the terminal generates them.  I ESCCAL is defined, yam 
  745.                 will check for rapid escape sequences and  buffer  the
  746.                 following characters.    ESCCAL  should  be set to the
  747.                 lowest number (shortest delay) that will recognize the 
  748.                 sequences.  This logic is not needed if  the  keyboard
  749.                 is interrupt driven.  This feature may not work if the 
  750.                 remote  is  sending  data at maximum speed the instant
  751.                 the function key is used.  For more information, study 
  752.                 the functions on yam3.c that  reference  abptr  and/or
  753.                 abend.  
  754.                 
  755.  
  756.             LOWWATER                                                   
  757.             LOWWATER  When  receiving  text  from  the  host  in  term
  758.                 function, term transmits  XOFF  (DC3)  when  the  free
  759.                 buffer  space gets down to LOWATER, unless Jovemode is
  760.                 set.  
  761.                 
  762.  
  763.             LINKPORT                                                   
  764.             LINKPORT Causes  compilation  of  code  to  implement  the
  765.                 ``link'' command.    See ``ymlink.h'' for typical link
  766.                 parameters.  
  767.  
  768.             LHPORT                                                     
  769.             LHPORT Local Host port to use for local host  during  link
  770.                 command.  
  771.  
  772.             LIDPORT                                     
  773.             LIDPORT Modem data port for link command.  
  774.  
  775.             LISPORT                                       
  776.             LISPORT Modem status port for link command.  
  777.  
  778.             LIREADY                                                    
  779.             LIREADY  Defines  a  function  which tests for a character
  780.                 available from modem when in link command.  
  781.  
  782.             LCDO                                              
  783.             LCDO Test for carrier drop-out in link command.  
  784.  
  785.             LICHAR                                                     
  786.             LICHAR Returns next character  from  modem  when  in  link
  787.  
  788.  
  789.      YAM/XYAM                     Version 4.24                       Page 9
  790.  
  791.  
  792.      Yam Implementation Manual  Revised 9-10-83                     Page 10
  793.  
  794.  
  795.                 command.  
  796.  
  797.             LOREADY                                                    
  798.             LOREADY  Test  for  link  modem  ready  to  accept another
  799.                 character.  
  800.  
  801.             LOUT x                                                     
  802.             LOUT(x) Macro outputs a character  to  modem  port  during
  803.                 link command.  
  804.  
  805.             LIBREAK                                                   
  806.             LIBREAK Test for break from modem when in link command.  
  807.  
  808.             CLRLIBREAK                                         
  809.             CLRLIBREAK Function to clear LIBREAK indication.  
  810.                 
  811.           
  812.  
  813.  
  814.      6  XYAM Differences  
  815.      6. XYAM Differences 
  816.  
  817.           
  818.  
  819.                 XYAM  is  produced  by  defining  XMODEM  in  the file
  820.                 'yamsys.h'.  Consult 'yamz89xm.h' and  'yamx.sub'  for
  821.                 an example.      Certain   #defines   are   especially
  822.                 applicable to XYAM: 
  823.                 
  824.  
  825.             RESTRICTED                                                 
  826.             RESTRICTED Certain  commands  and  options  are  disabled.
  827.                 Filenames  with  '.BAD' extensions and files with $SYS
  828.                 or TAG2 bits set cannot be  opened.    They  will  not
  829.                 appear with DIR or DIRR commands.  
  830.                 
  831.                 A  file with extension of '.COM' will be uploaded with
  832.                 a '.OBJ'  extension.    Existing   files   cannot   be
  833.                 overwritten.   If  a  file  is received (r command) in
  834.                 error, it will be unlinked.  
  835.                 
  836.  
  837.             CDO                                                        
  838.             CDO Define a test for carrier drop out so that  XYAM  will
  839.                 automatically exit T(erm) function when the connection 
  840.                 is broken.  
  841.                 
  842.  
  843.             BYEPROG                                                    
  844.             BYEPROG  Bye,  O  and OFF commands chain to BYEPROG.COM if
  845.                 BYEPROG is defined (as a string).  For systems wishing 
  846.                 to use a BYE.COM to request comments.  
  847.           
  848.  
  849.  
  850.      7  Recent Revisions Enhancements to YAM  
  851.      7. Recent Revisions/Enhancements to YAM 
  852.  
  853.  4.26x Converted to CI C86 syntax for CP/M 86 12-19-83 (Paul Homchick).
  854.  4.26
  855.  4.25
  856.  4.24 Added chek command to Lattice and CC86 16 bit versions 8-25-83.  
  857.  4.22 Minor changes to Jovemode 7-21-83.  
  858.  4.21 Added Jovemode 7-18-83.  
  859.  4.20 Changed uses of certain macros to  function  calls  to  conserve
  860.           memory.  
  861.  
  862.  
  863.  
  864.      YAM/XYAM                     Version 4.24                      Page 10
  865.  
  866.  
  867.      Yam Implementation Manual  Revised 9-10-83                     Page 11
  868.  
  869.  
  870.  4.13 Changed crck command printout format.  Function init() now calls 
  871.           chngport rather  than  setting  port values directly.  Hp125
  872.           version checks for proper port number.  6-25-83 
  873.  4.12 6-12-83 yam1.c default term file xmit mode name (as  printed  in
  874.           ``s''   command)  changed  from  ``IMAGE''  (misleading)  to
  875.           ``normal''.  
  876.  4.11 6-9-83 chngport() in yam5.c return value now checked for  ERROR.
  877.           (Seiko  version checks for valid port number.) Bug in CPM-86
  878.           getfree() corrected.  
  879.  4.08 5-30-83 Changes in yam7.c:  BDS  C  1.50a  broke  fopenaa  code.
  880.           Fopenaa code removed and refrences changed to fappend in BDS 
  881.           lib.  
  882.  4.08  Changed  replot so screen is cleared whenever buffer pointer is
  883.           backed up.   ESC  characters  are  counted  in  replot  line
  884.           counting.  
  885.  4.06  Corrected  yam3  and user manual re operation of w and p modes.
  886.           The off command now dumps and closes any open files.  The  m
  887.           command closes any send file before changing ports.  
  888.  4.04 Fixed yam3 so Ctlview would indicate paritied characters.  Added 
  889.           7-bit  mode  to  enable  file  transfers with Regulus and/or
  890.           other brain damaged operating systems.    This  latest  frob
  891.           requires  changes  to readline() and sendline() to work; see
  892.           yam5.c (8 bit version).  Removed archive bit (Nof3) stuff to 
  893.           conserve space on 8 bit versions.  Fixed view option problem 
  894.           with 16 bit yam2.c.  Batch send now skips  over  files  that
  895.           can't be opened, except for the first.  
  896.  4.03 Fixed yam3 so CPMEOF is not sent in normal mode.  
  897.  4.02 Added dump, sum, and wc commands to 16 bit versions.  
  898.  4.01 Added extended file information to 16 bit versions.  
  899.  3.53 Some changes in yam3.c for better replot displays with terminals 
  900.           lacking STATLINE.  
  901.  3.52 Added br (break) command and KBDBRK.  Yterm() now updates Lskcnt 
  902.           so  the  replot will pgae back the same way whether yterm is
  903.           in use.  This was accomplished by a change  in  the  calling
  904.           sequence for yterm.  
  905.  3.51 Added userexit code.  
  906.  3.50 Added replot buffer search commands.  
  907.  3.47  KBDNOW  define  added  to  force  keyboard  interrogation after
  908.           displaying data (yam3).  Should only be used if  input  from
  909.           modem is buffered or if high baud rates are not needed.  
  910.  3.46 Clear status line after type/list command.  
  911.  3.45  Removed spurious dumprxbuff in yam1 that caused loss of data if
  912.           capture file was opened with partially full  buffer.    Also
  913.           clear  status  line after s and r commands if file transfers
  914.           successful.  VERSION now lives in yam1.  
  915.  3.44 Name changes and typo corrections for portability.  
  916.  3.43 Nlmode and  crmode  now  affect  file  xmsn  with  the  sendecho
  917.           function as well as term.  
  918.  3.42  inp()  and  outp() calls in yam3.c changed to equivalent macros
  919.           for portability.   Disk  block  calculation  fixed  re  Paul
  920.           Homchick.  
  921.  3.41 Keyboard  excape  sequences buffered (see ESCCAL).  LOOPBACKNONO
  922.           and u command removed.  
  923.  3.39 Modem port selection has been moved from yam1 to yam5.    CISlen
  924.           is no  longer  a  settable  parameter.    Low is no longer a
  925.           settable parameter.   All  parameter  commands  now  take  a
  926.           decimal number; this avoids problems encountered in previous 
  927.           versions when  attempting  to set GOchar to colon.  FE sends
  928.  
  929.  
  930.      YAM/XYAM                     Version 4.24                      Page 11
  931.  
  932.  
  933.      Yam Implementation Manual  Revised 9-10-83                     Page 12
  934.  
  935.  
  936.           an  ascii  file  to  computers  with  character  echo   (pip
  937.           file=tty:).   A  bug  which  caused spurious XOFF to be sent
  938.           when sending file  in  term  mode  has  been  fixed.    Z100
  939.           version.  9-16-82 
  940.  3.37  Increased  some  timeouts  in yam2.c for better operations with
  941.           sluggish remotes.  9-1-82 
  942.  3.35 NULL sends break in yam3 (was ^B^B). 8-28-82 
  943.  3.34 Changed starting point of replot command and also speeded it  up
  944.           by using externs.  8-1-82 
  945.  3.33 Changed  yterm()  to assembly subroutine, p/o yam9.csm.  Changed
  946.           yam8 to .csm format also.  Removed y command  (selection  is
  947.           automatic).  7-31-82 
  948.  3.31  Added  A  prefix,  LINKPORT,  and  completed Micro-Com autodial
  949.           routine.  7-23-82 
  950.  3.30 Added k  flag  for  1024  byte  block  FTP,  as  well  as  other
  951.           improvements  to  yam2.c  7-11-82  Added y command, a faster
  952.           subset of the t command.  Capture to file  now  ignores  CR,
  953.           trnaslates LF   into   CR-LF   unless  image  mode.    Moved
  954.           time-sensitive functions from yam7 to yam10, allowing memory 
  955.           savings by not using -o on yam7.c.  
  956.  3.29 Removed Join mode.  Added x command.   "Added"  TTYOUT,  MODOUT,
  957.           and  LPOUT  macros (with argument) to reduce conditionals in
  958.           YAM3.C and YAM7.C 6-26 
  959.  3.28 Added FLIP for PMMI type modems.  The memory usage  change  made
  960.           in  3.26  has  been  cleaned  up by use of a union to assure
  961.           correct memory layout regardless of the compiler  used.    A
  962.           yam5pmmi.c file for the pmmi modem now exists.  6-12-82 
  963.  3.27 Changed autodial() function for CAFPERS. 6-11-82 
  964.  3.26  Further  changes  to  aid  maintenance of different versions of
  965.           yam.   Needs  BDS  C  1.46  to   compile   due   to   nested
  966.           conditionals.  init() moved to yam7.c.  Memory usage changed 
  967.           allowing larger buffer area.  
  968.  3.25 NATHAN  defined.    CIS  protocol  entry  changed  to help error
  969.           recovery.  5-31-82 
  970.  3.24 Corrected usage of CLKMHZ 
  971.  3.23 Official 8-bit version.  Added -, o mode (Onetrip),  and  Cislen
  972.           parameter.  Jeff Martin's corrections added to manual.  
  973.  3.22  Unofficial  Version. Includes CIS/MNET A file transfer protocol
  974.           optional  with  yam4.c   (see   MYSYSTEM).   Changed   Cis02
  975.           handling.   Changed  statline  in  yam2 to display number of
  976.           characters received  in  kilobytes.    Some  coding  changes
  977.           reflecting  awkward  sequences  discovered  while porting to
  978.           CP/M-86 on IBM PC version.  
  979.  3.20 New Base Version (for dif's).  Changed error printouts in  yam2.
  980.           Documentation update.  
  981.  3.19 J mode joins short lines when at less than column 40.  
  982.  3.18  N  mode  now  prepends  \\r  to  \\n  when the term function is
  983.           receiving a file.  1-1-82.  
  984.  3.17 Added E parameter 12-19-81.  
  985.  3.16 Setting Squelch (TS ES FS or DS) automatically sets  Dumping  to
  986.           not  Squelch.  In  Twxmode  half duplex, transmitted file is
  987.           copied to receive file (if open), and is  printed  if  print
  988.           mode is on.  12-16-81.  
  989.  3.15 Added  term  Q mode for TWX operations with ANSWERBACK.  Changed
  990.           wcgetsec() logic so noise hits on the line before the  first
  991.           sector  do  not  cause  a  speedup in the timeout parameter.
  992.           12-14-81.  
  993.  
  994.  
  995.  
  996.      YAM/XYAM                     Version 4.24                      Page 12
  997.  
  998.  
  999.      Yam Implementation Manual  Revised 9-10-83                     Page 13
  1000.  
  1001.  
  1002.  3.14 Added append option for receiving files,  replot  K  subcommand,
  1003.           changed  previous  K subcommand to Z. In N mode, keyboard CR
  1004.           is transmitted as NL. 12-11-81.  
  1005.  3.13 For non STATLINE, changed "Awaiting Pathname  NAK"  to  "+"  and
  1006.           "Awaiting initial NAK" "^".  
  1007.  3.12  Added  replot  X  and  K subcommands, changed type unsqueeze to
  1008.           avoid array overflow problems on long pathnames.  Added term 
  1009.           function break subcommand (requires  sendbrk()  function  in
  1010.           yam5.c).  11-5-81.  
  1011.  3.11  Added  Cis02  mode for Compuserve access, fixed logfile problem
  1012.           (first few files didn't show).  Tab expansion  fix  courtesy
  1013.           Jeff Martin (I thought it was the Z89!) 11-28-81.  
  1014.  3.10 Changed yam10.c to stop printout on ^Z in file 11-22-81.  
  1015.  3.09 Cosmetic change to type command in xyam.  11-17-81.  
  1016.  3.08   Added   USERINIT   option  useful  for  some  implementations.
  1017.           11-14-81.  
  1018.  3.07 Minor change to yam1.c  for  benefit  of  memory-mapped  systems
  1019.           11-11-81.  
  1020.  3.06 IOTYPE added for memory mapped systems List command now distinct 
  1021.           from type.  Cosmetic changes to opentx().  11-8-81.  
  1022.  3.05  Added  automatic  recognition  and  display  of squeezed files.
  1023.           Inclusion of the unsqueeze feature (#define USQ) may require 
  1024.           clink -r 800 11-7-81.  
  1025.  3.04 Added GOchar parameter, enhanced view mode 11-6-81.  
  1026.  3.03 Number of sectors and  xmsn  time  printed  when  opening  files
  1027.           11-5-81.  
  1028.  3.02 Xyam resets user number when exec'ing BYEPROG. 11-01-81.  
  1029.  3.01 Added INITBAUD. Your yam?????.h may need revision.  10-31-81.  
  1030.  3.00  Nomenclature  changed  to  facilitate differential file updates
  1031.           10-25-81.  
  1032.  2.34 Added era and NATHAN commands, O mode.  10-24-81.  
  1033.  2.33 Changed Unixish "FILE" to struct _buf in yam.h.  10-21-81.  
  1034.  2.32 Added BYEPROG define, deleted T, U, and W  commands  from  XYAM.
  1035.           10-18-81.  
  1036.  2.31  Corrected  tab  expansion  and  kbd XON XOFF handling in yam3.c
  1037.           10-17-81.  
  1038.  2.30 Supports CRC error  checking  option  compatible  with  XMODEM45
  1039.           10-15-81.  Chat function now in both yam/xyam.  
  1040.  2.24 Added  free  disk  space  report  on  a:  etc.  command, Upchuck
  1041.           function.  
  1042.  2.23 Added "crck" command.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.      YAM/XYAM                     Version 4.24                      Page 13
  1063.  
  1064.