1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
-
+
+
+
+
+
-
+
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
+
+
|
# Introduction
There are many commonly-used PDP-8 assemblers, several of which we ship with the PiDP-8/I software distribution; there are more available elsewhere. How does a programmer discriminate among them, other than to carefully read each one's manual, then spend several months writing code in it to develop a feel for what it is like? They cannot all be equal, else they'd be interchangeable and you'd just pick one based on what was available. One cannot be clearly better for all things, else everyone would just use that.
This article is a **preliminary** survey of these assemblers with an eye toward listing the key distinctions among them. It is modeled on a birder's field guide: having read through this document, a reader should be able to recognize which assembler(s) are likely to be able to process a given piece of assembly code. Eventually, we hope that a programmer beginning a PDP-8 assembly language project should be able to make a sensible selection based on the information in this document, though that ambition likely exceeds this document's current scope.
This article is a **preliminary** survey of these assemblers with an eye toward listing the key distinctions among them. It is modeled on a birder's field guide: having read through this document, a reader should be able to recognize which assembler(s) are likely to be able to process a given piece of assembly code by recognizing uses of key features of the assemblers we describe here.
Secondarily, we hope to provide enough information that a programmer beginning a PDP-8 assembly language project be able to make a sensible assembler selection without getting bogged down in minutiae. That ambition likely exceeds this document's current scope, but we strive anyway.
A distant third goal is historical: we wish to document the evolution of the major PDP-8 assemblers in enough detail that the reader can anchor each covered assembler in its historical context. Although this history is of inherent interest, we do this primarily to make it easier for the reader to keep these assemblers and their interrelationships straight. An evolutionary narrative makes this easier than would discussing each assembler as if it were created in isolation.
When multiple versions of a given assembler are available, our commentary applies to the version currently in the PiDP-8/I software distribution, if present, or the latest available version of the assembler if it is hosted externally. We tend to prefer *earlier* manuals, however, interested as we are here in history.
## Criteria
This survey does not include every PDP-8 assembler, on purpose. This is not a comprehensive survey, it is not a genealogy project, and it is not an advocacy platform. Our purpose here is to list useful options for the practicing PDP-8 assembly language programmer.
This survey does not include every PDP-8 assembler, on purpose. This is not a comprehensive survey, it is not a genealogy project, and it is not an advocacy platform. In addition to meeting the goals laid out in the previous section, an assembler must meet all of these criteria to be covered:
The assemblers listed meet these criteria:
* Runs on the PiDP-8/I.
* It is readily available online.
* It must be readily available online.
* It offers a valuable capability to the end user:
* It must offer at least one of the following capabilities to the end user:
* It is the back end assembler for some other language which is itself important.
* Be the back end assembler for some other language which is itself important.
* It is required to build an important body of code which is readily available online.
* Be required to build an important body of code which is readily available online.
* It is the best available option for its primary platform, or it is an important secondary option.
* Be the best available assembler for its primary platform, or at least be an important secondary option.
* When it is a member of a family or series of assemblers, it is the latest available option for its platform.
* It must run on the PiDP-8/I, either under Raspbian Linux or under one of the PDP-8 OSes we distribute.
That list is not intended to be normative or complete, just informative: if an assembler fails to meet all of those criteria, that is likely why it is not listed here.
As a rule, we discuss only the latest available version of any given assembler. Our MACREL coverage is for MACREL v2, for example, not MACREL v1, even though the latter is more readily found online. We've made an exception for PAL-D, covering both the 4K and 8K versions because they were contemporaneous, serving different segments of the PDP-8 market.
## Disclaimer
The author is not an expert in this topic, though he has occasionally consulted with experts. The claims in this document are checked against manuals, published example code, and sometimes against running implementations. However, do not expect it to be complete or comprehensive.
|