a80 1.7.0
Intel 8080/Zilog Z80 assembler.
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
a80
a80
is an assembler written in D for the
Intel 8080 (and, by extension, the Zilog Z80) CPU. It produces
binaries for CP/M using the standard entry point of 0x100
.
a80
is developed on OpenBSD but
should work on any system that D targets.
a80
is not an exact clone of any pre-existing CP/M assember, nor
does it want to be. The differences will be explained in this
document.
a80
also is quite conscious about its design practice and
implementation. It is written to be the subject of a series of
blog posts in which we attempt
to demystify the building of programming tools, and as such very
intentionally does not use some very obvious data structures. And
it may make some seemingly peculiar design choices. My goal is to
have written a real assembler for a real CPU that you can still
purchase today (in the form of the Z80) that true beginners can
come to understand.
After the blog series, if we want to turn this into a clone of an existing CP/M assembler, I'm all for it.
Bug reports are welcome at any time.
Usage
a80 file.asm
The output will be file.com
.
Syntax
A line of assembly takes the following form:
[label:] [op [arg1[, arg2]]] [; comment]
An example of an assembly program can be found in fib.asm
.
a80
only understands Intel 8080 opcodes.
The CP/M EQU
directive is supported however you cannot use other
labels as a value nor can you use expressions.
All op and arg must be lowercase, though labels may include capital letters.
Numbers
All numbers must be in hex and must end with an h
. If a hex
number begins with a-f
, it must be prefixed with 0
. This is not
too dissimilar from other CP/M assemblers.
Strings
The DB
pseudo-op is available. Strings can be written within
single quotes. Single characters will be interpreted to ASCII.
Note this important distinction:
db 0
will output '0'
or 0x30
in ASCII.
db 0h
will output 0x00
.
If you want a comma you need to use db 2c
or put it in a string.
Both the semicolon and the single quote are illegal in strings and
cannot be written as a single character. However, they can still be
input by using their hex code: db 3b
will input a semicolon
and db 27
will input a single quote. This is a limitation of the
parser and is welcome to be fixed.
License
ISC license. See LICENSE
for more information.
- Registered by Brian Callahan
- 1.7.0 released 3 years ago
- ibara/a80
- ISC
- Copyright © 2021, Brian Callahan
- Authors:
- Dependencies:
- none
- Versions:
-
3.2.2 2021-May-29 3.2.1 2021-May-22 3.2.0 2021-May-01 3.1.0 2021-Apr-19 3.0.3 2021-Apr-15 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
0 downloads this month
-
57 downloads total
-
- Score:
- 1.7
- Short URL:
- a80.dub.pm