Restructure the various READMEs; split out changes into a separate changelog so as...
authorJason Self <j@jxself.org>
Sun, 26 Nov 2017 20:38:34 +0000 (12:38 -0800)
committerJason Self <j@jxself.org>
Sun, 26 Nov 2017 20:38:34 +0000 (12:38 -0800)
ChangeLog [new file with mode: 0644]
README [new file with mode: 0644]
README-1.1 [deleted file]
README-1.2 [deleted file]
README-1.3 [deleted file]

diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..96d0a0f
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,75 @@
+## [1.3] - 1998-03-18
+- Added intrinsic transcendental functions for constant literal 
+  expressions (pi, sin, cos, tan atan, asin, acos, exp, ln, log, pow)
+- Added warnings for control register load/use hazards
+- More sophisticated constant expression evaluation including 
+  implicit float/integer conversion.  Results of expressions are 
+  typed and so formatted in the listing and symbol table.
+- Various fixes including stray pointers, etc. (Thanks to Dirk Farin 
+  farindk@trick.informatik.uni-stuttgart.de)
+
+## [1.2] - 1994-05-02
+Andreas Gustafsson <gson@joker.cs.hut.fi>
+- Added DS and DSM directives
+- Generalization of the use of "*" allowing current program counter 
+  to be used in any expression (including "org l:*" which is useful 
+  for changing spaces without changing the PC)
+- Noted a bug with MOVEP to a non-symbolic I/O address.  I believe 
+  this is now fixed.
+- Noted that mispelled argumentless operators will be treated as 
+  labels.  For example, N0P (N-zero-P) will be treated as a label. 
+  Unfortunately, my own use of a56 (i.e. using cpp as the macro 
+  pre-processor) complicates this.  However, the grammar might have 
+  been simpler if the lexical analyzer was able to distinguish 
+  between label declarations and references instead of leaving that 
+  up to the YACC parser.
+
+Tim Channon <tchannon@black.demon.co.uk> and Peter Breuer 
+<ptb@comlab.ox.ac.uk>
+- Missing ";" in grammar!
+
+Rober Ganter <ganter@ifi.unibas.ch>
+- Fixed bad comment on line 10 of a56.y
+
+Quinn C. Jensen <jensenq@zdomain.com>
+- Listing now includes psect usage summary
+- Better checking of movec arguments
+- Added int(value) function to convert floating point constant 
+  expression to integer (by truncation)
+- Correctly convert a floating -1.0 to 0x800000
+- Wrote a new lexical analyzer and lexical parser generator
+- Many other minor enhancements and fixes.
+- Ported to DOS using DJ Delories' GCC port.  (Tools available 
+  at ftp://omnigate.clarkson.edu/pub/msdos/djgpp)
+
+## [1.1] - 1992-08-06
+- Jcc, JScc, Tcc recognizes "CC" synonym for "HS" (Tom)
+- LUA syntax fixed (Tom, Stephen)
+- DIV syntax fixed (Tom)
+- XY move fixed (Tom, Stephen)
+- a56 now detects phase errors (changes in symbol values
+  between pass 1 and 2)
+- several causes of phase errors fixed
+- immediate value handling improved for both integer and
+  fixed-point values
+- symbols have type (INT or FLOAT)
+- cpp droppings are properly handled
+- ALIGN pseudo-op added
+- Many thanks to Tom Cunningham at Motorola who noted several bugs, 
+  fixing most of them.  Thanks also to Stephen Edwards at CalTech for 
+  his fixes as well. Both he and Tom fixed up the XY parallel move 
+  code; I believe all the fixes are integrated.
+
+## [1.0] - 1991-11-28
+- Initial version
+
+--
+Copyright (C) 1990-1998 Quinn C. Jensen
+
+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. The author makes no representations about 
+the suitability of this software for any purpose. It is provided "as 
+is" without express or implied warranty.
\ No newline at end of file
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..0a369be
--- /dev/null
+++ b/README
@@ -0,0 +1,114 @@
+a56 - a DSP5600X assembler
+---------------------------------------------------------------------
+OVERVIEW
+This program was written as a vehicle to learn the intricacies
+of the DSP56001 instruction set, and to provide a tool for Unix-based
+DSP code development (for those of us without a NeXT machine.)
+
+The intent was to provide compatibility with Motorola assembler's 
+syntax. But since the author did not have Motorola's assembler or its 
+documentation, it is no doubt far from compatible. Only a few 
+pseudo-ops are implemented-- probably only partially.
+
+Macros are not supported, except through the use of an external macro 
+preprocessor, such as /lib/cpp. To facilitate cpp macro expansion, 
+multiple assembler statements on a single input line are delimited 
+with an '@', e.g.:
+
+       #define JCHEQ(c,label)  move #c,x0 @cmp x0,a @jeq label
+
+       #define JCHNE(c,label)  move #c,x0 @cmp x0,a @jne label
+
+SUPPORTED PSEUDO-OPS
+The following is a list of the pseudo-ops that are recognized:
+
+       <symbol> = <expression>                 ;assign a symbol
+       <label> EQU <expression>                ;ditto
+
+       ALIGN <number>                          ;set location pointer
+                                               ;to next integral
+                                               ;multiple of <number>
+
+       ORG <space:> <expression>               ;new location pointer
+       ORG <space:> <expression>, <space:> <expression>
+
+       DC <dc_list>                            ;declare constants
+
+       DS <number>                             ;reserve <number>
+                                               ;words of space
+
+       <label> DSM <number>                    ;reserve space for
+                                               ;properly aligned
+                                               ;modulo-addressed
+                                               ;buffer of size
+                                               ;<number>, assigning
+                                               ;the aligned starting
+                                               ;address to <label>
+
+       PAGE <number>, <number>, <number>, <number>
+                                               ;ignored
+
+       INCLUDE <file>                          ;file inclusion
+
+       END                                     ;end
+
+In addition, a "PSECT" pseudo-op was implemented. It allows program 
+sections to be defined and bopped in and out of, each with its own 
+location counter and space. The Motorola assembler probably does not 
+have this pseudo-op, but no doubt supports the concept in some way.
+
+       PSECT <name> <space:><begin_addr>:<end_addr>
+                                               ;define
+
+       PSECT <name>                            ;switch to psect <name>
+
+FUTURE DIRECTION
+The assembler probably generates bogus code here and there, and no doubt
+does not handle all of the syntax.  I welcome all comments, fixes and 
+enhancements.
+
+TO MAKE AND USE
+
+Type "make".
+
+The resulting program, a56, is used as follows:
+
+        a56 [-b] [-l] [-o output-file] file [...]
+
+An assembler listing is sent to the standard-output and an 
+ascii-formatted object file (a56.out) is produced. The "-b" option 
+adds binary to the listing. "-l" causes included files to be listed. 
+"-o" directs the output to the specified file rather than the 
+default, a56.out.
+
+A separate program, toomf, converts a56.out into "OMF" format 
+suitable for downloading to the 56001 via the sloader.a56 program.
+
+        toomf < a56.out > file.omf
+
+Known bugs/deficiencies:
+- MOVE to a control reg generates bogus code (always use MOVEC,
+  MOVEM, and MOVEP)
+
+Wish list
+- Add support for new instructions and modes
+
+AUTHOR
+Quinn C. Jensen
+1374 N 40 E
+Orem, UT  84057
+
+http://www.zdomain.com/~jensenq/
+
+home: jensenq@zdomain.com (preferred address for a56 correspondence)
+work: jensenq@novell.com
+
+Copyright (C) 1990-1998 Quinn C. Jensen
+
+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. The author makes no representations about
+the suitability of this software for any purpose. It is provided "as
+is" without express or implied warranty.
\ No newline at end of file
diff --git a/README-1.1 b/README-1.1
deleted file mode 100644 (file)
index daf3194..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-
-  a56 - a DSP56001 assembler - version 1.1
-
-/*
- * Copyright (C) 1990-1992 Quinn C. Jensen
- *
- * 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.  The author makes no representations
- * about the suitability of this software for any purpose.  It is
- * provided "as is" without express or implied warranty.
- *
- */
-
-V1.1 CHANGES
-
-Many thanks to Tom Cunningham at Motorola who noted several bugs, fixing
-most of them.  Thanks also to Stephen Edwards at CalTech for his fixes as well.
-Both he and Tom fixed up the XY parallel move code;  I believe all the
-fixes are integrated.
-
-Summary of changes since v1.0:
-
-       - Jcc, JScc, Tcc recognizes "CC" synonym for "HS" (Tom)
-       - LUA syntax fixed (Tom, Stephen)
-       - DIV syntax fixed (Tom)
-       - XY move fixed (Tom, Stephen)
-       - a56 now detects phase errors (changes in symbol values
-         between pass 1 and 2)
-       - several causes of phase errors fixed
-       - immediate value handling improved for both integer and
-         fixed-point values
-       - symbols have type (INT or FLOAT)
-       - cpp droppings are properly handled
-       - ALIGN pseudo-op added
-
-Known bugs/deficiencies:
-
-       - MOVE to a control reg generates bogus code (always use MOVEC,
-         MOVEM, and MOVEP)
-
-The example code has been cleaned up a bit and I've included my
-56K board's envelope code - tdsg.basic.a56.  This code is specific to
-my implimentation.
-
-A note on the reverb code - I have since found since posting version 1.0
-that the reverb code has a great-big almost-DC bumb in its impulse
-response.  I found this after doing some simulations.  I suspected something
-was wrong because I had to scale the output of the comb filters by .046
-or something before going into the two all-pass stages.  Overall I think it
-works better without the 1.7 ms all-pass.  There's another reverb example 
-on Dr. Bubb that fits Moorer's 1979 model better.  I've included this in 
-the examples but I have not yet assembled or tried it.
-
-OVERVIEW
-
-This program was written as a vehicle to learn the intricacies
-of the DSP56001 instruction set, and to provide a tool for Unix-based
-DSP code development (for those of us without a NeXT machine.)
-
-The intent was to provide compatibility with Motorola assembler's syntax.
-But since the author did not have Motorola's assembler or its documentation,
-it is no doubt far from compatible.  Only a few pseudo-ops are implemented--
-probably only partially.
-
-Macros are not supported, except through the use of an external macro
-preprocessor, such as /lib/cpp.  To facilitate cpp macro expansion, multiple
-assembler statements on a single input line are delimited with an '@', e.g.:
-
-       #define JCHEQ(c,label)  move #c,x0 @cmp x0,a @jeq label
-
-       #define JCHNE(c,label)  move #c,x0 @cmp x0,a @jne label
-
-
-SUPPORTED PSEUDO-OPS
-
-The following is a list of the pseudo-ops that are recognized:
-
-       <symbol> = <expression>                         ;assign a symbol
-       
-       ALIGN <number>                                  ;set location pointer
-                                                       ;to next integral
-                                                       ;multiple of <number>
-
-       ORG <space:> <expression>                       ;new location pointer
-       ORG <space:> <expression>, <space:> <expression>
-
-       DC <dc_list>                                    ;declare constants
-
-       PAGE <number>, <number>, <number>, <number>     ;ignored
-
-       INCLUDE <file>                                  ;file inclusion
-
-       END                                             ;end
-
-In addition, a "PSECT" pseudo-op was implemented.  It allows program sections
-to be defined and bopped in and out of, each with its own location counter and
-space.  The Motorola assembler probably does not have this pseudo-op, but no
-doubt supports the concept in some way.
-
-       PSECT <name> <space:><begin_addr>:<end_addr>    ;define
-
-       PSECT <name>                                    ;switch to psect <name>
-
-
-FUTURE DIRECTION
-
-The assembler probably generates bogus code here and there, and no doubt
-does not handle all of the syntax.  I welcome all comments, fixes and 
-enhancements.
-
-TO MAKE AND USE
-
-Type "make".  gram.c and lex.yy.c are provided for those without yacc
-(or bison) and/or lex.
-
-The resulting program, a56, is used as follows:
-
-       a56 [-b] [-l] [-o output-file] file [...]
-
-An assembler listing is sent to the standard-output and an ascii-formatted
-object file (a56.out) is produced.  The "-b" option adds binary to the listing.
-"-l" causes included files to be listed.  "-o" directs the output to the
-specified file rather than the default, a56.out.
-
-A separate program, toomf, converts a56.out into "OMF" format suitable for 
-downloading to the 56001 via the sloader.a56 program.
-
-       toomf < a56.out > file.omf
-
-AUTHOR
-
-11/28/91
-v1.1 8/6/92
-
-Quinn C. Jensen
-1374 N 40 E
-Orem, UT  84057
-
-home: jensenq@zdomain.com (preferred address for a56 correspondence)
-work: jensenq@novell.com
diff --git a/README-1.2 b/README-1.2
deleted file mode 100644 (file)
index 682e499..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-
-  a56 - a DSP56001 assembler - version 1.2
-
-/*
- * Copyright (C) 1990-1994 Quinn C. Jensen
- *
- * 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.  The author makes no representations
- * about the suitability of this software for any purpose.  It is
- * provided "as is" without express or implied warranty.
- *
- */
-
-V1.2 CHANGES
-
-Contributors to V1.2 -
-
-    Andreas Gustafsson <gson@joker.cs.hut.fi>
-      - Added DS and DSM directives
-      - Generalization of the use of "*" allowing current program counter
-        to be used in any expression (including "org l:*" which is useful
-        for changing spaces without changing the PC)
-      - Noted a bug with MOVEP to a non-symbolic I/O address.  I believe
-        this is now fixed.
-      - Noted that mispelled argumentless operators will be treated as
-        labels.  For example, N0P (N-zero-P) will be treated as a label.
-        Unfortunately, my own use of a56 (i.e. using cpp as the macro
-        pre-processor) complicates this.  However, the grammar might
-        have been simpler if the lexical analyzer was able to distinguish
-        between label declarations and references instead of leaving that
-        up to the YACC parser.
-
-    Tim Channon <tchannon@black.demon.co.uk> and Peter Breuer
-      <ptb@comlab.ox.ac.uk>
-      - Missing ";" in grammar!
-
-    Rober Ganter <ganter@ifi.unibas.ch>
-      - Fixed bad comment on line 10 of a56.y
-
-    Me <jensenq@zdomain.com>
-      - Listing now includes psect usage summary
-      - Better checking of movec arguments
-      - Added int(value) function to convert floating point constant expression
-        to integer (by truncation)
-      - Correctly convert a floating -1.0 to 0x800000
-      - Wrote a new lexical analyzer and lexical parser generator
-      - Many other minor enhancements and fixes.
-      - Ported to DOS using DJ Delories' GCC port.  (Tools available at
-        ftp://omnigate.clarkson.edu/pub/msdos/djgpp)
-
-Known bugs/deficiencies:
-
-        - MOVE to a control reg generates bogus code (always use MOVEC,
-          MOVEM, and MOVEP)
-
-The example code this time around includes a full six-comb stereo reverb
-(based on Moorer).  This one sounds a lot better than the four-comb algorithm.
-Each comb uses a one-pole low-pass filter in the loop.  It lacks the
-early-reflection FIR (although Motorola's rvb2.asm has it) but has
-true stereo decorrelation by using a twin allpass stage.  My old reverb
-just used inversion to simulate stereo (the whole reverb effect would
-disappear if you mixed the outputs).  I've included only actual reverb
-code itself.  It lacks the hardware-implementation-specific shell.
-
-
----------------------------------------------------------------------------
-
-OVERVIEW
-
-This program was written as a vehicle to learn the intricacies
-of the DSP56001 instruction set, and to provide a tool for Unix-based
-DSP code development (for those of us without a NeXT machine.)
-
-The intent was to provide compatibility with Motorola assembler's syntax.
-But since the author did not have Motorola's assembler or its documentation,
-it is no doubt far from compatible.  Only a few pseudo-ops are implemented--
-probably only partially.
-
-Macros are not supported, except through the use of an external macro
-preprocessor, such as /lib/cpp.  To facilitate cpp macro expansion, multiple
-assembler statements on a single input line are delimited with an '@', e.g.:
-
-        #define JCHEQ(c,label) move #c,x0 @cmp x0,a @jeq label
-
-        #define JCHNE(c,label) move #c,x0 @cmp x0,a @jne label
-
-
-SUPPORTED PSEUDO-OPS
-
-The following is a list of the pseudo-ops that are recognized:
-
-        <symbol> = <expression>                         ;assign a symbol
-        <label> EQU <expression>                        ;ditto
-
-        ALIGN <number>                                  ;set location pointer
-                                                        ;to next integral
-                                                        ;multiple of <number>
-
-        ORG <space:> <expression>                       ;new location pointer
-        ORG <space:> <expression>, <space:> <expression>
-
-        DC <dc_list>                                    ;declare constants
-
-        DS <number>                                     ;reserve <number>
-                                                        ;words of space
-
-        <label> DSM <number>                            ;reserve space for
-                                                        ;properly aligned
-                                                        ;modulo-addressed
-                                                        ;buffer of size
-                                                        ;<number>, assigning
-                                                        ;the aligned starting
-                                                        ;address to <label>
-
-        PAGE <number>, <number>, <number>, <number>     ;ignored
-
-        INCLUDE <file>                                  ;file inclusion
-
-        END                                             ;end
-
-In addition, a "PSECT" pseudo-op was implemented.  It allows program sections
-to be defined and bopped in and out of, each with its own location counter and
-space.  The Motorola assembler probably does not have this pseudo-op, but no
-doubt supports the concept in some way.
-
-        PSECT <name> <space:><begin_addr>:<end_addr>    ;define
-
-        PSECT <name>                                    ;switch to psect <name>
-
-
-FUTURE DIRECTION
-
-The assembler probably generates bogus code here and there, and no doubt
-does not handle all of the syntax.  I welcome all comments, fixes and 
-enhancements.
-
-TO MAKE AND USE
-
-Type "make".
-
-The resulting program, a56, is used as follows:
-
-        a56 [-b] [-l] [-o output-file] file [...]
-
-An assembler listing is sent to the standard-output and an ascii-formatted
-object file (a56.out) is produced.  The "-b" option adds binary to the listing.
-"-l" causes included files to be listed.  "-o" directs the output to the
-specified file rather than the default, a56.out.
-
-A separate program, toomf, converts a56.out into "OMF" format suitable for 
-downloading to the 56001 via the sloader.a56 program.
-
-        toomf < a56.out > file.omf
-
-AUTHOR
-
-11/28/91
-v1.1 8/6/92
-v1.2 5/2/94
-
-Quinn C. Jensen
-1374 N 40 E
-Orem, UT  84057
-
-home: jensenq@zdomain.com (preferred address for a56 correspondence)
-work: jensenq@novell.com
diff --git a/README-1.3 b/README-1.3
deleted file mode 100644 (file)
index 6492dae..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-
-  a56 - a DSP5600X assembler - version 1.3
-
-/*
- * Copyright (C) 1990-1998 Quinn C. Jensen
- *
- * 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.  The author makes no representations
- * about the suitability of this software for any purpose.  It is
- * provided "as is" without express or implied warranty.
- *
- */
-
-V1.3 CHANGES
-
-    - Added intrinsic transcendental functions for constant literal
-      expressions (pi, sin, cos, tan atan, asin, acos, exp, ln, log,
-      pow)
-
-    - Added warnings for control register load/use hazards
-
-    - More sophisticated constant expression evaluation including
-      implicit float/integer conversion.  Results of expressions
-      are typed and so formatted in the listing and symbol table.
-
-    - Various fixes including stray pointers, etc. (Thanks to 
-      Dirk Farin farindk@trick.informatik.uni-stuttgart.de)
-
-Known bugs/deficiencies:
-
-    - MOVE to a control reg generates bogus code (always use MOVEC,
-      MOVEM, and MOVEP)
-
-Wish list
-
-    - Add support for new instructions and modes
-
-
----------------------------------------------------------------------------
-
-OVERVIEW
-
-This program was written as a vehicle to learn the intricacies
-of the DSP56001 instruction set, and to provide a tool for Unix-based
-DSP code development (for those of us without a NeXT machine.)
-
-The intent was to provide compatibility with Motorola assembler's syntax.
-But since the author did not have Motorola's assembler or its documentation,
-it is no doubt far from compatible.  Only a few pseudo-ops are implemented--
-probably only partially.
-
-Macros are not supported, except through the use of an external macro
-preprocessor, such as /lib/cpp.  To facilitate cpp macro expansion, multiple
-assembler statements on a single input line are delimited with an '@', e.g.:
-
-        #define JCHEQ(c,label) move #c,x0 @cmp x0,a @jeq label
-
-        #define JCHNE(c,label) move #c,x0 @cmp x0,a @jne label
-
-
-SUPPORTED PSEUDO-OPS
-
-The following is a list of the pseudo-ops that are recognized:
-
-        <symbol> = <expression>                         ;assign a symbol
-        <label> EQU <expression>                        ;ditto
-
-        ALIGN <number>                                  ;set location pointer
-                                                        ;to next integral
-                                                        ;multiple of <number>
-
-        ORG <space:> <expression>                       ;new location pointer
-        ORG <space:> <expression>, <space:> <expression>
-
-        DC <dc_list>                                    ;declare constants
-
-        DS <number>                                     ;reserve <number>
-                                                        ;words of space
-
-        <label> DSM <number>                            ;reserve space for
-                                                        ;properly aligned
-                                                        ;modulo-addressed
-                                                        ;buffer of size
-                                                        ;<number>, assigning
-                                                        ;the aligned starting
-                                                        ;address to <label>
-
-        PAGE <number>, <number>, <number>, <number>     ;ignored
-
-        INCLUDE <file>                                  ;file inclusion
-
-        END                                             ;end
-
-In addition, a "PSECT" pseudo-op was implemented.  It allows program sections
-to be defined and bopped in and out of, each with its own location counter and
-space.  The Motorola assembler probably does not have this pseudo-op, but no
-doubt supports the concept in some way.
-
-        PSECT <name> <space:><begin_addr>:<end_addr>    ;define
-
-        PSECT <name>                                    ;switch to psect <name>
-
-
-FUTURE DIRECTION
-
-The assembler probably generates bogus code here and there, and no doubt
-does not handle all of the syntax.  I welcome all comments, fixes and 
-enhancements.
-
-TO MAKE AND USE
-
-Type "make".
-
-The resulting program, a56, is used as follows:
-
-        a56 [-b] [-l] [-o output-file] file [...]
-
-An assembler listing is sent to the standard-output and an ascii-formatted
-object file (a56.out) is produced.  The "-b" option adds binary to the listing.
-"-l" causes included files to be listed.  "-o" directs the output to the
-specified file rather than the default, a56.out.
-
-A separate program, toomf, converts a56.out into "OMF" format suitable for 
-downloading to the 56001 via the sloader.a56 program.
-
-        toomf < a56.out > file.omf
-
-AUTHOR
-
-11/28/91
-v1.1 8/6/92
-v1.2 5/2/94
-v1.3 3/18/98
-
-Quinn C. Jensen
-1374 N 40 E
-Orem, UT  84057
-
-http://www.zdomain.com/~jensenq/
-
-home: jensenq@zdomain.com (preferred address for a56 correspondence)
-work: jensenq@novell.com