/* $Id$ */ Motorola 56300 Assembler, Version 6.3.4, Jan 05 2000 Another instruction table bounds problem. Due to not handling conditional assembly in Pass 0. Fixed. Fixed listing file issue with year 2000. Listing now correctly prints out only last two digits of current year. Not a problem in the object file, only in text report. ==== Motorola 56300 Assembler, Version 6.3.2, Sep 17 1999 Fixed instruction table bounds overflow problem. Problem introduced because SCS statement weren't handled in Pass 0. ==== Motorola Assembler, Version 6.3.0, Jul 13 1999 Updated revision number. ==== Motorola Assembler, Version 6.2.38, Mar 23 1999 -Fix for byte order of DEBUG sections. Internal use only. ==== Motorola Assembler, Version 6.2.37, Jan 29 1999 -Order of bytes generated by DCL,DCW,DC are reversed *only for sections qualified by the DEBUG option*. This should not affect any customers since the DEBUG option is for internal use only. -Fixed bug where STYP_DEBUG section flag was not set in Pass 2. ==== Motorola 56800 Assembler, Version 6.2.36, Jan 04 1999 Fixed overlay/byte-mode load counter increment bug (DSPhl01662) ==== Motorola Assembler, Version 6.2.35, Dec 14 1998 ALL : Removed "fix" for asmsc4 align problem in data.c 56300: Checks LINTBIN env variable for location of Lint563 after DSPLOC is checked. ==== Motorola Assembler, Version 6.2.34, Dec 08 1998 Fixed macro path problem. Macro library path list was cleared after Pass 0. Macros weren't being read in Pass 1, resulting in a section sequence fatal error. Also, fixed array bounds violation reported by purify. ==== Motorola Assembler, Version 6.2.33, Dec 08 1998 NONDE flag is not gated by RP flag anymore. NONDE should work independently of -w or -oRP. ==== Motorola Assembler, Version 6.2.32, Dec 04 1998 Fixed problem where include and macro path globals where inadvertantly getting cleared after Pass 0. This would cause include/macro file opens to fail after Pass 0. ==== Motorola 56300 Assembler, Version 6.2.31, Dec 02 1998 NOPs required for instructions at loop address are now placed outside the do loop. SR stall NOP insertion optimization removed per MSIL instructions. There were no problems with overlays as reported in 6.2.30, hence no changes regarding this. There are still some listing file anomalies which don't affect the object code. ==== Motorola 56300 Assembler, Version 6.2.30, Nov 30 1998 Assembler now uses PC and section number to determine where to insert NOPs, instead of line number. Fixes Lint NOP insertion for macro expansion. Added flag to indicate 16-bit arithmetic/compatibility mode RTI fix added only if this flag is set ( -y flag ). Lint warnings printed to listing file. Use -oNOLOW to turn this off. Lint563 which is run with asm includes any macro or include file paths, as well as absolute assembly flags. Known bugs: NOP fixes on overlays don't work. Nop mnemonic isn't printed Some problems printing the (*) annotation with do loops. ==== Motorola 56300 Assembler, Version 6.2.29, Nov 26 1998 - Assembler generates "movec ssl,sr:nop" instruction sequence before an RTI instruction if so directed by the lint warning file. ==== Motorola 56300 Assembler, Version 6.2.28, Nov 25 1998 -Added capability to run lint563 from the assembler via a -w and optional -r command line flag. -Rewrote how the assembler handles multiple .asm files when the -c flag is specified. The assembler automatically runs lint563 if the -w flag is specified, like so: -w -- generates a default lint563 output file which is .lnt -w-- use for the lint563 output file. If multiple input files are specified. The same name is used for lint563 output. If -w or -w is specified and the RP option (Register Padding, i.e. automatic NOP insertion by the assembler) is specified, RP is turned OFF. This means only NOPs specified by Lint563 will be added. The assembler will look to see if the environment variable DSPLOC is set in order to find lint563. In this case, lint563 should be installed in $DSPLOC/dsp/bin. If DSPLOC is not set, the assembler looks in the current working directory where asm56300 was invoked. If this version of the assembler is used with g563c, DSPLOC must be set. The assembler now accepts -r flags. This is passed thru unchanged to lint563 if specified. If -r is not specified, the default lint563 revision is used. A new option flag, -oNOLOW, may be specified to suppress warnings that NOPs have been inserted due to lint563 data. The C-compiler may use '-asm "-w -r -oNOLOW"' to automatically insert NOPs identified by lint563 in compiler generated source. A unique .lnt (lint warning file) is generated for each input source file. ==== Motorola 56300 Assembler, Version 6.2.24, Nov 02 1998 Additional SR stall detected - move [A|B],.. followed by SR access. ==== Motorola 56300 Assembler, Version 6.2.23, Oct 30 1998 Added additional interlock checks and NOP insertion for these conditions: - DALU instruction or accumulator read followed by SR access -- SR access includes: move sr,... bset #n,sr bclr #n,sr bchg #n,sr btst #n,sr bsset #n,sr bsclr #n,sr brset #n,sr brclr #n,sr jsset #n,sr jsclr #n,sr jset #n,sr jclr #n,sr b where is cc,cs,ec,eq,es,ge,gt,lc,le,ls,lt,mi,ne,nr,pl,nn bs if if.u debugcc j js trapcc Accumulator reads include: move D,... or parallel move where D is [A|B] or any portion thereof btst #n,D bclr #n,D bchg #n,D bsset #n,D bsclr #n,D brset #n,D brclr #n,D jsset #n,D jsclr #n,D jset #n,D jclr #n,D - Arithmetic stalls -- DALU instruction with any portion of reg A,B as destination followed any an access of any portion of A or B from the following: move D, .. or parallel move where D is any portion of A or B btst,bclr,bchg #n,D bsset,bsclr,brset,brclr $n,D jsset,jsclr,jset,jclr #n,D - Conditional branch followed by two consecutive loop addresses. - One word conditional branch at loop address - 1. - Global data bus forwarding: move , followed by move , where is r0..r7,n0..n7,m0..m7. destination and source must be identical. - move , [x0|x1|y0|y1] followed by movep [x0|x1|y0|y1],y:io_ea or x:io_ea Changed default conditon of NDE. This is now initialized to off. Therefore, the initial conditions of the assembler are NONDE and NORP, which means that by default NOP are never automatically inserted into the user's code unless they specifically turn on NDE or RP. NDE controls NOPs for DALU interlocks (arithmetic, status, and transfer stalls and other instruction restrictions including do loop restrictions). RP controls NOP insertion for AGU interlocks (address register stalls). By default, interlock warnings (IDW flag) are enabled. However, it is recommended that NDE and RP be enabled along with IDW show all interlock warnings. ==== Motorola 56300 Assembler, Version 6.2.22, Oct 07 1998 Changed behavior of RP and NDE flags. Both RP and NDE must be specified in order to insert nops for detected interlocks. ==== Motorola 56300 Assembler, Version 6.2.21, Sep 18 1998 Opt RP and NONDE now work correctly when specified together. NONDE suppresses DALU interlock warnings. DALU stalls are still detected and Nops are still generated because RP is specified. ==== Motorola 56300 Assembler, Version 6.2.15, Aug 12 1998 Added modification to gen_nop to update label values which are affected by nop insertion. This is a quick fix and does not affect label which reside on different lines than the affected instruction. ==== Motorola Assembler, Version 6.2.14, Aug 6 1998 Added ReprocessingDoLoopLines flags in gen_nop to prevent recursive call to process() when inserting nops in a do loop. ==== Motorola 56300 Assembler, Version 6.2.13, Jul 28 1998 Added an additional gen_nop condition in amode.c:do_regref func. ==== Motorola 56300 Assembler, Version 6.2.12, Jul 27 1998 Array bounds problem in Dstk->doline array caused by gen_nop was breaking the assembler. Local counter variable seemed to fix the problem. ==== Motorola Assembler, Version 6.2.9, Jun 11 1998 QTKqa14355 Bug Report Fix. BUFFER statement was incrementing the load time counter only enough to align the load pc on the modulo boundary defined by the buffer statement. The load counter should increment the same amount as the run time counter. ==== Motorola 56300 Assembler, Version 6.2.7, Jun 05 1998 An error is no longer generated when a p memory move is executed as the last instruction in a do loop. P memory moves are apparently legal at LA. Normally, a c compiler generated file will set the RP flag. As of 6.2.6, RP inserted NOPs anywhere a stall cycle or register move restriction occurs. This is still true. If NORP flag is set via -oNORP with a c compiler generated file, the redundant NOPs are suppressed, the required NOPs for RTI,RTS, et al, restrictions are still inserted. In this way the efficiency of c compiler generated code is maintained. ==== Motorola 56300 Assembler, Version 6.2.6, May 19 1998 If -oRP option selected, nops are inserted automatically. Stall cycle warnings are suppressed, even if -oIDW specified. If -oRP and -oIDW specified, -oRP overrides -oIDW, that is, nops are inserted and warnings are suppressed. ==== Motorola Assembler, Version 6.2.5, May 11 1998 1. Bug while emitted a string with dcb and opt aec enabled was fixed. 2. Added capability to enable opt cc within a do loop was added. ==== Motorola Assembler, Version 6.2.3, Apr 21 1998 1. Fixes for QTKqa13764 Customer reported that NT version of assembler SEGV's when INCLUDE statement is used in certain conditions. Problem traced to array bounds overwrite in listing.c: print_syms(). String comparsion of structured control statement label was incorrect, resulting in overwrite of sort_tab array. ==== Motorola 56300 Assembler, Version 6.2.2, Mar 27 1998 1. Fixes for QTKqa13393 Customer reported that the assembler does not warn of interlock stall cycles for certain combinations of instructions. ==== Motorola 56300 Assembler, Version 6.2.1, Mar 26 1998 1. Fixes for QTKqa13486 and QTKqa11711 Cycle count fixed for move x:(rX+xxxx),a & move a,x:(rX+aaaa) ==== Motorola 56300 Assembler, Version 6.2.0, Jan 08 1998 Bug fixes. ====