53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
-
+
+
+
-
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
+
-
+
-
-
-
+
+
+
+
+
+
+
+
+
-
+
|
## <a id="pal-iii" name="pal3"></a>PAL-III
| **Introduced** | August 1965
| **Manual** | [PDF, 790 kB](http://www.telegraphics.com.au/doc/paliii.pdf)
| **Delivery** | paper tape
We may presume from the name that PAL-III has two predecessors. I was able to find a reference to DEC product number 5-1-S, the Program Assembly Language for the PDP-5 in [the PDP-5 program catalog][pc5] from December 1964. That catalog also says that the replacement for PAL for the PDP-5 is [an early version of PAL-III][p83s] for the PDP-8! This is not surprising, as the PDP-8 directly replaced the PDP-5 in DEC's product line, being upward compatible with it. I have not been able to find a reference to PAL-II. Perhaps it went the way of Angular 3, Winamp 4, Netscape 5, PHP 6, MySQL 7, QuickTime 8, and Windows 9.
We may presume from the name that PAL-III has at least two predecessors. I was able to find a reference to DEC product number 5-1-S, the Program Assembly Language for the PDP-5 in [the PDP-5 program catalog][pc5] from December 1964; we may reasonably call this assembler PAL-I. That catalog also says that the replacement for PDP-5 PAL is [an early version of PAL-III][p83s] for the PDP-8. This makes sense, because the PDP-8 directly replaced the PDP-5 in DEC's product line, being upward compatible with it.
I have yet to come across a reference to anything called "PAL-II." Perhaps it went the way of Angular 3, Winamp 4, Netscape 5, PHP 6, MySQL 7, QuickTime 8, and Windows 9.
The introduction date is for the earliest PAL-III manual I have found, but clearly we may extend it at least back to December 1964. An [early PDP-5 brochure][pdp5b] I found from March 1964 speaks of a "Symbolic Assembler" rather than PAL; is that just marketing-speak, or does PAL first date to somewhere in that range?
The introduction date above is the publication date of the earliest PAL-III manual I have found, but clearly PAL's ancestry dates back to at least December 1964. An [early PDP-5 brochure][pdp5b] I found from March 1964 speaks of a "Symbolic Assembler" rather than PAL; is that just marketing-speak for "PAL," or does PAL first date to somewhere in that range?
The PAL-III assembler shipped on [punched paper tape](https://en.wikipedia.org/wiki/Punched_tape) as part of the grandiosely-named "PDP-8 Assembly System." This amounted to an assembler, an editor, a debugger, and a loader, each a separate paper tape. The programmer would first toggle the RIM loader into the PDP-8's front panel, then use that to load the BIN loader from a fifth paper tape, separate from the PDP-8 Assembly System, then run each of these tapes through the paper tape reader repeatedly — reusing the still-in-core BIN loader each time — in order to iterate his way toward a working program!
The PAL-III assembler shipped on [punched paper tape](https://en.wikipedia.org/wiki/Punched_tape) as part of the grandiosely-named "PDP-8 Assembly System." This amounted to an assembler, an editor, a debugger, and a loader, each a separate paper tape. The programmer would first toggle the RIM loader into the PDP-8's front panel, then use that to load the BIN loader from a fifth paper tape, separate from the PDP-8 Assembly System, then run each of these tapes through the paper tape reader repeatedly — reusing the still-in-core BIN loader each time — in order to iterate his way toward a working program.
The PAL-III assembler tape required at least two passes through the tape reader in order to produce a computer-readable BIN format output tape, plus an optional third pass if you also wanted a human-readable listing on the teletype.
If you look at pictures of PDP-8 computers, you can often see a tray with narrow slots in it, each meant to hold one of these key paper tapes, as they were needed near at hand when using a paper-tape based PDP-8. There is a good picture of a blue one on the cover of the [OS/8 Handbook][os8m], 1974 ed.
PAL-III can be considered the baseline assembler for a PDP-8, since for roughly its first decade, PDP-8s sold for interactive use came with a Teletype Model 33 ASR with built-in paper tape reader and punch, which meant the ability to read paper tapes was a baseline feature for interactively-used PDP-8s. (Contrast headless embedded PDP-8s, a very common use for the PDP-8 prior to the introduction of the microprocessor.)
PAL-III can be considered the baseline assembler for a PDP-8, since for roughly its first decade, PDP-8s sold for interactive use came with a Teletype Model 33 ASR with built-in paper tape reader and punch, which meant the ability to read paper tapes was a baseline feature for interactively-used PDP-8s. (Contrast [headless][hlc] embedded PDP-8s, a very common use for the PDP-8 prior to the introduction of the microprocessor.)
More importantly for our purposes here, most of the other assemblers surveyed here share PAL-III's basic syntax. This doubtless follows on from the prior point, since it meant PAL-III had the first-mover advantage.
More importantly for our purposes here, most of the other assemblers surveyed here share PAL-III's basic syntax. This doubtless follows on from the prior point, since it meant PAL-III had the [first-mover advantage][fma].
A brief summary of the feature set of PAL-III:
* Full support of the PDP-8 instruction set:
* All basic processor instructions and several microcoded combinations (`CIA`, `SPA`, etc.) predefined
* Many peripheral IOT instructions predefined:
* auto-restart type KR01
* DECtape types 555 and TU55
* EAE options for PDP-5 and PDP-8
* high-speed punch/reader
* [Teletype Model 33 ASR][asr33] keyboard/printer and tape punch/reader
* [high-speed paper tape punch][pp8i] and reader
* DECtape types [555][dt555] and [TU55][tu55]
* auto-restart type [KR01][kr01]
* [Type 182 EAE][t182]
* interrupt controller
* line printer type 645
* line printer type 645 (Analex?)
* teletype/punch
* terminal keyboard/reader
* and many more less well-known peripherals!
* and many lesser-known peripherals!
* Ability to define new instructions
* Core memory `FIELD` selection
* Zero-page addressing
* Indirect addressing
* `EXPUNGE`, `FIXTAB`, and `FIXMRI` pseudo-ops to augment or redefine the predefined instruction set
* `PAUSE` assembly output, giving the user time to do manual things while the assembler waits
* Radix selection with `DECIMAL` and `OCTAL` pseudo-ops
We give this list not to try to replace its manual, but instead to allow searching this document for language features. You may assume that assemblers listed below also support these listed features, except where we say otherwise. Especially within the PAL genealogical line, compatibility with the baseline PAL-III syntax is assumed.
[asr33]: https://archive.org/stream/bitsavers_decpdp8pdpManualFeb66_21177111/F-87_PDP-8_Maintenance_Manual_Feb66#page/n145/mode/1up
[dt555]: https://archive.org/details/bitsavers_decdectapeDec64_1008579
[hlc]: https://en.wikipedia.org/wiki/Headless_computer
[fma]: https://en.wikipedia.org/wiki/First-mover_advantage
[kr01]: https://archive.org/stream/bitsavers_decpdp8pdpManualFeb66_21177111/F-87_PDP-8_Maintenance_Manual_Feb66#page/n95/mode/1up
[p83s]: http://www.ricomputermuseum.org/Home/equipment/pdp-8s/pdp-8-software
[pc5]: http://bitsavers.org/pdf/dec/pdp5/PDP-5_pgmLibr_1964.pdf
[pdp5b]: http://archive.computerhistory.org/resources/text/DEC/pdp-5/DEC.PDP-5.1964.102646094.pdf
[pp8i]: https://archive.org/details/bitsavers_decpdp8pdphSpeedPaperTapePunchOptionApr69_387932
[t182]: https://archive.org/stream/bitsavers_decpdp8pdpManualFeb66_21177111/F-87_PDP-8_Maintenance_Manual_Feb66#page/n96/mode/1up
[p83s]: http://www.ricomputermuseum.org/Home/equipment/pdp-8s/pdp-8-software
[tu55]: https://archive.org/details/bitsavers_decdectape_3543487
## <a id="macro-8"></a>MACRO-8
| **Introduced** | October 1965
| **Manual** | [PDF, 1.7 MB](https://www.grc.com/pdp-8/docs/MACRO-8_Programming_Manual.pdf)
| **Delivery** | paper tape
|