home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 213a.lha / A68k_v2.4 / History.log < prev    next >
Text File  |  1988-12-28  |  26KB  |  738 lines

  1.        A 6 8 K      M A I    N T E N    A N C E       H I S T O R Y
  2.  
  3.  
  4. Version    1.00 (Charlie Gibbs, June 18, 1987) - initial release
  5.  
  6.  
  7. Version    1.01 (Charlie Gibbs, August 20,    1987)
  8.  
  9.     The following bugs in version 1.00 have    been corrected:
  10.  
  11.           -    Long-word constants and    storage    areas were being
  12.         aligned    on a double-word boundary.  The    only place
  13.         where double-word alignment is now forced is at    a
  14.         break between SECTIONs,    since the length of an
  15.         AmigaDOS hunk must be a    multiple of 4 bytes.
  16.         (CNOP 0,4 can still be used if double-word
  17.         alignment is desired by    the programmer.)
  18.  
  19.           -    If a label on an END statement or the first statement
  20.         of a SECTION was named in an XDEF statement, it    would
  21.         not be written to the object code file.     The latter
  22.         case includes both the label of    a SECTION directive
  23.         and the    label of the first executable instruction in
  24.         the absence of any SECTION directives (defaulting to
  25.         an unnamed CODE    section).  In the final    case (default
  26.         unnamed    CODE section), references to XREF symbols
  27.         in the first statement would also not be written
  28.         to the object code file.
  29.  
  30.           -    If the last statement in the source file was not
  31.         terminated with    a newline character (premature EOF),
  32.         it was being ignored altogether.
  33.  
  34.           -    A register list    as the source operand of a MOVE
  35.         instruction was    not being flagged as an    error.
  36.         (MOVE to a register list was being flagged, however.)
  37.  
  38.           -    MOVE from USP was generating incorrect code.  Also,
  39.         MOVE from SR or    CCR to an address register was
  40.         generating incorrect code rather than being flagged.
  41.  
  42.  
  43. Version    1.02 (Charlie Gibbs, September 9, 1987)
  44.  
  45.     The following bugs in version 1.01 have    been corrected:
  46.  
  47.           -    Duplicate labels were not being    flagged.
  48.  
  49.           -    XDEF symbols were not being dumped to the
  50.         object code file when the -d option was    set.
  51.  
  52.     The following enhancements have    been added:
  53.  
  54.           -    A header file is now supported.     If the    parameter
  55.         -h<filespec> is    included on the    command    line, the
  56.         specified file will be included    as if the source
  57.         file's first line was " include <filespec>".
  58.         The file specification may include a path name,
  59.         although the include path names    given by the
  60.         -i parameter (if any) will also    be searched.
  61.  
  62.           -    An equate file can now be produced.  If    the parameter
  63.         -e<filespec> is    included on the    command    line, a    file
  64.         will be    written    containing EQU statements for any
  65.         symbol whose value is absolute.     If -e is specified
  66.         without    <filespec>, the    name of    the file will be
  67.         formed in the same way as the list file, except    with
  68.         an extension of    ".equ".  (Bruce Dawson)
  69.  
  70.     The following changes have been    made to    existing logic:
  71.  
  72.           -    No symbol table    dump will be produced unless the
  73.         -x (cross-reference) switch is set.  Formerly a
  74.         symbol table dump was always produced, with only
  75.         the cross-reference portion optional.
  76.  
  77.  
  78. Version    1.03 (Charlie Gibbs, October 14, 1987)
  79.  
  80.     The following bugs in version 1.02 have    been corrected:
  81.  
  82.           -    The following situation    was causing phase errors:
  83.  
  84.                 xdef    label
  85.                 bra    label
  86.                  .
  87.                 <at    least 128 bytes    of object code>
  88.                  .
  89.             label:
  90.  
  91.         (The XDEF was fooling A68k into    thinking that "label"
  92.         was defined within 128 bytes of    the BRA    instruction
  93.         on pass    1, although on pass 2 it knew better.
  94.  
  95.           -    If the first operand of    an two-operand executable
  96.         instruction contained a    character term containing a
  97.         left or    right parenthesis, it would generate error
  98.         messages and be    incorrectly evaluated.
  99.  
  100.           -    Labels that don't begin in column 1 (denoted by a
  101.         trailing colon)    caused a Guru Meditation.
  102.  
  103.           -    Certain    ADD and    SUB instructions using PC-relative
  104.         addressing may cause phase errors.  If the displacement
  105.         is in the range    1 to 8 inclusive, the instruction was
  106.         erroneously converted to ADDQ or SUBQ during pass 2.
  107.  
  108.     The following enhancements have    been added:
  109.  
  110.           -    The -z option has been added to    display    the
  111.         current    source program line on stdout as it
  112.         is read, optionally over a given range.
  113.         This feature is    provided for debugging purposes.
  114.  
  115.           -    Bcc, BSR, and DBcc to labels in    other than the current
  116.         section    is now supported.  A 16-bit relocation entry
  117.         will be    generated for each such    reference.
  118.  
  119.           -    PC relative mode will be generated for backward
  120.         references to labels within the    current    CODE section
  121.         if legal for the current instruction.  Forward
  122.         references will    not be converted, since    there is
  123.         no way of telling which    section    the label is in
  124.         during pass 1.
  125.  
  126.           -    The cumulative sizes of    all sections by    type (i.e.
  127.         CODE, DATA, and    BSS) will be displayed at the end
  128.         of the listing file and    the console display.
  129.         (Bruce Dawson)
  130.  
  131.           -    In the symbol table dump, section names    will no
  132.         longer be indicated just as SECTION, but rather
  133.         as CODE, DATA, or BSS, depending on type.
  134.  
  135.  
  136. Version    1.04 (Charlie Gibbs, October 21, 1987)
  137.  
  138.     The following bugs in version 1.03 have    been corrected:
  139.  
  140.           -    MOVE was being converted to MOVEQ regardless of
  141.         operand    size - this conversion is legal    only
  142.         for longword MOVEs.
  143.  
  144.           -    Modifications to version 1.03 caused bad relocatable
  145.         entries    to be generated.
  146.  
  147.  
  148. Version    1.05 (Charlie Gibbs, October 30, 1987)
  149.  
  150.     The following bugs in version 1.04 have    been corrected:
  151.  
  152.           -    If a section was continued later in the    program, e.g.
  153.  
  154.             SECTION    prog,CODE
  155.               <code>
  156.             SECTION    variables,BSS
  157.               <DS statements>
  158.             SECTION    prog,CODE
  159.               <more    code>
  160.  
  161.         bad relocation information was being generated for
  162.         the continuation of the    SECTION.  This bug was left
  163.         over from version 1.03.
  164.  
  165.     The following enhancements have    been added:
  166.  
  167.           -    All console output except for error messages is    now
  168.         sent to    stderr - this enables stdout to    be redirected,
  169.         producing an error file.
  170.  
  171.           -    Console    (stderr) output    has been modified to require
  172.         fewer lines on the screen.
  173.  
  174.           -    If an error occurs while expanding a macro or INCLUDE
  175.         file, the position of the call in each outer file is
  176.         given along with the position in the current (innermost)
  177.         file.  Tracing continues until the outermost file (i.e.
  178.         the original source file) is reached.
  179.  
  180.  
  181. Version    1.06 (Charlie Gibbs, March 6, 1988)
  182.  
  183.     The following bugs in version 1.05 have    been corrected:
  184.  
  185.           -    Lines skipped by IFxx/ENDC were    not being counted
  186.         in the line number given in error messages.
  187.  
  188.           -    DATA and BSS sections may be unnamed, or have names
  189.         the same as CODE sections.  Honest, I thought section
  190.         names had to be    unique even across types.
  191.  
  192.           -    CHIP and FAST options on the CODE, DATA, and BSS
  193.         synonyms for the SECTION directive were    not being
  194.         handled    correctly.
  195.  
  196.           -    XDEF records and symbol    table records (if desired)
  197.         were not being produced    for symbols defined ahead
  198.         of the first object-code producing instruction.
  199.  
  200.     The following enhancements have    been added:
  201.  
  202.           -    The CNOP instruction can now force alignment
  203.         relative to any    boundary up to 128 bytes.
  204.         The second operand must    still be a power of 2.
  205.  
  206.           -    The -q switch has been added to    change the frequency
  207.         with which progress reports (current line number) are
  208.         displayed on the console.  The default remains at
  209.         every 10 lines (-q10).    If you specify -q (no interval)
  210.         or -q0 the line    number displays    will be    suppressed.
  211.         This will make assemblies run slightly faster due to
  212.         reduced    console    I/O.  (Bill Henning)
  213.  
  214.           -    The -t switch has been added to    keep any tabs in the
  215.         source file when producing the listing file, as    well as
  216.         generating tabs    elsewhere whenever possible.  This
  217.         speeds up assemblies and gives smaller listing files,
  218.         but such listing files cannot be displayed on devices
  219.         that do    not assume a tab stop in every 8th position.
  220.         (Bruce Dawson)
  221.  
  222.           -    Any single-operand instruction with two    operands,
  223.         and any    no-operand instruction with any    operands,
  224.         will be    flagged.
  225.  
  226.           -    Relocatable 8- or 16-bit immediate operands
  227.         will be    flagged.  They blow up BLink.
  228.  
  229.           -    Named local labels are now supported.  Their names
  230.         are formed in the same way as normal labels, but are
  231.         then preceded by a backslash.  Their scope is the
  232.         same as    normal local labels (nnn$).  (Colin Fox)
  233.  
  234.           -    An alignment error will    be flagged in the following cases:
  235.             Odd    displacement on    a LINK instruction
  236.             Bcc    or DBcc    to an odd address
  237.             In any word    or long-word instruction, any operand
  238.               using the    following addressing modes:
  239.             Address    register indirect with displacement
  240.             Address    register indirect with index and displacement
  241.             Absolute short
  242.             Absolute long
  243.             Program    counter    indirect with displacement
  244.             Program    counter    indirect with index and    displacement
  245.             LEA    and PEA    instructions are exempt    from these tests.
  246.  
  247.           -    If a section is    found to contain no data, A68k will
  248.         back up    to its beginning and overwrite it with the
  249.         next section.  The result is that null sections
  250.         will no    longer appear in the object file.
  251.  
  252.  
  253. Version    1.07 (Charlie Gibbs, March 11, 1988)
  254.  
  255.     The following bugs in version 1.06 have    been corrected:
  256.  
  257.           -    Instructions that take no operands (such as RTS)
  258.         were being flagged if they had comments    that were
  259.         not preceded by    a semicolon.
  260.  
  261.     The following enhancements have    been added:
  262.  
  263.           -    The following synonyms have been added:
  264.             CSEG  for CODE (Aztec compatibility)
  265.             DSEG  for DATA     "          "
  266.             ENDIF for ENDC (Assempro compatibility)
  267.             =     for EQU       "           "
  268.             |     for !       "           "
  269.  
  270.           -    Strings    and character values may be delimited by
  271.         either apostrophes (') or quotation marks (").
  272.         The character not used as a delimiter can be used
  273.         within the string without doubling it.    For example,
  274.             DC.B    "This is Charlie's assembler"
  275.         produces the same code as
  276.             DC.B    'This is Charlie''s assembler"
  277.  
  278.           -    The object code    file will be scratched if any errors
  279.         were found, unless the -k (keep) flag is set.
  280.         (Bruce Dawson)
  281.  
  282.           -    The symbol .A68K is automatically defined at the
  283.         beginning of each assembly as a    SET symbol with    an
  284.         absolute value of 1.  This enables programs to check
  285.         whether    they're being assembled by this assembler.
  286.         (Jeff Lydiatt)
  287.  
  288.           -    The symbol table insertion routine has been
  289.         greatly    speeded    up.
  290.  
  291.  
  292. Version    1.10 (Charlie Gibbs, March 20, 1988)
  293.  
  294.     The following bugs in version 1.07 have    been corrected:
  295.  
  296.           -    BSS sections were not being written to the object
  297.         code file except for a BSS section at the end of
  298.         a program.  This is due    to a bug in the    code added
  299.         in version 1.05    to overwrite null sections.
  300.  
  301.           -    If a source module contained a mixture of lengths
  302.         (8, 16,    or 32 bits) in external    references (XREF)
  303.         to the same label, all references were being treated
  304.         as if they has the length of the first reference.
  305.  
  306.     The following enhancements have    been added:
  307.  
  308.           -    DS operands that are either a forward references
  309.         or relocatable are now flagged.
  310.  
  311.           -    Short branches (Bcc.S, including BRA and BSR) to
  312.         the next instruction (i.e. a displacement of zero)
  313.         are illegal - the processor takes the displacement
  314.         from the next word.  Attempts to generate a short
  315.         displacement of    zero are now flagged.
  316.  
  317.  
  318. Version    1.11 (Charlie Gibbs, April 6, 1988)
  319.  
  320.     The following bugs in version 1.10 have    been corrected:
  321.  
  322.           -    A68k would go into a loop while    processing the
  323.         arguments of a macro call, if these arguments are
  324.         followed by comments separated from the    arguments
  325.         by one or more tab characters, and the -t switch
  326.         is specified on    the command line.  All tests for
  327.         blanks have been replaced by calls to isspace().
  328.  
  329.           -    The operand alignment checks added in version 1.06
  330.         were erroneously testing the following instructions:
  331.             BCHG
  332.             BCLR
  333.             BSET
  334.             BTST
  335.             NBCD
  336.             Scc
  337.             TAS
  338.         These instructions are now exempt from alignment checking.
  339.  
  340.     The following enhancements have    been added:
  341.  
  342.           -    A listing file name can    now be specified with the
  343.         -x switch; it is no longer necessary to    specify
  344.         both the -l and    -x switches to produce a cross-
  345.         reference listing with a name other than the default.
  346.  
  347.           -    DS statements with more    than one operand are
  348.         flagged    and ignored (in    case they should be DC).
  349.  
  350.           -    A character string used    as a numeric value is
  351.         flagged    and set    to zero    if it is more than four
  352.         characters long.
  353.  
  354.  
  355. Version    1.12 (Charlie Gibbs, May 25, 1988)
  356.  
  357.     The following bugs in version 1.11 have    been corrected:
  358.  
  359.           -    If an instruction with no operands (e.g. RTS)
  360.         followed a MOVE.L #label,D0 the    RTS would be
  361.         flagged    with a relocatability error.  Src.Mode
  362.         and Dest.Mode were not being cleared.  (Colin Fox)
  363.  
  364.  
  365. Version    1.2 (Charlie Gibbs, July 19, 1988)
  366.  
  367.     The following bugs in version 1.12 have    been corrected:
  368.  
  369.           -    A reference to the label of the    current    instruction
  370.         was being converted to PC-relative on pass 2 but not
  371.         on pass    1.  This was causing phase errors.  The    label
  372.         hasn't been added to the symbol table at the time the
  373.         instruction is processed.  Conversion to PC-relative
  374.         addressing will    now not    be attempted in    this case,
  375.         although references to * can and will be converted.
  376.  
  377.           -    All string-type    DC statements, regardless of length,
  378.         were being treated as DC.B.  For example, DC.L 'A'
  379.         would generate only one    byte of    object code.
  380.         (Gerald    Hull)
  381.  
  382.           -    DC.W and DC.B statements were not being    checked    to
  383.         ensure that their values would fit into    a word or
  384.         a byte respectively.
  385.  
  386.           -    If a comment line had white space preceding the
  387.         asterisk, A68k would hang.  Actually, it was
  388.         interpreting the asterisk as an    opcode and trying
  389.         to open    a macro    file called "*".  Since under
  390.         AmigaDOS such a    file is    the console, A68k was
  391.         actually waiting for console input.
  392.  
  393.           -    If an instruction with no operands (such as RTS
  394.         or NOP)    followed MOVE.L    #rel,D0    where "rel" was
  395.         a relocatable symbol, the RTS (etc.) would have
  396.         its nonexistent    operands flagged as invalid.
  397.  
  398.           -    SECTION    names enclosed in quotes were not being
  399.         handled    correctly.
  400.  
  401.           -    Source modules that did    not generate any code, data,
  402.         or BSS areas, but only defined symbols,    such as
  403.             label    equ    4
  404.                 xdef    label
  405.                 end
  406.         were generating    incomplete object modules.
  407.  
  408.     The following enhancements have    been added:
  409.  
  410.           -    Jeff's experimental hunk code (prefixing hunk names
  411.         with a sequence    number before adding to    the symbol
  412.         table) has been    permanently incorporated.  It seems
  413.         to work    better with BLink on programs that have
  414.         hunks continued    farther    on in the source code.
  415.         (Jeff Lydiatt)
  416.  
  417.           -    The macro parameter \0,    which is replaced by the
  418.         size specification in the macro    call (B, W, or L,
  419.         defaulting to W) is now    supported.  (Gerald Hull)
  420.  
  421.           -    Operands of the    form 0(An) will    be treated as (An).
  422.         (Bruce Dawson)
  423.  
  424.  
  425. Version    1.21 (Charlie Gibbs, July 29, 1988)
  426.  
  427.     The following bugs in version 1.2 have been corrected:
  428.  
  429.           -    The instruction
  430.             BTST.L    #8,D0
  431.         had a long-word    value generated    for the    bit number.
  432.         This bug also applies to BSET, BCLR, and BCHG.
  433.         The .L specification is    now ignored.  (Ulf Nordquist)
  434.  
  435.  
  436. Version    1.22 (Charlie Gibbs, August 31,    1988)
  437.  
  438.     The following bugs in version 1.21 have    been corrected:
  439.  
  440.           -    Expressions of the form    R-A, where R is    a relocatable
  441.         term or    expression and A is an absolute    term or
  442.         expression, were being flagged as relocation errors.
  443.         This was due to    a bug in the routine which should
  444.         (but did not) flag expressions of the form A-R.
  445.         (David Ashley)
  446.  
  447.           -    Instructions with three    operands were not being
  448.         flagged    as errors.  This can be    caused by an extra
  449.         comma being typed in the instruction, as in:
  450.             BTST #0,state+3,(a5)
  451.         The second comma should    not be present.     (David    Ashley)
  452.  
  453.     The following enhancements have    been added:
  454.  
  455.           -    Excess spacing has been    removed    from the listing file.
  456.         These changes are similar to those already made    to the
  457.         console    output (probably at about version 1.05).
  458.  
  459.           -    If the first statement in the source file is TTL or
  460.         PAGE, an empty page is no longer produced at the
  461.         start of the listing.
  462.  
  463.  
  464. Version    1.23 (Charlie Gibbs, September 20, 1988)
  465.  
  466.     The following bugs in version 1.22 have    been corrected:
  467.  
  468.           -    The test for a third operand was producing erroneous
  469.         error messages on instructions whose second operand
  470.         was in immediate mode.    The '#' was not being taken
  471.         into account, since it is not copied to    DestOp.
  472.  
  473.  
  474. Version    1.24 (Charlie Gibbs, October 11, 1988)
  475.  
  476.     The following bugs in version 1.23 have    been corrected:
  477.  
  478.           -    MOVEA to a data    register was not being flagged,    even
  479.         though all other invalid addressing modes were.
  480.  
  481.           -    Attempts to ORG    out of the current hunk    (including
  482.         to an absolute address)    were not being flagged.     (E. Lenz)
  483.  
  484.           -    If the size of the bottom of the primary heap (symbols
  485.         and macro text)    exceeded 32K, any further macro
  486.         definitions would expand as endless garbage.  (Colin Fox)
  487.  
  488.           -    If the size of the bottom of the primary heap (symbols
  489.         and macro text)    exceeded 64K, any further external
  490.         symbols    (XDEF) would be    flagged    as relocatability
  491.         errors upon each reference.  (Colin Fox)
  492.  
  493.     The following enhancements have    been added:
  494.  
  495.           -    Where statement    numbers    are displayed as fixed-length
  496.         fields,    their maximum length has been increased
  497.         from 4 digits to 5.  (Colin Fox)
  498.  
  499.           -    The PUBLIC directive has been implemented.
  500.         As with    the Aztec assembler, any labels    defined    as
  501.         PUBLIC will be treated as XDEF if defined within
  502.         the current module, and    XREF otherwise.     (Jeff Lydiatt)
  503.  
  504.  
  505. Version    2.00 (Charlie Gibbs, October 26, 1988)
  506.  
  507.     The following bugs in version 1.24 have    been corrected:
  508.  
  509.           -    The last digit of the statement    number display
  510.         (lengthened in version 1.24) was not being erased
  511.         before displaying error    messages.
  512.  
  513.           -    A68k would go into a loop if a user macro was
  514.         missing    an ENDC    directive.  This error is now
  515.         flagged    (see below).
  516.  
  517.     The following enhancements have    been added:
  518.  
  519.           -    The highest statement number displayed at the end of
  520.         each pass is now left on the screen.  This means that,
  521.         at the end of pass 1, you can always see how many lines
  522.         A68k will have to process in pass 2, giving an idea of
  523.         how how    much longer you    have to    wait.  (Colin Fox)
  524.  
  525.           -    The symbol table is now    built using a hashing algorithm.
  526.         This eliminates    the slowdown that occurs in pass 1 as
  527.         the symbol table grows,    due to the old insertion process.
  528.         (Bruce Dawson)
  529.  
  530.           -    If A68k    terminates abnormally for any reason (such as
  531.         insufficient memory) the object    file is    scratched
  532.         (unless    the -k option is set).    (Bruce Dawson)
  533.  
  534.           -    Any INCLUDE files which    cannot be found    are flagged
  535.         as errors in pass 1, and the assembly is aborted
  536.         at the end of pass 1.  (Bruce Dawson)
  537.  
  538.           -    Missing    ENDC directives    are flagged in macro expansions.
  539.         Also, missing or unpaired ENDC directives in user macros
  540.         are flagged.
  541.  
  542.           -    If an INCLUDE file doesn't generate any code and no
  543.         listing    file is    required, it won't be read again in
  544.         pass 2.     The statement numbers will be bumped to keep
  545.         in proper alignment.  This can really speed up
  546.         assemblies that    INCLUDE    lots of    equates.  (Colin Fox)
  547.  
  548.  
  549. Version    2.1 (Charlie Gibbs, November 1,    1988)
  550.  
  551.     The following bugs in version 2.00 have    been corrected:
  552.  
  553.           -    Macro definitions that span two    chunks of memory
  554.         were causing garbage and probably a crash when
  555.         the macro was being expanded.  Pointers    were not
  556.         being handled properly when linking the    two chunks.
  557.  
  558.           -    Statements such    as EQU and SET were not    being flagged
  559.         as illegal forward references if referencing a label
  560.         defined    on the same line, e.g.
  561.             LABEL    SET    LABEL+1
  562.  
  563.           -    The position within macros and INCLUDE files was
  564.         sometimes out by one line when reported    in error
  565.         messages (and the new feature of the -q    switch).
  566.  
  567.     The following enhancements have    been added:
  568.  
  569.           -    If the -q option is specified as a negative value,
  570.         line numbers will be displayed as positions within
  571.         the current module (whose name is also displayed),
  572.         rather than a total statement count.  (Bruce Dawson)
  573.  
  574.           -    INCLUDE    files can be skipped on    pass 2 even if they
  575.         contain    SET statements - the values of all symbols
  576.         SET in the INCLUDE file    are stored (as at the end
  577.         of the file) in    a separate table and are patched
  578.         when the INCLUDE file is skipped.  (Bruce Dawson)
  579.  
  580.  
  581. Version    2.2 (Charlie Gibbs, November 4,    1988)
  582.  
  583.     The following bugs in version 2.1 have been corrected:
  584.  
  585.           -    Macro definitions within an INCLUDE file were
  586.         disabling the test for skipping    the file on pass 2.
  587.  
  588.           -    Errors encountered in an INCLUDE file on pass 1
  589.         were not disabling the skip of the file    on pass    2 -
  590.         the pertinent error messages could not appear.
  591.  
  592.           -    XDEF information and optional symbol table dumps were
  593.         not being written to the object    code file for any
  594.         hunks that did not contain relocatable code or data.
  595.         (Colin Fox)
  596.  
  597.     The following enhancements have    been added:
  598.  
  599.           -    If the -q option is specified as a negative value,
  600.         user macros are    no longer included in line number
  601.         displays, reducing clutter.
  602.  
  603.           -    Some source code has been re-arranged to reduce    size.
  604.  
  605.  
  606. Version    2.3 (Charlie Gibbs, November 21, 1988)
  607.  
  608.     The following enhancements have    been added:
  609.  
  610.           -    All file I/O has been rewritten    to use level 1 I/O
  611.         (open, creat, close, read, write, and lseek) instead
  612.         of level 2 I/O.     A68k now does its own buffering and
  613.         unbuffering to reduce system overhead and increase speed.
  614.         (Bruce Dawson)
  615.  
  616.           -    All assembler directives have been incorporated    into
  617.         the opcode table.  Since the opcode search now looks
  618.         up directives as well, speed is    increased.
  619.  
  620.           -    Miscellaneous code optimization    for additional speed.
  621.  
  622.  
  623. Version    2.31 (Charlie Gibbs, November 30, 1988)
  624.  
  625.     The following bugs in version 2.3 have been corrected:
  626.  
  627.           -    Even though a macro definition was being skipped
  628.         by IFxx/ENDC, its ENDM directive was still being
  629.         detected, causing spurious diagnostics.     (Harvey Taylor)
  630.  
  631.           -    NOP was    not being recognized.  When moving all
  632.         directives into    the opcode table, NOL and NOLIST
  633.         were placed after NOP, rather than before.  (Colin Fox)
  634.  
  635.           -    Symbols    defined    in the current module and declared
  636.         as PUBLIC were not being written to the    object code
  637.         file when -d was specified.  (Colin Fox)
  638.  
  639.           -    Conversion of 0(An) to (An) (implemented in version
  640.         1.2) was causing errors    in the MOVEP instruction,
  641.         which requires a displacement even if it is zero.
  642.         This conversion    is now disabled    for MOVEP instructions.
  643.  
  644.           -    User macros containing invalid opcodes caused A68k
  645.         to get lost when returning to the outer    source file.
  646.         (Colin Fox)
  647.  
  648.           -    Large values of    -w (over 6000 or so) would cause
  649.         a visit    from the Guru.    The work field in HashIt
  650.         was overflowing    and going negative.  Changing it
  651.         to unsigned corrected the problem.  (Colin Fox)
  652.  
  653.           -    Although user macros are no longer displayed when
  654.         -q is a    negative number, the calling file's name
  655.         was still being    displayed at the end of    the macro.
  656.  
  657.  
  658. Version    2.4 (Charlie Gibbs, January 4, 1989)
  659.  
  660.     The following bugs in version 2.31 have    been corrected:
  661.  
  662.           -    If comments immediately    followed the operands of
  663.         a DC statement with no intervening white space,
  664.         A68k would hang.  (Ulf Nordquist)
  665.  
  666.           -    In the following command:
  667.             a68k -w    15000 myprog.asm
  668.         the space between the -w and 15000 would cause A68k
  669.         to look    for a source file called "15000", and to think
  670.         that the object    file is    to be called "myprog.asm".
  671.         When it    can't find "15000" it would display an error
  672.         message    and scratch "myprog.asm".  (Jeff Lydiatt)
  673.  
  674.           -    If an INCLUDE file that    is skipped on pass 2 contains
  675.         a macro    calls, subsequent uses of \@ (macro sequence
  676.         number are subsequently    flagged.  The macro counter
  677.         must be    bumped along with the line number when
  678.         skipping an INCLUDE.  (Colin Fox, Harvey Taylor)
  679.  
  680.     The following enhancements have    been added:
  681.  
  682.           -    ORG and    RORG are now fully implemented.
  683.  
  684.           -    The SET    symbols    A68k, a68K, and    a68k are defined in the
  685.         same way as A68K, making it effectively    case-insensitive.
  686.         (Colin Fox)
  687.  
  688.           -    MOVEM and REG now accept equated register names    (EQUR)
  689.         in register lists.  (Bruce Dawson)
  690.  
  691.           -    INCLUDE    files will now be skipped on pass 2 even when
  692.         a listing file is requested, if    the listing has    been
  693.         turned off by a    NOLIST directive before    the INCLUDE,
  694.         and is not turned on until after the end of the
  695.         INCLUDE    file has been reached.    (Colin Fox)
  696.  
  697.           -    A new switch (-f) causes forward branches (Bcc,    BRA, BSR)
  698.         that could be coded as short branches (Bcc.S etc.) to be
  699.         flagged.  This flag is not considered to be an error.
  700.  
  701.           -    A limited small    code / small data model    has been provided.
  702.         It is activated    by a NEAR directive in the code, and is
  703.         de-activated by    a FAR directive.  External variables must
  704.         be declared at the beginning of    the program, which must
  705.         consist    of only    two sections (CODE and DATA or BSS).
  706.         All forward data references are    assumed    to be PC-relative
  707.         if in the CODE section,    A4-relative if in the DATA/BSS
  708.         section, and absolute word if absolute values.    Any
  709.         forward    references which cannot    be resolved to one of
  710.         these three in pass 2 will be flagged as errors, as will
  711.         any attempt to define more than    two sections.  A4 is
  712.         assumed    to point to the    start of the DATA/BSS section
  713.         plus 32768 bytes, and must be loaded by    a MOVE.L
  714.         instruction using immediate mode unless    this instruction
  715.         is not enclosed    within NEAR and    FAR directives.
  716.  
  717.           -    Miscellaneous optimizations, for speed,    including:
  718.         Most of    the object code    generator in pass 1 is bypassed.
  719.         If GetValue gets a single term it takes    a short    cut.
  720.         IsOperator now uses a table look-up.
  721.         Instructions now only searches that portion of the
  722.         opcode table whose opcodes start with the same letter
  723.         as the OpCode being searched for.
  724.  
  725.  
  726. Version    2.41 (Charlie Gibbs, January 6,    1989)
  727.  
  728.     The following bugs in version 2.4 have been corrected:
  729.  
  730.           -    The second operand of LINK instructions    was
  731.         being erroneously flagged.
  732.  
  733.           -    If a macro was used before it was defined, it
  734.         was being expanded during pass 2 but not during
  735.         pass 1,    causing    severe phase errors.  Attempts
  736.         to use a macro before it is defined will now
  737.         be flagged as invalid opcodes.    (Colin Fox)
  738.