DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T a

⟦59e83b587⟧ TextFile

    Length: 5540 (0x15a4)
    Types: TextFile
    Names: »asm.1«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/asm/asm.1« 

TextFile

.so /usr/lib/tmac/tmac.e
.TH ASM 1 "1 May 1986"
.SH NAME
asm \- generic assembler
.SH SYNOPSIS
.B asm
[
.B \-o
binname] [
.B \-l
listname] [
.B \-x
xrefname] inputfile
.br
.SH DESCRIPTION
The generic assembler is an attempt to build a quick-and-dirty meta-
assembler, with which code for several types of microcomputers can be
generated. It outputs absolute code in two passes, contains a minimum of
pseudo-ops, and is quasi-portable between micro types. The opcodes and
instruction layout information is contained within tables, leaving the
code unchanged from micro to micro. There has been no effort expended to
make the assembler match any particular assembly format on the market, so
don't expect any miracles there.

The statup options specify various files for input and output. The basic
option is the name of the input file; normally it is suffixed by ".a",
although this is not necessary. If no file is given, then input is taken
from standard input. The
.B \-o
option introduces the name of the file to receive the binary
output. If the option does not exist, the binary goes to standard output
(since the output is actually in ASCII format, it won't bolix your screen
if you forget).  If the option is not followed immediately by a filename,
then the binary will be output to the input file name suffixed by ".o".
The format of the binary output is "Intel Standard Hexadecimal Format" and
is documented in the source code.
The
.B \-l
option similarly specifies the file for the assembly listing; if the
option is not given, no listing is produced. If the option is alone, then
the listing will go into the input file name suffixed with ".l". The
.B \-x
option specifies the file to receive the cross-reference; it defaults to
the same filename as the listing, and is deleted if the option is not
given.
.pp
The assembler boasts (or at least admits) the following features:
.in +.5i
.ip \(bu
Two pass, all labels are defined both forward and backward.
.ip \(bu
Absolute format code only, no relocation information available.
.ip \(bu
Table driven instruction formats, including single opcodes and fixed
numbers of operands.
.ip \(bu
Expression evaluation in operands is left-to-right, no precedence or
parentheses.
.ip \(bu
Predefined symbols accomodated.
.ip \(bu
Instructions formats that vary with the size of certain of their operands
are accomodated, with some restrictions.
.ip \(bu
Pseudo-ops include org, equ, set (for changing manifest variables), bss,
data, data2 (two bytes!!), string, seg (for setting up data segments that
are made contiguous right after pass 1)
and end.
.ip \(bu
Atoms in operands include labels, ops add (+), subtract (-), multiply (*),
integer divide (/), mod (%), and (&), or (|), and exclusive or (^),
decimal constants, hexadecimal constants (with a leading zero), right
justified zero-filled single characters ('x) and double characters ("xx).
The string pseudo-op supports strings surrounded by any unused delimiter.
.in -.5i
.pp
The pseudo op syntax is as follows:
.in +.5i
.ip "[label] org     expr
Set the value of the symbol in label to the current location counter; set
the location counter to the value of the expression.
.ip "label   equ     expr
Set the value of the symbol in label to the value of the expression. Any
such value may only be changed by a "set" pseudo.
.ip "label   set     expr
Reset the value of a symbol to the value of the expression.
.ip "[label] bss     expr
Set the value of the symbol in the label to the current location counter,
then set the location counter to its current value plus the value of the
expression.
.ip "[label] data    [:count:]expr
Set the value of the label to the current location counter, and then
generate count (default 1) bytes of data, each containing the value of the
expression. Count must contain no forward referenced symbols.
.ip "[label] data2   [:count:]expr
Set the value of the label to the current location counter, and then
generate count (default 1) double-bytes of data, each double-byte
containing the value of the expression.
Count must contain no forward referenced symbols.
.ip "[label] string  $string$
Set the value of the label to the current location counter, and then
generate the string as bytes from left to right, appending a single nul
byte. The string delimiter shown above ($) may be any character that
doesn't appear in the string itself, except blank or tab. The special
escapes \\t (tab), \\r (carriage return), \\n (newline), \\b (backspace),
\\? (del), \\^ (escape), \\nn (nn is any hex pair) and \\\\ (\\ itself)
are allowed.
.ip "    seg   [name]
Declare a new or reuse an older data segment, which defines it's own
location counter. The segment that is predefined at the beginning of the
assembler may be returned to by a
.b seg
with no argument.  Any number of segments may be invoked.  Each segment's
location counter starts at zero during pass 1. When pass 1 is complete,
the segments are "stacked" in the order that they were created, so that
the second segment's lc starts at the first location following the end of
the first segment's highest lc.  These computed lc's are displayed in the
pass 2 listing output.  The name used may be any non-blank-containing
string; it is also independent of the symbol name space. At this time,
there are no other definable characteristics of segments.
.in -.5i
.SH "MACHINES SUPPORTED
With this edition are included tables for the Motorola 6803 and 6809, the
Intel 8085 and 6502.
.SH "OTHER FILES
/tmp/asm* - intermediate files.
.SH AUTHOR
Lyle McElhaney