PAL-III
Encyclopedia : P : PA : PAL : PAL-III
PAL-III was the assembly language processor for the PDP-8 computer family sold by Digital Equipment Corporation of Maynard, Massachusetts. It followed an earlier product known as PAL-8.
PAL-III allowed the efficient production of PDP-8 machine code from a human-readable source language. It also supported PDP-8-specific architectural features such as 128-word code pages, the special use of Page 0, IOTs, and automated addressing of "far" data objects.
Here is a typical program written in PAL-III:
/ Define two symbols for I/O Transfer (IOT) instructions / TSF = 6041 / Teleprinter Skip-on-Flag TLS = 6046 / Teleprinter Load Sequence (Clear flag and print from AC) / / (Many PDP-8 assemblers contained these very basic IOTs predefined)*200 / Assemble the following code starting at location 0200 / (the beginning of Page 1 in Field 0)
START, CLA CLL / Clear the AC and the Link bit TAD (DATA-1) / Point AC just *BEFORE* the data (accounting for later pre-increment behavior) DCA 10 / Put that into one of ten auto-pre-increment memory locations LOOP, TSF / Test the printer "ready" flag, skip if ready JMP .-1 / Jump back if not yet ready TAD I 10 / Pre-increment mem location 10, fetch indirect to get the next character of our message SNA / Skip on non-zero AC HLT / Else halt at end of message TLS / Clear the printer "ready" flag and output character contained in the AC CLA CLL / Clear AC for the next loop JMP LOOP / Jump back for the next character
DATA, "H / A well-known message "e / "l / NOTE: "l / "o / Strings in PAL-8 and PAL-III were "sixbit" ", / To use ASCII, we'll have to spell that out, character by character " / "w / "o / "r / "l / "d / "! / 015 / 012 / 0 / Mark the end of our .ASCIZ string ('cause .ASCIZ hadn't been invented yet!)
This illustrates most of the salient features of the language:
- Symbols could be defined by the programmer.
- The usual simple arithmetic can be performed at assembly-time using symbols.
- Labels are delimited by a comma (rather than the more-usual colon).
- "/" begins a comment that runs to the end of the current line.
- Opcode mnemonics could be "or"ed together where appropriate (as in "CLA CLL").
- "I" used with a memory-access opcode indicates one level of "indirection" (which is all the PDP-8 could do!)
- Data literals could be created on the current page using "(litval)" or on Page 0 using "[litval]".
- "." meant "the current location counter".
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.
