/*
 * Copyright 1992 Stan Burton
 *
 * Permission to use, copy, modify, distribute, and sell this software
 * and its documentation for any purpose is hereby granted without fee,
 * provided that the above copyright notice appear in all copies and
 * that both that copyright notice and this permission notice appear in
 * supporting documentation, and that the name of Stan Burton not be used
 * in advertising or publicity pertaining to distribution of the software
 * without specific, written prior permission.  I make no representations
 * about the suitability of  this software for any purpose.  It is
 * provided "as is" without express or implied warranty.
 *
 * THE ABOVE-NAMED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO EVENT
 * SHALL STAN BURTON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
 * OF THIS SOFTWARE.
 *
 * Author:
 *		Stan Burton
 *
 *		1978 26 St. SE
 *		Medicine Hat, AB, CANADA
 *              T1A 2G8
 */

SOME OF THESE PROGRAMS REQUIRE AMIGADOS 2.0

slink requires V2.0, slink1.3 is a slower AmigaDOS V1.3 compatible
replacement for slink.  All other programs are V1.3 and 2.0 compatible.


INSTALLATION

Installation is simple. If you are reading this, and logically you must
be, then step 1 is done.
 2.  The directory containing this file and the other files unpacked from
       the archive should be added to your path.
 3.  Assign ADev11: to this directory.  This is required mainly for the
       C compiler when released.
 4.  Read the docs! I know you won't until you run into trouble, but make
       sure you have read them before you come to me for help.


COMMON PROBLEMS

slink reports unknown hunk type
	the assembler may have been aborted leaving a partial file
	the assembler source file may have code outside of a segment
sc11 reports a problem in byte_length
	certain errors in the C source file may cause SC11 to emit
	  68000 instructions.  For example
	    char c, *chr_ptr;
	    c = *(char *)*chr_ptr;
	this may be a legitimate bug.  If there is nothing wrong
	  with the C source, reduce the source file as much as
	  possible and send it to me.


RELEASE CHANGES

KNOWN BUGS ---------------------------------
SAsm - a DC.l with a symbol can cause assembler to hang
the docs should have elaborative error message descriptions
SDis requires at least one non-executable byte after the last executable
  opcode in memory or it will not print out the disassembled data

1.2 ----------------------------------------
HCload was reworked in many ways by its original author Ron Eirich.
slink - added a new map mode to the map output.  This displays where, in
  memory, all the hunks from all the modules were placed.
SDis was in far worse shape than I knew.  Many bug fixes and improvements.
sasm mishandled direct references to XREF'd symbols by instructions
  having a prebyte
slink reports of address out of range now include the hunk relative
  address AND the module name AND the absolute address
SAsm - use of an EQUated symbol as the indexed offset or direct address
  of a BSET or BCLR could, in some cases, cause an unusable .o file
  to be produced.
lib11.lib new functions for printing in octal are __put_oct_str_sm,
  __put_oct_str, __put_oct_sm,  __put_oct.
lib11.lib all put_functions now use a symbol called __z_blank that is
  a leading zero blanking (lzb) flag/counter.  Its value is the number of
  leading digits that you want to consider using lzb on.  For example,
  these values printed with _put_asc (a word (5 digit) routine)
  __z_blank | value = 99 | value = 9 | value = 0
  ----------|------------|-----------|----------
       3    |    99      |    09     |    00
       4    |    99      |    9      |    0
       5    |    99      |    9      |
  Normally with a 5 digit routine you would use __z_blank = 4;
lib11.lib sm functions __put_asc_sm, __put_hex_sm, __put_asc_str_sm and
  __put_hex_str_sm now accept the value in the B register.  There are
  new functions __put_asc_usm, __put_asc_str_usm and.
SAsm - fcb and fdb did not treat constants the same as DC.b, particulary
  with respect to symbols and XREFs.
SAsm - fixed a long standing bug in branches to labels in the second or
  later sections of a segment within a module.  This could have produced
  incorrect code in some cases in others it would appear as a branch out
  of range error.  This also affected the use of the '.' symbol.
lib11.lib all functions are now preceeded by __ (assembler level). Done
  for compatibility with C environment.
lib11.lib the functions put_asc, put_asc_sm, put_asc_u, put_hex and
  put_hex_sm now modify the X register.  There are also new versions
  put_asc_str, put_asc_str_sm, put_asc_str_u that put the result in the
  string pointed to by the X register input.
SAsm now accepts the .z force on XREF and SEG.  This causes all symbols
  defined by such an XREF or declared in such a segment to use zero page
  addressing where applicable.  At the same time the restriction on
  automatic generation of page zero references with constant (not symbolic)
  addresses is lifted.
slink has been changed to apply special treatment to segments with the
    name IDATA.  (see docs for more details)
SAsm reported the wrong version number while running
SAsm undefined symbols were reported obliquely, due to a change in R1.1 I
    believe.
SAsm would not allow a symbol to be XDEF'd after it was defined.
SAsm an error resulting from a change just prior to the original release
    made it impossible to successfully reuse a segment within the same
    source file.
SAsm (HC11) has been modified to accept three new pseudo-mnemonics.  They
    are ANDD, EORD, ORD from the 68HC16 instruction set.  They produce, in
    the case of ANDD, an ANDB followed by an ANDA.  Therefore the result
    is correct but only the N bit of the CCR flags is correct.  The
    mnemonics are valid with all HC11 addressing modes.  This change was
    made to prepare for the C compiler and was done in the assembler
    because it could not be done with macros.
1.1 ----------------------------------------
SDis became confused if the S-record file to be dis-assembled contained a
    value for address FFFF. This would usually result in a crash.
SDis default for (y/N) question would default to Y instead
SAsm failed to recognize that a negative number or expression result >= -128
    could fit into an 8 bit immediate operand resulting in an illegal
    addressing mode error for instructions such as this.
	ldab	#1-2
SAsm - Minor improvement in pass handling under special conditions
SAsm - Unary operations and binary operations involving a single XREF'd symbol
    and an operator other than addition are not legal, but were not detected
    by the assembler and produced incorrect code.
It was not noted anywhere in the documents that some of the programs require
    AmigaDOS 2.0.  Now only slink does and there is a slink1.3 replacement
slink was accessing memory on an odd boundary which would cause a crash on
    68000 68010 processors
The 68HC11 registers include file 68HC11.inc is now included in the release.
    It is not quite complete yet ... as time permits.
A new utility, MHex, has been added which allows conversion of S record
    files to straight binary.  The source is also included in case you have
    a particular format requirement.  I would appreciate receiving any such
    conversions and I will try to make one grand unified utility out of them.
A simple monitor program is provided, along with source, I like it because
    its extensible command set allows me to easily develop command driven
    programs.
New library functions for printing values as hex ascii are available.
HCload was modified to work with any serial-type device and any unit number.
Two of the listed library functions were somehow left out of the library.

1.0 ----------------------------------------
SAsm, slink and slib now handle 68HC16 mnemonics and addressing modes as
far as I have been able to test.  I do not have a 68HC16 processor and
have relied on Motorola printed documents.

The docs files other than the .ps file are probably out of date.  They are
included only for those who don't have access to a postscript printer or
converter.

I can be reached at:
internet sburton@dres.dnd.ca      <= NOTE: change
BIX      sburton
mail     Stan Burton
         1978 26 St. SE
         Medicine Hat, AB CANADA
         T1A 2G8
