PiDP-8/I Software

Changes To A Field Guide to PDP-8 Assemblers
Log In

Changes to "A Field Guide to PDP-8 Assemblers" between 2017-12-18 08:40:25 and 2018-01-27 14:07:42

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
423
424
425
426
427
428
429
430

431
432
432
433
434
435
436
437
438

439
440
441







-
+


[pdpnasm]: http://people.csail.mit.edu/ebakke/pdp8/

**INCOMPLETE**


## License

Copyright © 2017 by Warren Young. This document is licensed under the terms of [the SIMH license][sl].
Copyright © 2017-2018 by Warren Young. This document is licensed under the terms of [the SIMH license][sl].

[sl]: https://tangentsoft.com/pidp8i/doc/trunk/SIMH-LICENSE.md