Jason Self 2a4f7ac397 a56: Restructure the various READMEs; split out changes into a separate changelog so as to have a single README. 6 years ago
..
.gitattributes e30ee6c7c8 a56: .gitattributes: Exclude undesired files from git archive. 6 years ago
.gitignore fac13e7a15 a56: Add .gitignore file 6 years ago
ChangeLog 2a4f7ac397 a56: Restructure the various READMEs; split out changes into a separate changelog so as to have a single README. 6 years ago
Makefile 2f1531e405 a56: Makefile: add hardening stuff to CFLAGS 6 years ago
README 2a4f7ac397 a56: Restructure the various READMEs; split out changes into a separate changelog so as to have a single README. 6 years ago
a56.1 cf401b81d0 a56: Add manpage by Denis Briand 6 years ago
a56.h 04429b260f a56: add some #include's to calm compiler 6 years ago
a56.key 6e823d0b6e Setting up repository 6 years ago
a56.y 6e823d0b6e Setting up repository 6 years ago
frac2int.c 6e823d0b6e Setting up repository 6 years ago
getopt.c 6e823d0b6e Setting up repository 6 years ago
keybld.1 69463f5011 a56: Add manpage for keybld by Thorsten Alteholz 6 years ago
keybld.c 6e823d0b6e Setting up repository 6 years ago
lex.c f07be12031 a56: parameters of this strtol() differ from strtol() in stdlib.h - rename it to a56_strtol 6 years ago
main.c 0b0ac7b7b8 a56: non-void should return a value bug in main.c 6 years ago
subs.c f07be12031 a56: parameters of this strtol() differ from strtol() in stdlib.h - rename it to a56_strtol 6 years ago
tok.awk 6e823d0b6e Setting up repository 6 years ago
toktab.c 6e823d0b6e Setting up repository 6 years ago
toomf.c 04429b260f a56: add some #include's to calm compiler 6 years ago
torom.c 6e823d0b6e Setting up repository 6 years ago

README

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:

= ;assign a symbol
EQU ;ditto

ALIGN ;set location pointer
;to next integral
;multiple of

ORG ;new location pointer
ORG ,

DC ;declare constants

DS ;reserve
;words of space

DSM ;reserve space for
;properly aligned
;modulo-addressed
;buffer of size
;, assigning
;the aligned starting
;address to

PAGE , , ,
;ignored

INCLUDE ;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 :
;define

PSECT ;switch to psect

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.