A MACRO-11 assembler for the PDP-11 in portable C source code. Copyright (c) 2001, Richard Krehbiel All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: o Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. o Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. o Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Files: macro11.c This is the vast bulk of the code object.c Functions for writing RT-11 compatible .OBJ files mlb.c Classes (!) for reading RT-11 macro libraries stream2.c Functions for managing input streams and buffers rad50.c Functions for converting text to and from RAD50 util.c A few general utility fuctions macro11.h, object.h, mlb.h, stream2.h, rad50.h, util.h types and symbols exported from the associated sources. dumpobj.c A program I wrote to examine the output from RT-11's MACRO.SAV program and compare it with my own output. makefile, depends A simple makfile for Linux; simple enough, it should be convertible to any Unix. macro11.dsp, dumpobj.dsp, macro11.dsw Visual Studio 6 projects README This file LICENSE The copyright notice and license CHANGES A list of changes from previous versions TODO A list of things that may need fixing Notes: Sorry, I am a believer in 4 column hardware tabs, for a number of reasons, mostly regarding editing convenience. (I did untabify this README file though.) The bulk of my development was done in Microsoft Visual Studio 6, but I also have a Linux partition and the Cygnus Windows toolkit, so you can send me "patches" and I will be able to apply them with the "patch" utility. The macro11 command line: macro11 [options...] files... Options: -v Prints program version. -e opt .ENABL option. Implemented options are AMA, GBL, and also .LIST options ME, BEX, and MD, though the status of listing control is presently very poor. -d opt .DSABL option; same options as -e. -m macname Gives a macro library name. Up to 32 macro libraries may be specified, one per -m option. Note: unlike MACRO.SAV, SYSMAC.SML is not automatically included; you must name it. -p macpath For any .MCALL <macro> directive, macro11 will first search -m macro libraries, then it will search the MCALL path for a file named <macro>.MAC to locate the body of the macro. The MCALL path is an environment variable containing directory names separated by delimiters (":" for Unix-style targets; ";" for Windows). The -p command line options appends a directory name to the MCALL path. -o objname Gives the name of the object file. No extension is assumed; if you want .OBJ you have to say it. With no -o option, no object file is generated. -l lstname Gives the name of a listing file. The name "-" may be given to write the listing to stdout. No extension is assumed; if you want .LST you have to say it. With no -l option, no listing file is written. -x Tells macro11 not to assemble anything, but rather to simply extract all the macros in all the -m macro libraries into individual .MAC files in the current directory. This should be the last option given, as none following will be processed. files... Any number of input files. They will be assembled as if they were concatenated together. You may define the MCALL environment variable prior to invoking macro11, as a path to directories containing macros.