Wiki page
[A Field Guide to PDP-8 Assemblers] by
tangent
2018-01-30 10:45:52.
0000: 44 20 32 30 31 38 2d 30 31 2d 33 30 54 31 30 3a D 2018-01-30T10:
0010: 34 35 3a 35 32 2e 30 36 30 0a 4c 20 41 5c 73 46 45:52.060.L A\sF
0020: 69 65 6c 64 5c 73 47 75 69 64 65 5c 73 74 6f 5c ield\sGuide\sto\
0030: 73 50 44 50 2d 38 5c 73 41 73 73 65 6d 62 6c 65 sPDP-8\sAssemble
0040: 72 73 0a 4e 20 74 65 78 74 2f 78 2d 6d 61 72 6b rs.N text/x-mark
0050: 64 6f 77 6e 0a 50 20 63 34 61 38 34 34 39 61 33 down.P c4a8449a3
0060: 32 35 62 37 64 30 66 39 65 39 35 64 33 32 65 65 25b7d0f9e95d32ee
0070: 36 66 64 64 38 31 34 30 35 37 37 61 62 62 64 0a 6fdd8140577abbd.
0080: 55 20 74 61 6e 67 65 6e 74 0a 57 20 34 33 36 35 U tangent.W 4365
0090: 35 0a 23 20 49 6e 74 72 6f 64 75 63 74 69 6f 6e 5.# Introduction
00a0: 0d 0a 0d 0a 54 68 65 72 65 20 61 72 65 20 6d 61 ....There are ma
00b0: 6e 79 20 63 6f 6d 6d 6f 6e 6c 79 2d 75 73 65 64 ny commonly-used
00c0: 20 50 44 50 2d 38 20 61 73 73 65 6d 62 6c 65 72 PDP-8 assembler
00d0: 73 2c 20 73 65 76 65 72 61 6c 20 6f 66 20 77 68 s, several of wh
00e0: 69 63 68 20 77 65 20 73 68 69 70 20 77 69 74 68 ich we ship with
00f0: 20 74 68 65 20 50 69 44 50 2d 38 2f 49 20 73 6f the PiDP-8/I so
0100: 66 74 77 61 72 65 20 64 69 73 74 72 69 62 75 74 ftware distribut
0110: 69 6f 6e 3b 20 74 68 65 72 65 20 61 72 65 20 6d ion; there are m
0120: 6f 72 65 20 61 76 61 69 6c 61 62 6c 65 20 65 6c ore available el
0130: 73 65 77 68 65 72 65 2e 20 48 6f 77 20 64 6f 65 sewhere. How doe
0140: 73 20 61 20 70 72 6f 67 72 61 6d 6d 65 72 20 64 s a programmer d
0150: 69 73 63 72 69 6d 69 6e 61 74 65 20 61 6d 6f 6e iscriminate amon
0160: 67 20 74 68 65 6d 2c 20 6f 74 68 65 72 20 74 68 g them, other th
0170: 61 6e 20 74 6f 20 63 61 72 65 66 75 6c 6c 79 20 an to carefully
0180: 72 65 61 64 20 65 61 63 68 20 6f 6e 65 27 73 20 read each one's
0190: 6d 61 6e 75 61 6c 2c 20 74 68 65 6e 20 73 70 65 manual, then spe
01a0: 6e 64 20 73 65 76 65 72 61 6c 20 6d 6f 6e 74 68 nd several month
01b0: 73 20 77 72 69 74 69 6e 67 20 63 6f 64 65 20 69 s writing code i
01c0: 6e 20 69 74 20 74 6f 20 64 65 76 65 6c 6f 70 20 n it to develop
01d0: 61 20 66 65 65 6c 20 66 6f 72 20 77 68 61 74 20 a feel for what
01e0: 69 74 20 69 73 20 6c 69 6b 65 3f 20 54 68 65 79 it is like? They
01f0: 20 63 61 6e 6e 6f 74 20 61 6c 6c 20 62 65 20 65 cannot all be e
0200: 71 75 61 6c 2c 20 65 6c 73 65 20 74 68 65 79 27 qual, else they'
0210: 64 20 62 65 20 69 6e 74 65 72 63 68 61 6e 67 65 d be interchange
0220: 61 62 6c 65 20 61 6e 64 20 79 6f 75 27 64 20 6a able and you'd j
0230: 75 73 74 20 70 69 63 6b 20 6f 6e 65 20 62 61 73 ust pick one bas
0240: 65 64 20 6f 6e 20 77 68 61 74 20 77 61 73 20 61 ed on what was a
0250: 76 61 69 6c 61 62 6c 65 2e 20 4f 6e 65 20 63 61 vailable. One ca
0260: 6e 6e 6f 74 20 62 65 20 63 6c 65 61 72 6c 79 20 nnot be clearly
0270: 62 65 74 74 65 72 20 66 6f 72 20 61 6c 6c 20 74 better for all t
0280: 68 69 6e 67 73 2c 20 65 6c 73 65 20 65 76 65 72 hings, else ever
0290: 79 6f 6e 65 20 77 6f 75 6c 64 20 6a 75 73 74 20 yone would just
02a0: 75 73 65 20 74 68 61 74 2e 0d 0a 0d 0a 54 68 69 use that.....Thi
02b0: 73 20 61 72 74 69 63 6c 65 20 69 73 20 61 20 2a s article is a *
02c0: 2a 70 72 65 6c 69 6d 69 6e 61 72 79 2a 2a 20 73 *preliminary** s
02d0: 75 72 76 65 79 20 6f 66 20 74 68 65 73 65 20 61 urvey of these a
02e0: 73 73 65 6d 62 6c 65 72 73 20 77 69 74 68 20 61 ssemblers with a
02f0: 6e 20 65 79 65 20 74 6f 77 61 72 64 20 6c 69 73 n eye toward lis
0300: 74 69 6e 67 20 74 68 65 20 6b 65 79 20 64 69 73 ting the key dis
0310: 74 69 6e 63 74 69 6f 6e 73 20 61 6d 6f 6e 67 20 tinctions among
0320: 74 68 65 6d 2e 20 49 74 20 69 73 20 6d 6f 64 65 them. It is mode
0330: 6c 65 64 20 6f 6e 20 61 20 62 69 72 64 65 72 27 led on a birder'
0340: 73 20 66 69 65 6c 64 20 67 75 69 64 65 3a 20 68 s field guide: h
0350: 61 76 69 6e 67 20 72 65 61 64 20 74 68 72 6f 75 aving read throu
0360: 67 68 20 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 gh this document
0370: 2c 20 61 20 72 65 61 64 65 72 20 73 68 6f 75 6c , a reader shoul
0380: 64 20 62 65 20 61 62 6c 65 20 74 6f 20 72 65 63 d be able to rec
0390: 6f 67 6e 69 7a 65 20 77 68 69 63 68 20 61 73 73 ognize which ass
03a0: 65 6d 62 6c 65 72 28 73 29 20 61 72 65 20 6c 69 embler(s) are li
03b0: 6b 65 6c 79 20 74 6f 20 62 65 20 61 62 6c 65 20 kely to be able
03c0: 74 6f 20 70 72 6f 63 65 73 73 20 61 20 67 69 76 to process a giv
03d0: 65 6e 20 70 69 65 63 65 20 6f 66 20 61 73 73 65 en piece of asse
03e0: 6d 62 6c 79 20 63 6f 64 65 20 62 79 20 72 65 63 mbly code by rec
03f0: 6f 67 6e 69 7a 69 6e 67 20 75 73 65 73 20 6f 66 ognizing uses of
0400: 20 6b 65 79 20 66 65 61 74 75 72 65 73 20 6f 66 key features of
0410: 20 74 68 65 20 61 73 73 65 6d 62 6c 65 72 73 20 the assemblers
0420: 77 65 20 64 65 73 63 72 69 62 65 20 68 65 72 65 we describe here
0430: 2e 0d 0a 0d 0a 53 65 63 6f 6e 64 61 72 69 6c 79 .....Secondarily
0440: 2c 20 77 65 20 68 6f 70 65 20 74 6f 20 70 72 6f , we hope to pro
0450: 76 69 64 65 20 65 6e 6f 75 67 68 20 69 6e 66 6f vide enough info
0460: 72 6d 61 74 69 6f 6e 20 74 68 61 74 20 61 20 70 rmation that a p
0470: 72 6f 67 72 61 6d 6d 65 72 20 62 65 67 69 6e 6e rogrammer beginn
0480: 69 6e 67 20 61 20 50 44 50 2d 38 20 61 73 73 65 ing a PDP-8 asse
0490: 6d 62 6c 79 20 6c 61 6e 67 75 61 67 65 20 70 72 mbly language pr
04a0: 6f 6a 65 63 74 20 62 65 20 61 62 6c 65 20 74 6f oject be able to
04b0: 20 6d 61 6b 65 20 61 20 73 65 6e 73 69 62 6c 65 make a sensible
04c0: 20 61 73 73 65 6d 62 6c 65 72 20 73 65 6c 65 63 assembler selec
04d0: 74 69 6f 6e 20 77 69 74 68 6f 75 74 20 67 65 74 tion without get
04e0: 74 69 6e 67 20 62 6f 67 67 65 64 20 64 6f 77 6e ting bogged down
04f0: 20 69 6e 20 6d 69 6e 75 74 69 61 65 2e 20 54 68 in minutiae. Th
0500: 61 74 20 61 6d 62 69 74 69 6f 6e 20 6c 69 6b 65 at ambition like
0510: 6c 79 20 65 78 63 65 65 64 73 20 74 68 69 73 20 ly exceeds this
0520: 64 6f 63 75 6d 65 6e 74 27 73 20 63 75 72 72 65 document's curre
0530: 6e 74 20 73 63 6f 70 65 2c 20 62 75 74 20 77 65 nt scope, but we
0540: 20 73 74 72 69 76 65 20 61 6e 79 77 61 79 2e 0d strive anyway..
0550: 0a 0d 0a 41 20 64 69 73 74 61 6e 74 20 74 68 69 ...A distant thi
0560: 72 64 20 67 6f 61 6c 20 69 73 20 68 69 73 74 6f rd goal is histo
0570: 72 69 63 61 6c 3a 20 77 65 20 77 69 73 68 20 74 rical: we wish t
0580: 6f 20 64 6f 63 75 6d 65 6e 74 20 74 68 65 20 65 o document the e
0590: 76 6f 6c 75 74 69 6f 6e 20 6f 66 20 74 68 65 20 volution of the
05a0: 6d 61 6a 6f 72 20 50 44 50 2d 38 20 61 73 73 65 major PDP-8 asse
05b0: 6d 62 6c 65 72 73 20 69 6e 20 65 6e 6f 75 67 68 mblers in enough
05c0: 20 64 65 74 61 69 6c 20 74 68 61 74 20 74 68 65 detail that the
05d0: 20 72 65 61 64 65 72 20 63 61 6e 20 61 6e 63 68 reader can anch
05e0: 6f 72 20 65 61 63 68 20 63 6f 76 65 72 65 64 20 or each covered
05f0: 61 73 73 65 6d 62 6c 65 72 20 69 6e 20 69 74 73 assembler in its
0600: 20 68 69 73 74 6f 72 69 63 61 6c 20 63 6f 6e 74 historical cont
0610: 65 78 74 2e 20 41 6c 74 68 6f 75 67 68 20 74 68 ext. Although th
0620: 69 73 20 68 69 73 74 6f 72 79 20 69 73 20 6f 66 is history is of
0630: 20 69 6e 68 65 72 65 6e 74 20 69 6e 74 65 72 65 inherent intere
0640: 73 74 2c 20 77 65 20 64 6f 20 74 68 69 73 20 70 st, we do this p
0650: 72 69 6d 61 72 69 6c 79 20 74 6f 20 6d 61 6b 65 rimarily to make
0660: 20 69 74 20 65 61 73 69 65 72 20 66 6f 72 20 74 it easier for t
0670: 68 65 20 72 65 61 64 65 72 20 74 6f 20 6b 65 65 he reader to kee
0680: 70 20 74 68 65 73 65 20 61 73 73 65 6d 62 6c 65 p these assemble
0690: 72 73 20 61 6e 64 20 74 68 65 69 72 20 69 6e 74 rs and their int
06a0: 65 72 72 65 6c 61 74 69 6f 6e 73 68 69 70 73 20 errelationships
06b0: 73 74 72 61 69 67 68 74 2e 20 41 6e 20 65 76 6f straight. An evo
06c0: 6c 75 74 69 6f 6e 61 72 79 20 6e 61 72 72 61 74 lutionary narrat
06d0: 69 76 65 20 6d 61 6b 65 73 20 74 68 69 73 20 65 ive makes this e
06e0: 61 73 69 65 72 20 74 68 61 6e 20 77 6f 75 6c 64 asier than would
06f0: 20 64 69 73 63 75 73 73 69 6e 67 20 65 61 63 68 discussing each
0700: 20 61 73 73 65 6d 62 6c 65 72 20 61 73 20 69 66 assembler as if
0710: 20 69 74 20 77 65 72 65 20 63 72 65 61 74 65 64 it were created
0720: 20 69 6e 20 69 73 6f 6c 61 74 69 6f 6e 2e 0d 0a in isolation...
0730: 0d 0a 57 68 65 6e 20 6d 75 6c 74 69 70 6c 65 20 ..When multiple
0740: 76 65 72 73 69 6f 6e 73 20 6f 66 20 61 20 67 69 versions of a gi
0750: 76 65 6e 20 61 73 73 65 6d 62 6c 65 72 20 61 72 ven assembler ar
0760: 65 20 61 76 61 69 6c 61 62 6c 65 2c 20 6f 75 72 e available, our
0770: 20 63 6f 6d 6d 65 6e 74 61 72 79 20 61 70 70 6c commentary appl
0780: 69 65 73 20 74 6f 20 74 68 65 20 76 65 72 73 69 ies to the versi
0790: 6f 6e 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 on currently in
07a0: 74 68 65 20 50 69 44 50 2d 38 2f 49 20 73 6f 66 the PiDP-8/I sof
07b0: 74 77 61 72 65 20 64 69 73 74 72 69 62 75 74 69 tware distributi
07c0: 6f 6e 2c 20 69 66 20 70 72 65 73 65 6e 74 2c 20 on, if present,
07d0: 6f 72 20 74 68 65 20 6c 61 74 65 73 74 20 61 76 or the latest av
07e0: 61 69 6c 61 62 6c 65 20 76 65 72 73 69 6f 6e 20 ailable version
07f0: 6f 66 20 74 68 65 20 61 73 73 65 6d 62 6c 65 72 of the assembler
0800: 20 69 66 20 69 74 20 69 73 20 68 6f 73 74 65 64 if it is hosted
0810: 20 65 78 74 65 72 6e 61 6c 6c 79 2e 20 57 65 20 externally. We
0820: 74 65 6e 64 20 74 6f 20 70 72 65 66 65 72 20 2a tend to prefer *
0830: 65 61 72 6c 69 65 72 2a 20 6d 61 6e 75 61 6c 73 earlier* manuals
0840: 2c 20 68 6f 77 65 76 65 72 2c 20 69 6e 74 65 72 , however, inter
0850: 65 73 74 65 64 20 61 73 20 77 65 20 61 72 65 20 ested as we are
0860: 68 65 72 65 20 69 6e 20 68 69 73 74 6f 72 79 2e here in history.
0870: 0d 0a 0d 0a 0d 0a 23 23 20 43 72 69 74 65 72 69 ......## Criteri
0880: 61 0d 0a 0d 0a 54 68 69 73 20 73 75 72 76 65 79 a....This survey
0890: 20 64 6f 65 73 20 6e 6f 74 20 69 6e 63 6c 75 64 does not includ
08a0: 65 20 65 76 65 72 79 20 50 44 50 2d 38 20 61 73 e every PDP-8 as
08b0: 73 65 6d 62 6c 65 72 2c 20 6f 6e 20 70 75 72 70 sembler, on purp
08c0: 6f 73 65 2e 20 54 68 69 73 20 69 73 20 6e 6f 74 ose. This is not
08d0: 20 61 20 63 6f 6d 70 72 65 68 65 6e 73 69 76 65 a comprehensive
08e0: 20 73 75 72 76 65 79 2c 20 69 74 20 69 73 20 6e survey, it is n
08f0: 6f 74 20 61 20 67 65 6e 65 61 6c 6f 67 79 20 70 ot a genealogy p
0900: 72 6f 6a 65 63 74 2c 20 61 6e 64 20 69 74 20 69 roject, and it i
0910: 73 20 6e 6f 74 20 61 6e 20 61 64 76 6f 63 61 63 s not an advocac
0920: 79 20 70 6c 61 74 66 6f 72 6d 2e 20 49 6e 20 61 y platform. In a
0930: 64 64 69 74 69 6f 6e 20 74 6f 20 6d 65 65 74 69 ddition to meeti
0940: 6e 67 20 74 68 65 20 67 6f 61 6c 73 20 6c 61 69 ng the goals lai
0950: 64 20 6f 75 74 20 69 6e 20 74 68 65 20 70 72 65 d out in the pre
0960: 76 69 6f 75 73 20 73 65 63 74 69 6f 6e 2c 20 61 vious section, a
0970: 6e 20 61 73 73 65 6d 62 6c 65 72 20 6d 75 73 74 n assembler must
0980: 20 6d 65 65 74 20 61 6c 6c 20 6f 66 20 74 68 65 meet all of the
0990: 73 65 20 63 72 69 74 65 72 69 61 20 74 6f 20 62 se criteria to b
09a0: 65 20 63 6f 76 65 72 65 64 3a 0d 0a 0d 0a 2a 20 e covered:....*
09b0: 20 20 49 74 20 6d 75 73 74 20 62 65 20 72 65 61 It must be rea
09c0: 64 69 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 6f dily available o
09d0: 6e 6c 69 6e 65 2e 0d 0a 0d 0a 2a 20 20 20 49 74 nline.....* It
09e0: 20 6d 75 73 74 20 6f 66 66 65 72 20 61 74 20 6c must offer at l
09f0: 65 61 73 74 20 6f 6e 65 20 6f 66 20 74 68 65 20 east one of the
0a00: 66 6f 6c 6c 6f 77 69 6e 67 20 63 61 70 61 62 69 following capabi
0a10: 6c 69 74 69 65 73 20 74 6f 20 74 68 65 20 65 6e lities to the en
0a20: 64 20 75 73 65 72 3a 0d 0a 0d 0a 20 20 20 20 2a d user:.... *
0a30: 20 20 20 42 65 20 74 68 65 20 62 61 63 6b 20 65 Be the back e
0a40: 6e 64 20 61 73 73 65 6d 62 6c 65 72 20 66 6f 72 nd assembler for
0a50: 20 73 6f 6d 65 20 6f 74 68 65 72 20 6c 61 6e 67 some other lang
0a60: 75 61 67 65 20 77 68 69 63 68 20 69 73 20 69 74 uage which is it
0a70: 73 65 6c 66 20 69 6d 70 6f 72 74 61 6e 74 2e 0d self important..
0a80: 0a 0d 0a 20 20 20 20 2a 20 20 20 42 65 20 72 65 ... * Be re
0a90: 71 75 69 72 65 64 20 74 6f 20 62 75 69 6c 64 20 quired to build
0aa0: 61 6e 20 69 6d 70 6f 72 74 61 6e 74 20 62 6f 64 an important bod
0ab0: 79 20 6f 66 20 63 6f 64 65 20 77 68 69 63 68 20 y of code which
0ac0: 69 73 20 72 65 61 64 69 6c 79 20 61 76 61 69 6c is readily avail
0ad0: 61 62 6c 65 20 6f 6e 6c 69 6e 65 2e 0d 0a 0d 0a able online.....
0ae0: 20 20 20 20 2a 20 20 20 42 65 20 74 68 65 20 62 * Be the b
0af0: 65 73 74 20 61 76 61 69 6c 61 62 6c 65 20 61 73 est available as
0b00: 73 65 6d 62 6c 65 72 20 66 6f 72 20 69 74 73 20 sembler for its
0b10: 70 72 69 6d 61 72 79 20 70 6c 61 74 66 6f 72 6d primary platform
0b20: 2c 20 6f 72 20 61 74 20 6c 65 61 73 74 20 62 65 , or at least be
0b30: 20 61 6e 20 69 6d 70 6f 72 74 61 6e 74 20 73 65 an important se
0b40: 63 6f 6e 64 61 72 79 20 6f 70 74 69 6f 6e 2e 0d condary option..
0b50: 0a 0d 0a 2a 20 20 20 49 74 20 6d 75 73 74 20 72 ...* It must r
0b60: 75 6e 20 6f 6e 20 74 68 65 20 50 69 44 50 2d 38 un on the PiDP-8
0b70: 2f 49 2c 20 65 69 74 68 65 72 20 75 6e 64 65 72 /I, either under
0b80: 20 52 61 73 70 62 69 61 6e 20 4c 69 6e 75 78 20 Raspbian Linux
0b90: 6f 72 20 75 6e 64 65 72 20 6f 6e 65 20 6f 66 20 or under one of
0ba0: 74 68 65 20 50 44 50 2d 38 20 4f 53 65 73 20 77 the PDP-8 OSes w
0bb0: 65 20 64 69 73 74 72 69 62 75 74 65 2e 0d 0a 0d e distribute....
0bc0: 0a 54 68 61 74 20 6c 69 73 74 20 69 73 20 6e 6f .That list is no
0bd0: 74 20 69 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 t intended to be
0be0: 20 6e 6f 72 6d 61 74 69 76 65 20 6f 72 20 63 6f normative or co
0bf0: 6d 70 6c 65 74 65 2c 20 6a 75 73 74 20 69 6e 66 mplete, just inf
0c00: 6f 72 6d 61 74 69 76 65 3a 20 69 66 20 61 6e 20 ormative: if an
0c10: 61 73 73 65 6d 62 6c 65 72 20 66 61 69 6c 73 20 assembler fails
0c20: 74 6f 20 6d 65 65 74 20 61 6c 6c 20 6f 66 20 74 to meet all of t
0c30: 68 6f 73 65 20 63 72 69 74 65 72 69 61 2c 20 74 hose criteria, t
0c40: 68 61 74 20 69 73 20 6c 69 6b 65 6c 79 20 77 68 hat is likely wh
0c50: 79 20 69 74 20 69 73 20 6e 6f 74 20 6c 69 73 74 y it is not list
0c60: 65 64 20 68 65 72 65 2e 0d 0a 0d 0a 41 73 20 61 ed here.....As a
0c70: 20 72 75 6c 65 2c 20 77 65 20 64 69 73 63 75 73 rule, we discus
0c80: 73 20 6f 6e 6c 79 20 74 68 65 20 6c 61 74 65 73 s only the lates
0c90: 74 20 61 76 61 69 6c 61 62 6c 65 20 76 65 72 73 t available vers
0ca0: 69 6f 6e 20 6f 66 20 61 6e 79 20 67 69 76 65 6e ion of any given
0cb0: 20 61 73 73 65 6d 62 6c 65 72 2e 20 4f 75 72 20 assembler. Our
0cc0: 4d 41 43 52 45 4c 20 63 6f 76 65 72 61 67 65 20 MACREL coverage
0cd0: 69 73 20 66 6f 72 20 4d 41 43 52 45 4c 20 76 32 is for MACREL v2
0ce0: 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 6e , for example, n
0cf0: 6f 74 20 4d 41 43 52 45 4c 20 76 31 2c 20 65 76 ot MACREL v1, ev
0d00: 65 6e 20 74 68 6f 75 67 68 20 74 68 65 20 6c 61 en though the la
0d10: 74 74 65 72 20 69 73 20 6d 6f 72 65 20 72 65 61 tter is more rea
0d20: 64 69 6c 79 20 66 6f 75 6e 64 20 6f 6e 6c 69 6e dily found onlin
0d30: 65 2e 20 57 65 27 76 65 20 6d 61 64 65 20 61 6e e. We've made an
0d40: 20 65 78 63 65 70 74 69 6f 6e 20 66 6f 72 20 50 exception for P
0d50: 41 4c 2d 44 2c 20 63 6f 76 65 72 69 6e 67 20 62 AL-D, covering b
0d60: 6f 74 68 20 74 68 65 20 34 4b 20 61 6e 64 20 38 oth the 4K and 8
0d70: 4b 20 76 65 72 73 69 6f 6e 73 20 62 65 63 61 75 K versions becau
0d80: 73 65 20 74 68 65 79 20 77 65 72 65 20 63 6f 6e se they were con
0d90: 74 65 6d 70 6f 72 61 6e 65 6f 75 73 2c 20 73 65 temporaneous, se
0da0: 72 76 69 6e 67 20 64 69 66 66 65 72 65 6e 74 20 rving different
0db0: 73 65 67 6d 65 6e 74 73 20 6f 66 20 74 68 65 20 segments of the
0dc0: 50 44 50 2d 38 20 6d 61 72 6b 65 74 2e 0d 0a 0d PDP-8 market....
0dd0: 0a 0d 0a 23 23 20 44 69 73 63 6c 61 69 6d 65 72 ...## Disclaimer
0de0: 0d 0a 0d 0a 54 68 65 20 61 75 74 68 6f 72 20 69 ....The author i
0df0: 73 20 6e 6f 74 20 61 6e 20 65 78 70 65 72 74 20 s not an expert
0e00: 69 6e 20 74 68 69 73 20 74 6f 70 69 63 2c 20 74 in this topic, t
0e10: 68 6f 75 67 68 20 68 65 20 68 61 73 20 6f 63 63 hough he has occ
0e20: 61 73 69 6f 6e 61 6c 6c 79 20 63 6f 6e 73 75 6c asionally consul
0e30: 74 65 64 20 77 69 74 68 20 65 78 70 65 72 74 73 ted with experts
0e40: 2e 20 54 68 65 20 63 6c 61 69 6d 73 20 69 6e 20 . The claims in
0e50: 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 20 61 72 this document ar
0e60: 65 20 63 68 65 63 6b 65 64 20 61 67 61 69 6e 73 e checked agains
0e70: 74 20 6d 61 6e 75 61 6c 73 2c 20 70 75 62 6c 69 t manuals, publi
0e80: 73 68 65 64 20 65 78 61 6d 70 6c 65 20 63 6f 64 shed example cod
0e90: 65 2c 20 61 6e 64 20 73 6f 6d 65 74 69 6d 65 73 e, and sometimes
0ea0: 20 61 67 61 69 6e 73 74 20 72 75 6e 6e 69 6e 67 against running
0eb0: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 implementations
0ec0: 2e 20 48 6f 77 65 76 65 72 2c 20 64 6f 20 6e 6f . However, do no
0ed0: 74 20 65 78 70 65 63 74 20 69 74 20 74 6f 20 62 t expect it to b
0ee0: 65 20 63 6f 6d 70 6c 65 74 65 20 6f 72 20 63 6f e complete or co
0ef0: 6d 70 72 65 68 65 6e 73 69 76 65 2e 0d 0a 0d 0a mprehensive.....
0f00: 0d 0a 23 23 20 43 6f 6e 74 72 69 62 75 74 69 6e ..## Contributin
0f10: 67 0d 0a 0d 0a 49 66 20 79 6f 75 20 68 61 76 65 g....If you have
0f20: 20 69 6d 70 6f 72 74 61 6e 74 20 69 6e 66 6f 72 important infor
0f30: 6d 61 74 69 6f 6e 20 74 6f 20 61 64 64 20 61 6e mation to add an
0f40: 64 20 79 6f 75 20 64 6f 20 6e 6f 74 20 68 61 76 d you do not hav
0f50: 65 20 61 6e 20 61 63 63 6f 75 6e 74 20 6f 6e 20 e an account on
0f60: 74 68 69 73 20 77 69 6b 69 2c 20 70 6f 73 74 20 this wiki, post
0f70: 69 74 20 74 6f 20 65 69 74 68 65 72 20 74 68 65 it to either the
0f80: 20 5b 50 69 44 50 2d 38 2f 49 5d 5b 70 6d 6c 5d [PiDP-8/I][pml]
0f90: 20 6f 72 20 5b 53 49 4d 48 5d 5b 73 6d 6c 5d 20 or [SIMH][sml]
0fa0: 6d 61 69 6c 69 6e 67 20 6c 69 73 74 73 2c 20 6f mailing lists, o
0fb0: 72 20 73 65 6e 64 20 6d 65 20 5b 70 72 69 76 61 r send me [priva
0fc0: 74 65 20 65 6d 61 69 6c 5d 5b 65 6d 61 69 6c 5d te email][email]
0fd0: 2e 0d 0a 0d 0a 4b 65 65 70 20 74 68 65 20 63 72 .....Keep the cr
0fe0: 69 74 65 72 69 61 20 61 62 6f 76 65 20 69 6e 20 iteria above in
0ff0: 6d 69 6e 64 20 77 68 65 6e 20 63 6f 6e 74 72 69 mind when contri
1000: 62 75 74 69 6e 67 2e 0d 0a 0d 0a 5b 65 6d 61 69 buting.....[emai
1010: 6c 5d 3a 20 68 74 74 70 73 3a 2f 2f 74 61 6e 67 l]: https://tang
1020: 65 6e 74 73 6f 66 74 2e 63 6f 6d 2f 65 6d 61 69 entsoft.com/emai
1030: 6c 2f 0d 0a 5b 70 6d 6c 5d 3a 20 68 74 74 70 73 l/..[pml]: https
1040: 3a 2f 2f 67 72 6f 75 70 73 2e 67 6f 6f 67 6c 65 ://groups.google
1050: 2e 63 6f 6d 2f 66 6f 72 75 6d 2f 23 21 66 6f 72 .com/forum/#!for
1060: 75 6d 2f 70 69 64 70 2d 38 0d 0a 5b 73 6d 6c 5d um/pidp-8..[sml]
1070: 3a 20 68 74 74 70 3a 2f 2f 6d 61 69 6c 6d 61 6e : http://mailman
1080: 2e 74 72 61 69 6c 69 6e 67 2d 65 64 67 65 2e 63 .trailing-edge.c
1090: 6f 6d 2f 6d 61 69 6c 6d 61 6e 2f 6c 69 73 74 69 om/mailman/listi
10a0: 6e 66 6f 2f 73 69 6d 68 0d 0a 0d 0a 0d 0a 23 20 nfo/simh......#
10b0: 54 68 65 20 41 73 73 65 6d 62 6c 65 72 73 0d 0a The Assemblers..
10c0: 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 70 61 ....## <a id="pa
10d0: 6c 2d 69 69 69 22 20 6e 61 6d 65 3d 22 70 61 6c l-iii" name="pal
10e0: 33 22 3e 3c 2f 61 3e 50 41 4c 2d 49 49 49 0d 0a 3"></a>PAL-III..
10f0: 0d 0a 7c 20 2a 2a 49 6e 74 72 6f 64 75 63 65 64 ..| **Introduced
1100: 2a 2a 20 7c 20 41 75 67 75 73 74 20 31 39 36 35 ** | August 1965
1110: 0d 0a 7c 20 2a 2a 4d 61 6e 75 61 6c 2a 2a 20 7c ..| **Manual** |
1120: 20 5b 50 44 46 2c 20 37 39 30 20 6b 42 5d 28 68 [PDF, 790 kB](h
1130: 74 74 70 3a 2f 2f 77 77 77 2e 74 65 6c 65 67 72 ttp://www.telegr
1140: 61 70 68 69 63 73 2e 63 6f 6d 2e 61 75 2f 64 6f aphics.com.au/do
1150: 63 2f 70 61 6c 69 69 69 2e 70 64 66 29 0d 0a 7c c/paliii.pdf)..|
1160: 20 2a 2a 44 65 6c 69 76 65 72 79 2a 2a 20 7c 20 **Delivery** |
1170: 70 61 70 65 72 20 74 61 70 65 0d 0a 0d 0a 57 65 paper tape....We
1180: 20 6d 61 79 20 70 72 65 73 75 6d 65 20 66 72 6f may presume fro
1190: 6d 20 74 68 65 20 6e 61 6d 65 20 74 68 61 74 20 m the name that
11a0: 50 41 4c 2d 49 49 49 20 68 61 73 20 61 74 20 6c PAL-III has at l
11b0: 65 61 73 74 20 74 77 6f 20 70 72 65 64 65 63 65 east two predece
11c0: 73 73 6f 72 73 2e 20 49 20 77 61 73 20 61 62 6c ssors. I was abl
11d0: 65 20 74 6f 20 66 69 6e 64 20 61 20 72 65 66 65 e to find a refe
11e0: 72 65 6e 63 65 20 74 6f 20 44 45 43 20 70 72 6f rence to DEC pro
11f0: 64 75 63 74 20 6e 75 6d 62 65 72 20 35 2d 31 2d duct number 5-1-
1200: 53 2c 20 74 68 65 20 50 72 6f 67 72 61 6d 20 41 S, the Program A
1210: 73 73 65 6d 62 6c 79 20 4c 61 6e 67 75 61 67 65 ssembly Language
1220: 20 66 6f 72 20 74 68 65 20 50 44 50 2d 35 20 69 for the PDP-5 i
1230: 6e 20 5b 74 68 65 20 50 44 50 2d 35 20 70 72 6f n [the PDP-5 pro
1240: 67 72 61 6d 20 63 61 74 61 6c 6f 67 5d 5b 70 63 gram catalog][pc
1250: 35 5d 20 66 72 6f 6d 20 44 65 63 65 6d 62 65 72 5] from December
1260: 20 31 39 36 34 3b 20 77 65 20 6d 61 79 20 72 65 1964; we may re
1270: 61 73 6f 6e 61 62 6c 79 20 63 61 6c 6c 20 74 68 asonably call th
1280: 69 73 20 61 73 73 65 6d 62 6c 65 72 20 50 41 4c is assembler PAL
1290: 2d 49 2e 20 54 68 61 74 20 63 61 74 61 6c 6f 67 -I. That catalog
12a0: 20 61 6c 73 6f 20 73 61 79 73 20 74 68 61 74 20 also says that
12b0: 74 68 65 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 the replacement
12c0: 66 6f 72 20 50 44 50 2d 35 20 50 41 4c 20 69 73 for PDP-5 PAL is
12d0: 20 5b 61 6e 20 65 61 72 6c 79 20 76 65 72 73 69 [an early versi
12e0: 6f 6e 20 6f 66 20 50 41 4c 2d 49 49 49 5d 5b 70 on of PAL-III][p
12f0: 38 33 73 5d 20 66 6f 72 20 74 68 65 20 50 44 50 83s] for the PDP
1300: 2d 38 2e 20 54 68 69 73 20 6d 61 6b 65 73 20 73 -8. This makes s
1310: 65 6e 73 65 2c 20 62 65 63 61 75 73 65 20 74 68 ense, because th
1320: 65 20 50 44 50 2d 38 20 64 69 72 65 63 74 6c 79 e PDP-8 directly
1330: 20 72 65 70 6c 61 63 65 64 20 74 68 65 20 50 44 replaced the PD
1340: 50 2d 35 20 69 6e 20 44 45 43 27 73 20 70 72 6f P-5 in DEC's pro
1350: 64 75 63 74 20 6c 69 6e 65 2c 20 62 65 69 6e 67 duct line, being
1360: 20 75 70 77 61 72 64 20 63 6f 6d 70 61 74 69 62 upward compatib
1370: 6c 65 20 77 69 74 68 20 69 74 2e 20 0d 0a 0d 0a le with it. ....
1380: 49 20 68 61 76 65 20 79 65 74 20 74 6f 20 63 6f I have yet to co
1390: 6d 65 20 61 63 72 6f 73 73 20 61 20 72 65 66 65 me across a refe
13a0: 72 65 6e 63 65 20 74 6f 20 61 6e 79 74 68 69 6e rence to anythin
13b0: 67 20 63 61 6c 6c 65 64 20 22 50 41 4c 2d 49 49 g called "PAL-II
13c0: 2e 22 20 50 65 72 68 61 70 73 20 69 74 20 77 65 ." Perhaps it we
13d0: 6e 74 20 74 68 65 20 77 61 79 20 6f 66 20 41 6e nt the way of An
13e0: 67 75 6c 61 72 20 33 2c 20 57 69 6e 61 6d 70 20 gular 3, Winamp
13f0: 34 2c 20 4e 65 74 73 63 61 70 65 20 35 2c 20 50 4, Netscape 5, P
1400: 48 50 20 36 2c 20 4d 79 53 51 4c 20 37 2c 20 51 HP 6, MySQL 7, Q
1410: 75 69 63 6b 54 69 6d 65 20 38 2c 20 61 6e 64 20 uickTime 8, and
1420: 57 69 6e 64 6f 77 73 20 39 2e 0d 0a 0d 0a 54 68 Windows 9.....Th
1430: 65 20 69 6e 74 72 6f 64 75 63 74 69 6f 6e 20 64 e introduction d
1440: 61 74 65 20 61 62 6f 76 65 20 69 73 20 74 68 65 ate above is the
1450: 20 70 75 62 6c 69 63 61 74 69 6f 6e 20 64 61 74 publication dat
1460: 65 20 6f 66 20 74 68 65 20 65 61 72 6c 69 65 73 e of the earlies
1470: 74 20 50 41 4c 2d 49 49 49 20 6d 61 6e 75 61 6c t PAL-III manual
1480: 20 49 20 68 61 76 65 20 66 6f 75 6e 64 2c 20 62 I have found, b
1490: 75 74 20 63 6c 65 61 72 6c 79 20 50 41 4c 27 73 ut clearly PAL's
14a0: 20 61 6e 63 65 73 74 72 79 20 64 61 74 65 73 20 ancestry dates
14b0: 62 61 63 6b 20 74 6f 20 61 74 20 6c 65 61 73 74 back to at least
14c0: 20 44 65 63 65 6d 62 65 72 20 31 39 36 34 2e 20 December 1964.
14d0: 41 6e 20 5b 65 61 72 6c 79 20 50 44 50 2d 35 20 An [early PDP-5
14e0: 62 72 6f 63 68 75 72 65 5d 5b 70 64 70 35 62 5d brochure][pdp5b]
14f0: 20 49 20 66 6f 75 6e 64 20 66 72 6f 6d 20 4d 61 I found from Ma
1500: 72 63 68 20 31 39 36 34 20 73 70 65 61 6b 73 20 rch 1964 speaks
1510: 6f 66 20 61 20 22 53 79 6d 62 6f 6c 69 63 20 41 of a "Symbolic A
1520: 73 73 65 6d 62 6c 65 72 22 20 72 61 74 68 65 72 ssembler" rather
1530: 20 74 68 61 6e 20 50 41 4c 3b 20 69 73 20 74 68 than PAL; is th
1540: 61 74 20 6a 75 73 74 20 6d 61 72 6b 65 74 69 6e at just marketin
1550: 67 2d 73 70 65 61 6b 20 66 6f 72 20 22 50 41 4c g-speak for "PAL
1560: 2c 22 20 6f 72 20 64 6f 65 73 20 50 41 4c 20 66 ," or does PAL f
1570: 69 72 73 74 20 64 61 74 65 20 74 6f 20 73 6f 6d irst date to som
1580: 65 77 68 65 72 65 20 69 6e 20 74 68 61 74 20 72 ewhere in that r
1590: 61 6e 67 65 3f 0d 0a 0d 0a 54 68 65 20 50 41 4c ange?....The PAL
15a0: 2d 49 49 49 20 61 73 73 65 6d 62 6c 65 72 20 73 -III assembler s
15b0: 68 69 70 70 65 64 20 6f 6e 20 5b 70 75 6e 63 68 hipped on [punch
15c0: 65 64 20 70 61 70 65 72 20 74 61 70 65 5d 28 68 ed paper tape](h
15d0: 74 74 70 73 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 ttps://en.wikipe
15e0: 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 50 75 6e dia.org/wiki/Pun
15f0: 63 68 65 64 5f 74 61 70 65 29 20 61 73 20 70 61 ched_tape) as pa
1600: 72 74 20 6f 66 20 74 68 65 20 67 72 61 6e 64 69 rt of the grandi
1610: 6f 73 65 6c 79 2d 6e 61 6d 65 64 20 22 50 44 50 osely-named "PDP
1620: 2d 38 20 41 73 73 65 6d 62 6c 79 20 53 79 73 74 -8 Assembly Syst
1630: 65 6d 2e 22 20 54 68 69 73 20 61 6d 6f 75 6e 74 em." This amount
1640: 65 64 20 74 6f 20 61 6e 20 61 73 73 65 6d 62 6c ed to an assembl
1650: 65 72 2c 20 61 6e 20 65 64 69 74 6f 72 2c 20 61 er, an editor, a
1660: 20 64 65 62 75 67 67 65 72 2c 20 61 6e 64 20 61 debugger, and a
1670: 20 6c 6f 61 64 65 72 2c 20 65 61 63 68 20 61 20 loader, each a
1680: 73 65 70 61 72 61 74 65 20 70 61 70 65 72 20 74 separate paper t
1690: 61 70 65 2e 20 54 68 65 20 70 72 6f 67 72 61 6d ape. The program
16a0: 6d 65 72 20 77 6f 75 6c 64 20 66 69 72 73 74 20 mer would first
16b0: 74 6f 67 67 6c 65 20 74 68 65 20 52 49 4d 20 6c toggle the RIM l
16c0: 6f 61 64 65 72 20 69 6e 74 6f 20 74 68 65 20 50 oader into the P
16d0: 44 50 2d 38 27 73 20 66 72 6f 6e 74 20 70 61 6e DP-8's front pan
16e0: 65 6c 2c 20 74 68 65 6e 20 75 73 65 20 74 68 61 el, then use tha
16f0: 74 20 74 6f 20 6c 6f 61 64 20 74 68 65 20 42 49 t to load the BI
1700: 4e 20 6c 6f 61 64 65 72 20 66 72 6f 6d 20 61 20 N loader from a
1710: 66 69 66 74 68 20 70 61 70 65 72 20 74 61 70 65 fifth paper tape
1720: 2c 20 73 65 70 61 72 61 74 65 20 66 72 6f 6d 20 , separate from
1730: 74 68 65 20 50 44 50 2d 38 20 41 73 73 65 6d 62 the PDP-8 Assemb
1740: 6c 79 20 53 79 73 74 65 6d 2c 20 74 68 65 6e 20 ly System, then
1750: 72 75 6e 20 65 61 63 68 20 6f 66 20 74 68 65 73 run each of thes
1760: 65 20 74 61 70 65 73 20 74 68 72 6f 75 67 68 20 e tapes through
1770: 74 68 65 20 70 61 70 65 72 20 74 61 70 65 20 72 the paper tape r
1780: 65 61 64 65 72 20 72 65 70 65 61 74 65 64 6c 79 eader repeatedly
1790: 20 e2 80 94 20 72 65 75 73 69 6e 67 20 74 68 65 — reusing the
17a0: 20 73 74 69 6c 6c 2d 69 6e 2d 63 6f 72 65 20 42 still-in-core B
17b0: 49 4e 20 6c 6f 61 64 65 72 20 65 61 63 68 20 74 IN loader each t
17c0: 69 6d 65 20 e2 80 94 20 69 6e 20 6f 72 64 65 72 ime — in order
17d0: 20 74 6f 20 69 74 65 72 61 74 65 20 68 69 73 20 to iterate his
17e0: 77 61 79 20 74 6f 77 61 72 64 20 61 20 77 6f 72 way toward a wor
17f0: 6b 69 6e 67 20 70 72 6f 67 72 61 6d 2e 0d 0a 0d king program....
1800: 0a 54 68 65 20 50 41 4c 2d 49 49 49 20 61 73 73 .The PAL-III ass
1810: 65 6d 62 6c 65 72 20 74 61 70 65 20 72 65 71 75 embler tape requ
1820: 69 72 65 64 20 61 74 20 6c 65 61 73 74 20 74 77 ired at least tw
1830: 6f 20 70 61 73 73 65 73 20 74 68 72 6f 75 67 68 o passes through
1840: 20 74 68 65 20 74 61 70 65 20 72 65 61 64 65 72 the tape reader
1850: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 72 6f in order to pro
1860: 64 75 63 65 20 61 20 63 6f 6d 70 75 74 65 72 2d duce a computer-
1870: 72 65 61 64 61 62 6c 65 20 42 49 4e 20 66 6f 72 readable BIN for
1880: 6d 61 74 20 6f 75 74 70 75 74 20 74 61 70 65 2c mat output tape,
1890: 20 70 6c 75 73 20 61 6e 20 6f 70 74 69 6f 6e 61 plus an optiona
18a0: 6c 20 74 68 69 72 64 20 70 61 73 73 20 69 66 20 l third pass if
18b0: 79 6f 75 20 61 6c 73 6f 20 77 61 6e 74 65 64 20 you also wanted
18c0: 61 20 68 75 6d 61 6e 2d 72 65 61 64 61 62 6c 65 a human-readable
18d0: 20 6c 69 73 74 69 6e 67 20 6f 6e 20 74 68 65 20 listing on the
18e0: 74 65 6c 65 74 79 70 65 2e 0d 0a 0d 0a 49 66 20 teletype.....If
18f0: 79 6f 75 20 6c 6f 6f 6b 20 61 74 20 70 69 63 74 you look at pict
1900: 75 72 65 73 20 6f 66 20 50 44 50 2d 38 20 63 6f ures of PDP-8 co
1910: 6d 70 75 74 65 72 73 2c 20 79 6f 75 20 63 61 6e mputers, you can
1920: 20 6f 66 74 65 6e 20 73 65 65 20 61 20 74 72 61 often see a tra
1930: 79 20 77 69 74 68 20 6e 61 72 72 6f 77 20 73 6c y with narrow sl
1940: 6f 74 73 20 69 6e 20 69 74 2c 20 65 61 63 68 20 ots in it, each
1950: 6d 65 61 6e 74 20 74 6f 20 68 6f 6c 64 20 6f 6e meant to hold on
1960: 65 20 6f 66 20 74 68 65 73 65 20 6b 65 79 20 70 e of these key p
1970: 61 70 65 72 20 74 61 70 65 73 2c 20 61 73 20 74 aper tapes, as t
1980: 68 65 79 20 77 65 72 65 20 6e 65 65 64 65 64 20 hey were needed
1990: 6e 65 61 72 20 61 74 20 68 61 6e 64 20 77 68 65 near at hand whe
19a0: 6e 20 75 73 69 6e 67 20 61 20 70 61 70 65 72 2d n using a paper-
19b0: 74 61 70 65 20 62 61 73 65 64 20 50 44 50 2d 38 tape based PDP-8
19c0: 2e 20 54 68 65 72 65 20 69 73 20 61 20 67 6f 6f . There is a goo
19d0: 64 20 70 69 63 74 75 72 65 20 6f 66 20 61 20 62 d picture of a b
19e0: 6c 75 65 20 6f 6e 65 20 6f 6e 20 74 68 65 20 63 lue one on the c
19f0: 6f 76 65 72 20 6f 66 20 74 68 65 20 5b 4f 53 2f over of the [OS/
1a00: 38 20 48 61 6e 64 62 6f 6f 6b 5d 5b 6f 73 38 6d 8 Handbook][os8m
1a10: 5d 2c 20 31 39 37 34 20 65 64 2e 0d 0a 0d 0a 50 ], 1974 ed.....P
1a20: 41 4c 2d 49 49 49 20 63 61 6e 20 62 65 20 63 6f AL-III can be co
1a30: 6e 73 69 64 65 72 65 64 20 74 68 65 20 62 61 73 nsidered the bas
1a40: 65 6c 69 6e 65 20 61 73 73 65 6d 62 6c 65 72 20 eline assembler
1a50: 66 6f 72 20 61 20 50 44 50 2d 38 2c 20 73 69 6e for a PDP-8, sin
1a60: 63 65 20 66 6f 72 20 72 6f 75 67 68 6c 79 20 69 ce for roughly i
1a70: 74 73 20 66 69 72 73 74 20 64 65 63 61 64 65 2c ts first decade,
1a80: 20 50 44 50 2d 38 73 20 73 6f 6c 64 20 66 6f 72 PDP-8s sold for
1a90: 20 69 6e 74 65 72 61 63 74 69 76 65 20 75 73 65 interactive use
1aa0: 20 63 61 6d 65 20 77 69 74 68 20 61 20 54 65 6c came with a Tel
1ab0: 65 74 79 70 65 20 4d 6f 64 65 6c 20 33 33 20 41 etype Model 33 A
1ac0: 53 52 20 77 69 74 68 20 62 75 69 6c 74 2d 69 6e SR with built-in
1ad0: 20 70 61 70 65 72 20 74 61 70 65 20 72 65 61 64 paper tape read
1ae0: 65 72 20 61 6e 64 20 70 75 6e 63 68 2c 20 77 68 er and punch, wh
1af0: 69 63 68 20 6d 65 61 6e 74 20 74 68 65 20 61 62 ich meant the ab
1b00: 69 6c 69 74 79 20 74 6f 20 72 65 61 64 20 70 61 ility to read pa
1b10: 70 65 72 20 74 61 70 65 73 20 77 61 73 20 61 20 per tapes was a
1b20: 62 61 73 65 6c 69 6e 65 20 66 65 61 74 75 72 65 baseline feature
1b30: 20 66 6f 72 20 69 6e 74 65 72 61 63 74 69 76 65 for interactive
1b40: 6c 79 2d 75 73 65 64 20 50 44 50 2d 38 73 2e 20 ly-used PDP-8s.
1b50: 28 43 6f 6e 74 72 61 73 74 20 5b 68 65 61 64 6c (Contrast [headl
1b60: 65 73 73 5d 5b 68 6c 63 5d 20 65 6d 62 65 64 64 ess][hlc] embedd
1b70: 65 64 20 50 44 50 2d 38 73 2c 20 61 20 76 65 72 ed PDP-8s, a ver
1b80: 79 20 63 6f 6d 6d 6f 6e 20 75 73 65 20 66 6f 72 y common use for
1b90: 20 74 68 65 20 50 44 50 2d 38 20 70 72 69 6f 72 the PDP-8 prior
1ba0: 20 74 6f 20 74 68 65 20 69 6e 74 72 6f 64 75 63 to the introduc
1bb0: 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 69 63 72 tion of the micr
1bc0: 6f 70 72 6f 63 65 73 73 6f 72 2e 29 0d 0a 0d 0a oprocessor.)....
1bd0: 4d 6f 72 65 20 69 6d 70 6f 72 74 61 6e 74 6c 79 More importantly
1be0: 20 66 6f 72 20 6f 75 72 20 70 75 72 70 6f 73 65 for our purpose
1bf0: 73 20 68 65 72 65 2c 20 6d 6f 73 74 20 6f 66 20 s here, most of
1c00: 74 68 65 20 6f 74 68 65 72 20 61 73 73 65 6d 62 the other assemb
1c10: 6c 65 72 73 20 73 75 72 76 65 79 65 64 20 68 65 lers surveyed he
1c20: 72 65 20 73 68 61 72 65 20 50 41 4c 2d 49 49 49 re share PAL-III
1c30: 27 73 20 62 61 73 69 63 20 73 79 6e 74 61 78 2e 's basic syntax.
1c40: 20 54 68 69 73 20 64 6f 75 62 74 6c 65 73 73 20 This doubtless
1c50: 66 6f 6c 6c 6f 77 73 20 6f 6e 20 66 72 6f 6d 20 follows on from
1c60: 74 68 65 20 70 72 69 6f 72 20 70 6f 69 6e 74 2c the prior point,
1c70: 20 73 69 6e 63 65 20 69 74 20 6d 65 61 6e 74 20 since it meant
1c80: 50 41 4c 2d 49 49 49 20 68 61 64 20 74 68 65 20 PAL-III had the
1c90: 5b 66 69 72 73 74 2d 6d 6f 76 65 72 20 61 64 76 [first-mover adv
1ca0: 61 6e 74 61 67 65 5d 5b 66 6d 61 5d 2e 0d 0a 0d antage][fma]....
1cb0: 0a 41 20 62 72 69 65 66 20 73 75 6d 6d 61 72 79 .A brief summary
1cc0: 20 6f 66 20 74 68 65 20 66 65 61 74 75 72 65 20 of the feature
1cd0: 73 65 74 20 6f 66 20 50 41 4c 2d 49 49 49 3a 0d set of PAL-III:.
1ce0: 0a 0d 0a 2a 20 20 20 46 75 6c 6c 20 73 75 70 70 ...* Full supp
1cf0: 6f 72 74 20 6f 66 20 74 68 65 20 50 44 50 2d 38 ort of the PDP-8
1d00: 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 73 65 74 instruction set
1d10: 3a 0d 0a 20 20 20 20 2a 20 20 20 41 6c 6c 20 62 :.. * All b
1d20: 61 73 69 63 20 70 72 6f 63 65 73 73 6f 72 20 69 asic processor i
1d30: 6e 73 74 72 75 63 74 69 6f 6e 73 20 61 6e 64 20 nstructions and
1d40: 73 65 76 65 72 61 6c 20 6d 69 63 72 6f 63 6f 64 several microcod
1d50: 65 64 20 63 6f 6d 62 69 6e 61 74 69 6f 6e 73 20 ed combinations
1d60: 28 60 43 49 41 60 2c 20 60 53 50 41 60 2c 20 65 (`CIA`, `SPA`, e
1d70: 74 63 2e 29 20 70 72 65 64 65 66 69 6e 65 64 0d tc.) predefined.
1d80: 0a 20 20 20 20 2a 20 20 20 4d 61 6e 79 20 70 65 . * Many pe
1d90: 72 69 70 68 65 72 61 6c 20 49 4f 54 20 69 6e 73 ripheral IOT ins
1da0: 74 72 75 63 74 69 6f 6e 73 20 70 72 65 64 65 66 tructions predef
1db0: 69 6e 65 64 3a 0d 0a 20 20 20 20 20 20 20 20 2a ined:.. *
1dc0: 20 20 20 5b 54 65 6c 65 74 79 70 65 20 4d 6f 64 [Teletype Mod
1dd0: 65 6c 20 33 33 20 41 53 52 5d 5b 61 73 72 33 33 el 33 ASR][asr33
1de0: 5d 20 6b 65 79 62 6f 61 72 64 2f 70 72 69 6e 74 ] keyboard/print
1df0: 65 72 20 61 6e 64 20 74 61 70 65 20 70 75 6e 63 er and tape punc
1e00: 68 2f 72 65 61 64 65 72 0d 0a 20 20 20 20 20 20 h/reader..
1e10: 20 20 2a 20 20 20 5b 68 69 67 68 2d 73 70 65 65 * [high-spee
1e20: 64 20 70 61 70 65 72 20 74 61 70 65 20 70 75 6e d paper tape pun
1e30: 63 68 5d 5b 70 70 38 69 5d 20 61 6e 64 20 72 65 ch][pp8i] and re
1e40: 61 64 65 72 0d 0a 20 20 20 20 20 20 20 20 2a 20 ader.. *
1e50: 20 20 44 45 43 74 61 70 65 20 74 79 70 65 73 20 DECtape types
1e60: 5b 35 35 35 5d 5b 64 74 35 35 35 5d 20 61 6e 64 [555][dt555] and
1e70: 20 5b 54 55 35 35 5d 5b 74 75 35 35 5d 0d 0a 20 [TU55][tu55]..
1e80: 20 20 20 20 20 20 20 2a 20 20 20 61 75 74 6f 2d * auto-
1e90: 72 65 73 74 61 72 74 20 74 79 70 65 20 5b 4b 52 restart type [KR
1ea0: 30 31 5d 5b 6b 72 30 31 5d 0d 0a 20 20 20 20 20 01][kr01]..
1eb0: 20 20 20 2a 20 20 20 5b 54 79 70 65 20 31 38 32 * [Type 182
1ec0: 20 45 41 45 5d 5b 74 31 38 32 5d 0d 0a 20 20 20 EAE][t182]..
1ed0: 20 20 20 20 20 2a 20 20 20 69 6e 74 65 72 72 75 * interru
1ee0: 70 74 20 63 6f 6e 74 72 6f 6c 6c 65 72 0d 0a 20 pt controller..
1ef0: 20 20 20 20 20 20 20 2a 20 20 20 6c 69 6e 65 20 * line
1f00: 70 72 69 6e 74 65 72 20 74 79 70 65 20 36 34 35 printer type 645
1f10: 20 28 41 6e 61 6c 65 78 3f 29 0d 0a 20 20 20 20 (Analex?)..
1f20: 20 20 20 20 2a 20 20 20 61 6e 64 20 6d 61 6e 79 * and many
1f30: 20 6c 65 73 73 65 72 2d 6b 6e 6f 77 6e 20 70 65 lesser-known pe
1f40: 72 69 70 68 65 72 61 6c 73 21 0d 0a 20 20 20 20 ripherals!..
1f50: 2a 20 20 20 5a 65 72 6f 2d 70 61 67 65 20 61 64 * Zero-page ad
1f60: 64 72 65 73 73 69 6e 67 0d 0a 20 20 20 20 2a 20 dressing.. *
1f70: 20 20 49 6e 64 69 72 65 63 74 20 61 64 64 72 65 Indirect addre
1f80: 73 73 69 6e 67 0d 0a 2a 20 20 20 60 45 58 50 55 ssing..* `EXPU
1f90: 4e 47 45 60 2c 20 60 46 49 58 54 41 42 60 2c 20 NGE`, `FIXTAB`,
1fa0: 61 6e 64 20 60 46 49 58 4d 52 49 60 20 70 73 65 and `FIXMRI` pse
1fb0: 75 64 6f 2d 6f 70 73 20 74 6f 20 61 75 67 6d 65 udo-ops to augme
1fc0: 6e 74 20 6f 72 20 72 65 64 65 66 69 6e 65 20 74 nt or redefine t
1fd0: 68 65 20 70 72 65 64 65 66 69 6e 65 64 20 69 6e he predefined in
1fe0: 73 74 72 75 63 74 69 6f 6e 20 73 65 74 0d 0a 2a struction set..*
1ff0: 20 20 20 60 50 41 55 53 45 60 20 61 73 73 65 6d `PAUSE` assem
2000: 62 6c 79 20 6f 75 74 70 75 74 2c 20 67 69 76 69 bly output, givi
2010: 6e 67 20 74 68 65 20 75 73 65 72 20 74 69 6d 65 ng the user time
2020: 20 74 6f 20 64 6f 20 6d 61 6e 75 61 6c 20 74 68 to do manual th
2030: 69 6e 67 73 20 77 68 69 6c 65 20 74 68 65 20 61 ings while the a
2040: 73 73 65 6d 62 6c 65 72 20 77 61 69 74 73 0d 0a ssembler waits..
2050: 2a 20 20 20 60 44 45 43 49 4d 41 4c 60 20 61 6e * `DECIMAL` an
2060: 64 20 60 4f 43 54 41 4c 60 20 70 73 65 75 64 6f d `OCTAL` pseudo
2070: 2d 6f 70 73 20 66 6f 72 20 72 61 64 69 78 20 73 -ops for radix s
2080: 65 6c 65 63 74 69 6f 6e 0d 0a 2a 20 20 20 60 46 election..* `F
2090: 49 45 4c 44 60 20 70 73 65 75 64 6f 2d 6f 70 20 IELD` pseudo-op
20a0: 74 6f 20 73 65 6c 65 63 74 20 74 68 65 20 63 6f to select the co
20b0: 72 65 20 6d 65 6d 6f 72 79 20 66 69 65 6c 64 0d re memory field.
20c0: 0a 0d 0a 57 65 20 67 69 76 65 20 74 68 69 73 20 ...We give this
20d0: 6c 69 73 74 20 6e 6f 74 20 74 6f 20 74 72 79 20 list not to try
20e0: 74 6f 20 72 65 70 6c 61 63 65 20 74 68 65 20 50 to replace the P
20f0: 41 4c 2d 49 49 49 20 6d 61 6e 75 61 6c 2c 20 62 AL-III manual, b
2100: 75 74 20 69 6e 73 74 65 61 64 20 74 6f 20 61 6c ut instead to al
2110: 6c 6f 77 20 73 65 61 72 63 68 69 6e 67 20 74 68 low searching th
2120: 69 73 20 64 6f 63 75 6d 65 6e 74 20 66 6f 72 20 is document for
2130: 6c 61 6e 67 75 61 67 65 20 66 65 61 74 75 72 65 language feature
2140: 73 2e 20 59 6f 75 20 6d 61 79 20 61 73 73 75 6d s. You may assum
2150: 65 20 74 68 61 74 20 61 73 73 65 6d 62 6c 65 72 e that assembler
2160: 73 20 6c 69 73 74 65 64 20 62 65 6c 6f 77 20 61 s listed below a
2170: 6c 73 6f 20 73 75 70 70 6f 72 74 20 74 68 65 73 lso support thes
2180: 65 20 6c 69 73 74 65 64 20 66 65 61 74 75 72 65 e listed feature
2190: 73 2c 20 65 73 70 65 63 69 61 6c 6c 79 20 77 69 s, especially wi
21a0: 74 68 69 6e 20 74 68 65 20 50 41 4c 20 67 65 6e thin the PAL gen
21b0: 65 61 6c 6f 67 69 63 61 6c 20 6c 69 6e 65 3b 20 ealogical line;
21c0: 77 65 20 63 61 6c 6c 20 6f 75 74 20 74 68 65 20 we call out the
21d0: 65 78 63 65 70 74 69 6f 6e 73 20 62 65 6c 6f 77 exceptions below
21e0: 2e 0d 0a 0d 0a 5b 61 73 72 33 33 5d 3a 20 68 74 .....[asr33]: ht
21f0: 74 70 73 3a 2f 2f 61 72 63 68 69 76 65 2e 6f 72 tps://archive.or
2200: 67 2f 73 74 72 65 61 6d 2f 62 69 74 73 61 76 65 g/stream/bitsave
2210: 72 73 5f 64 65 63 70 64 70 38 70 64 70 4d 61 6e rs_decpdp8pdpMan
2220: 75 61 6c 46 65 62 36 36 5f 32 31 31 37 37 31 31 ualFeb66_2117711
2230: 31 2f 46 2d 38 37 5f 50 44 50 2d 38 5f 4d 61 69 1/F-87_PDP-8_Mai
2240: 6e 74 65 6e 61 6e 63 65 5f 4d 61 6e 75 61 6c 5f ntenance_Manual_
2250: 46 65 62 36 36 23 70 61 67 65 2f 6e 31 34 35 2f Feb66#page/n145/
2260: 6d 6f 64 65 2f 31 75 70 0d 0a 5b 64 74 35 35 35 mode/1up..[dt555
2270: 5d 3a 20 68 74 74 70 73 3a 2f 2f 61 72 63 68 69 ]: https://archi
2280: 76 65 2e 6f 72 67 2f 64 65 74 61 69 6c 73 2f 62 ve.org/details/b
2290: 69 74 73 61 76 65 72 73 5f 64 65 63 64 65 63 74 itsavers_decdect
22a0: 61 70 65 44 65 63 36 34 5f 31 30 30 38 35 37 39 apeDec64_1008579
22b0: 0d 0a 5b 68 6c 63 5d 3a 20 68 74 74 70 73 3a 2f ..[hlc]: https:/
22c0: 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 /en.wikipedia.or
22d0: 67 2f 77 69 6b 69 2f 48 65 61 64 6c 65 73 73 5f g/wiki/Headless_
22e0: 63 6f 6d 70 75 74 65 72 0d 0a 5b 66 6d 61 5d 3a computer..[fma]:
22f0: 20 68 74 74 70 73 3a 2f 2f 65 6e 2e 77 69 6b 69 https://en.wiki
2300: 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 46 pedia.org/wiki/F
2310: 69 72 73 74 2d 6d 6f 76 65 72 5f 61 64 76 61 6e irst-mover_advan
2320: 74 61 67 65 0d 0a 5b 6b 72 30 31 5d 3a 20 68 74 tage..[kr01]: ht
2330: 74 70 73 3a 2f 2f 61 72 63 68 69 76 65 2e 6f 72 tps://archive.or
2340: 67 2f 73 74 72 65 61 6d 2f 62 69 74 73 61 76 65 g/stream/bitsave
2350: 72 73 5f 64 65 63 70 64 70 38 70 64 70 4d 61 6e rs_decpdp8pdpMan
2360: 75 61 6c 46 65 62 36 36 5f 32 31 31 37 37 31 31 ualFeb66_2117711
2370: 31 2f 46 2d 38 37 5f 50 44 50 2d 38 5f 4d 61 69 1/F-87_PDP-8_Mai
2380: 6e 74 65 6e 61 6e 63 65 5f 4d 61 6e 75 61 6c 5f ntenance_Manual_
2390: 46 65 62 36 36 23 70 61 67 65 2f 6e 39 35 2f 6d Feb66#page/n95/m
23a0: 6f 64 65 2f 31 75 70 0d 0a 5b 70 38 33 73 5d 3a ode/1up..[p83s]:
23b0: 20 68 74 74 70 3a 2f 2f 77 77 77 2e 72 69 63 6f http://www.rico
23c0: 6d 70 75 74 65 72 6d 75 73 65 75 6d 2e 6f 72 67 mputermuseum.org
23d0: 2f 48 6f 6d 65 2f 65 71 75 69 70 6d 65 6e 74 2f /Home/equipment/
23e0: 70 64 70 2d 38 73 2f 70 64 70 2d 38 2d 73 6f 66 pdp-8s/pdp-8-sof
23f0: 74 77 61 72 65 0d 0a 5b 70 63 35 5d 3a 20 68 74 tware..[pc5]: ht
2400: 74 70 3a 2f 2f 62 69 74 73 61 76 65 72 73 2e 6f tp://bitsavers.o
2410: 72 67 2f 70 64 66 2f 64 65 63 2f 70 64 70 35 2f rg/pdf/dec/pdp5/
2420: 50 44 50 2d 35 5f 70 67 6d 4c 69 62 72 5f 31 39 PDP-5_pgmLibr_19
2430: 36 34 2e 70 64 66 0d 0a 5b 70 64 70 35 62 5d 3a 64.pdf..[pdp5b]:
2440: 20 68 74 74 70 3a 2f 2f 61 72 63 68 69 76 65 2e http://archive.
2450: 63 6f 6d 70 75 74 65 72 68 69 73 74 6f 72 79 2e computerhistory.
2460: 6f 72 67 2f 72 65 73 6f 75 72 63 65 73 2f 74 65 org/resources/te
2470: 78 74 2f 44 45 43 2f 70 64 70 2d 35 2f 44 45 43 xt/DEC/pdp-5/DEC
2480: 2e 50 44 50 2d 35 2e 31 39 36 34 2e 31 30 32 36 .PDP-5.1964.1026
2490: 34 36 30 39 34 2e 70 64 66 0d 0a 5b 70 70 38 69 46094.pdf..[pp8i
24a0: 5d 3a 20 68 74 74 70 73 3a 2f 2f 61 72 63 68 69 ]: https://archi
24b0: 76 65 2e 6f 72 67 2f 64 65 74 61 69 6c 73 2f 62 ve.org/details/b
24c0: 69 74 73 61 76 65 72 73 5f 64 65 63 70 64 70 38 itsavers_decpdp8
24d0: 70 64 70 68 53 70 65 65 64 50 61 70 65 72 54 61 pdphSpeedPaperTa
24e0: 70 65 50 75 6e 63 68 4f 70 74 69 6f 6e 41 70 72 pePunchOptionApr
24f0: 36 39 5f 33 38 37 39 33 32 0d 0a 5b 74 31 38 32 69_387932..[t182
2500: 5d 3a 20 68 74 74 70 73 3a 2f 2f 61 72 63 68 69 ]: https://archi
2510: 76 65 2e 6f 72 67 2f 73 74 72 65 61 6d 2f 62 69 ve.org/stream/bi
2520: 74 73 61 76 65 72 73 5f 64 65 63 70 64 70 38 70 tsavers_decpdp8p
2530: 64 70 4d 61 6e 75 61 6c 46 65 62 36 36 5f 32 31 dpManualFeb66_21
2540: 31 37 37 31 31 31 2f 46 2d 38 37 5f 50 44 50 2d 177111/F-87_PDP-
2550: 38 5f 4d 61 69 6e 74 65 6e 61 6e 63 65 5f 4d 61 8_Maintenance_Ma
2560: 6e 75 61 6c 5f 46 65 62 36 36 23 70 61 67 65 2f nual_Feb66#page/
2570: 6e 39 36 2f 6d 6f 64 65 2f 31 75 70 0d 0a 5b 74 n96/mode/1up..[t
2580: 75 35 35 5d 3a 20 68 74 74 70 73 3a 2f 2f 61 72 u55]: https://ar
2590: 63 68 69 76 65 2e 6f 72 67 2f 64 65 74 61 69 6c chive.org/detail
25a0: 73 2f 62 69 74 73 61 76 65 72 73 5f 64 65 63 64 s/bitsavers_decd
25b0: 65 63 74 61 70 65 5f 33 35 34 33 34 38 37 0d 0a ectape_3543487..
25c0: 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 6d 61 ....## <a id="ma
25d0: 63 72 6f 2d 38 22 3e 3c 2f 61 3e 4d 41 43 52 4f cro-8"></a>MACRO
25e0: 2d 38 0d 0a 0d 0a 7c 20 2a 2a 49 6e 74 72 6f 64 -8....| **Introd
25f0: 75 63 65 64 2a 2a 20 7c 20 4f 63 74 6f 62 65 72 uced** | October
2600: 20 31 39 36 35 0d 0a 7c 20 2a 2a 4d 61 6e 75 61 1965..| **Manua
2610: 6c 2a 2a 20 7c 20 5b 50 44 46 2c 20 31 2e 37 20 l** | [PDF, 1.7
2620: 4d 42 5d 28 68 74 74 70 73 3a 2f 2f 77 77 77 2e MB](https://www.
2630: 67 72 63 2e 63 6f 6d 2f 70 64 70 2d 38 2f 64 6f grc.com/pdp-8/do
2640: 63 73 2f 4d 41 43 52 4f 2d 38 5f 50 72 6f 67 72 cs/MACRO-8_Progr
2650: 61 6d 6d 69 6e 67 5f 4d 61 6e 75 61 6c 2e 70 64 amming_Manual.pd
2660: 66 29 0d 0a 7c 20 2a 2a 44 65 6c 69 76 65 72 79 f)..| **Delivery
2670: 2a 2a 20 7c 20 70 61 70 65 72 20 74 61 70 65 0d ** | paper tape.
2680: 0a 0d 0a 4d 41 43 52 4f 2d 38 20 77 61 73 20 61 ...MACRO-8 was a
2690: 6e 6f 74 68 65 72 20 70 61 70 65 72 20 74 61 70 nother paper tap
26a0: 65 20 61 73 73 65 6d 62 6c 65 72 20 66 6f 72 20 e assembler for
26b0: 74 68 65 20 50 44 50 2d 38 2e 20 49 74 73 20 65 the PDP-8. Its e
26c0: 70 6f 6e 79 6d 6f 75 73 20 61 64 76 61 6e 74 61 ponymous advanta
26d0: 67 65 20 6f 76 65 72 20 50 41 4c 2d 49 49 49 20 ge over PAL-III
26e0: 69 73 20 74 68 61 74 20 69 74 20 61 64 64 65 64 is that it added
26f0: 20 5b 6d 61 63 72 6f 73 5d 28 68 74 74 70 73 3a [macros](https:
2700: 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f //en.wikipedia.o
2710: 72 67 2f 77 69 6b 69 2f 4d 61 63 72 6f 5f 69 6e rg/wiki/Macro_in
2720: 73 74 72 75 63 74 69 6f 6e 29 2c 20 61 20 76 65 struction), a ve
2730: 72 79 20 75 73 65 66 75 6c 20 66 65 61 74 75 72 ry useful featur
2740: 65 20 69 6e 20 61 73 73 65 6d 62 6c 79 20 6c 61 e in assembly la
2750: 6e 67 75 61 67 65 20 70 72 6f 67 72 61 6d 6d 69 nguage programmi
2760: 6e 67 20 61 73 20 69 74 20 72 65 64 75 63 65 73 ng as it reduces
2770: 20 61 20 6c 6f 74 20 6f 66 20 74 68 65 20 74 65 a lot of the te
2780: 64 69 75 6d 20 6f 66 20 77 72 69 74 69 6e 67 20 dium of writing
2790: 73 75 63 68 20 70 72 6f 67 72 61 6d 73 2e 0d 0a such programs...
27a0: 0d 0a 4d 41 43 52 4f 2d 38 20 69 73 20 62 61 73 ..MACRO-8 is bas
27b0: 65 64 20 6f 6e 20 74 68 65 20 50 41 4c 2d 49 49 ed on the PAL-II
27c0: 49 20 6c 61 6e 67 75 61 67 65 2c 20 62 75 74 20 I language, but
27d0: 69 74 20 61 64 64 65 64 20 6d 75 63 68 20 6d 6f it added much mo
27e0: 72 65 20 74 68 61 6e 20 6a 75 73 74 20 6d 61 63 re than just mac
27f0: 72 6f 73 3a 0d 0a 0d 0a 2a 20 20 20 60 44 45 46 ros:....* `DEF
2800: 49 4e 45 60 20 6d 61 63 72 6f 20 64 65 66 69 6e INE` macro defin
2810: 69 74 69 6f 6e 20 73 79 73 74 65 6d 0d 0a 2a 20 ition system..*
2820: 20 20 61 75 74 6f 6d 61 74 69 63 20 6f 66 66 2d automatic off-
2830: 70 61 67 65 20 6c 69 6e 6b 20 67 65 6e 65 72 61 page link genera
2840: 74 69 6f 6e 0d 0a 2a 20 20 20 6c 69 74 65 72 61 tion..* litera
2850: 6c 73 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e ls in the curren
2860: 74 20 70 61 67 65 20 76 69 61 20 60 28 4e 4e 29 t page via `(NN)
2870: 60 20 73 79 6e 74 61 78 20 6f 72 20 69 6e 20 70 ` syntax or in p
2880: 61 67 65 20 7a 65 72 6f 20 76 69 61 20 60 5b 4e age zero via `[N
2890: 4e 5d 60 3b 20 63 6c 6f 73 69 6e 67 20 70 61 72 N]`; closing par
28a0: 65 6e 2f 62 72 61 63 6b 65 74 20 6f 70 74 69 6f en/bracket optio
28b0: 6e 61 6c 0d 0a 2a 20 20 20 6d 6f 72 65 20 6f 70 nal..* more op
28c0: 65 72 61 74 6f 72 73 20 69 6e 20 65 78 70 72 65 erators in expre
28d0: 73 73 69 6f 6e 73 3a 0d 0a 20 20 20 20 2a 20 20 ssions:.. *
28e0: 20 20 60 21 60 20 66 6f 72 20 42 6f 6f 6c 65 61 `!` for Boolea
28f0: 6e 20 4f 52 20 28 74 68 65 20 41 53 52 2d 33 33 n OR (the ASR-33
2900: 20 74 65 72 6d 69 6e 61 6c 20 63 68 61 72 61 63 terminal charac
2910: 74 65 72 20 73 65 74 20 5b 64 69 64 20 6e 6f 74 ter set [did not
2920: 20 69 6e 63 6c 75 64 65 20 74 68 65 20 26 62 72 include the &br
2930: 76 62 61 72 3b 20 63 68 61 72 61 63 74 65 72 5d vbar; character]
2940: 5b 63 73 33 33 5d 29 0d 0a 20 20 20 20 2a 20 20 [cs33]).. *
2950: 20 20 60 26 60 20 66 6f 72 20 42 6f 6f 6c 65 61 `&` for Boolea
2960: 6e 20 41 4e 44 0d 0a 2a 20 20 20 73 69 6e 67 6c n AND..* singl
2970: 65 2d 63 68 61 72 61 63 74 65 72 20 41 53 43 49 e-character ASCI
2980: 49 20 63 6f 6e 73 74 61 6e 74 73 3a 20 60 22 41 I constants: `"A
2990: 22 60 3b 20 63 6c 6f 73 69 6e 67 20 71 75 6f 74 "`; closing quot
29a0: 65 20 6f 70 74 69 6f 6e 61 6c 0d 0a 2a 20 20 20 e optional..*
29b0: 6f 74 68 65 72 20 6e 65 77 20 70 73 65 75 64 6f other new pseudo
29c0: 2d 6f 70 73 3a 0d 0a 20 20 20 20 2a 20 20 20 60 -ops:.. * `
29d0: 44 55 42 4c 60 3a 20 64 65 66 69 6e 65 20 64 6f DUBL`: define do
29e0: 75 62 6c 65 2d 70 72 65 63 69 73 69 6f 6e 20 69 uble-precision i
29f0: 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e 74 0d nteger constant.
2a00: 0a 20 20 20 20 2a 20 20 20 60 46 4c 54 47 60 3a . * `FLTG`:
2a10: 20 64 65 66 69 6e 65 20 64 6f 75 62 6c 65 2d 70 define double-p
2a20: 72 65 63 69 73 69 6f 6e 20 66 6c 6f 61 74 69 6e recision floatin
2a30: 67 2d 70 6f 69 6e 74 20 63 6f 6e 73 74 61 6e 74 g-point constant
2a40: 0d 0a 20 20 20 20 2a 20 20 20 60 50 41 47 45 60 .. * `PAGE`
2a50: 3a 20 5b 72 65 5d 73 65 74 20 74 68 65 20 6c 6f : [re]set the lo
2a60: 63 61 74 69 6f 6e 20 63 6f 75 6e 74 65 72 20 74 cation counter t
2a70: 6f 20 74 68 65 20 74 6f 70 20 6f 66 20 74 68 65 o the top of the
2a80: 20 67 69 76 65 6e 20 70 61 67 65 0d 0a 20 20 20 given page..
2a90: 20 2a 20 20 20 60 54 45 58 54 60 3a 20 63 6f 6e * `TEXT`: con
2aa0: 76 65 72 74 20 61 20 6c 69 74 65 72 61 6c 20 73 vert a literal s
2ab0: 74 72 69 6e 67 20 69 6e 20 74 68 65 20 70 72 6f tring in the pro
2ac0: 67 72 61 6d 20 74 65 78 74 20 74 6f 20 36 2d 62 gram text to 6-b
2ad0: 69 74 20 70 61 63 6b 65 64 20 41 53 43 49 49 20 it packed ASCII
2ae0: 69 6e 20 74 68 65 20 62 69 6e 61 72 79 20 6f 75 in the binary ou
2af0: 74 70 75 74 0d 0a 0d 0a 54 68 65 20 60 44 45 46 tput....The `DEF
2b00: 49 4e 45 60 20 66 65 61 74 75 72 65 20 69 73 20 INE` feature is
2b10: 63 6c 65 61 72 6c 79 20 74 68 69 73 20 61 73 73 clearly this ass
2b20: 65 6d 62 6c 65 72 27 73 20 6d 61 72 71 75 65 65 embler's marquee
2b30: 20 66 65 61 74 75 72 65 2c 20 62 75 74 20 69 74 feature, but it
2b40: 20 69 73 20 74 68 65 20 72 65 73 74 20 6f 66 20 is the rest of
2b50: 74 68 65 20 6c 69 73 74 20 74 68 61 74 20 73 68 the list that sh
2b60: 6f 75 6c 64 20 6f 70 65 6e 20 79 6f 75 72 20 65 ould open your e
2b70: 79 65 73 3a 20 61 6c 6c 20 6f 66 20 74 68 65 73 yes: all of thes
2b80: 65 20 66 65 61 74 75 72 65 73 20 65 78 63 65 70 e features excep
2b90: 74 20 66 6f 72 20 60 44 55 42 4c 60 20 61 6e 64 t for `DUBL` and
2ba0: 20 60 46 4c 54 47 60 20 77 65 72 65 20 6c 61 74 `FLTG` were lat
2bb0: 65 72 20 61 64 6f 70 74 65 64 20 61 73 2d 69 73 er adopted as-is
2bc0: 20 69 6e 74 6f 20 74 68 65 20 50 41 4c 20 66 61 into the PAL fa
2bd0: 6d 69 6c 79 2e 0d 0a 0d 0a 4d 41 43 52 4f 2d 38 mily.....MACRO-8
2be0: 20 64 72 6f 70 70 65 64 20 74 68 65 20 60 46 49 dropped the `FI
2bf0: 58 4d 52 49 60 20 70 73 65 75 64 6f 2d 6f 70 20 XMRI` pseudo-op
2c00: 72 65 6c 61 74 69 76 65 20 74 6f 20 50 41 4c 2d relative to PAL-
2c10: 49 49 49 2e 20 4f 6e 65 20 6d 61 6e 75 61 6c 20 III. One manual
2c20: 49 20 65 78 61 6d 69 6e 65 64 20 73 68 6f 77 65 I examined showe
2c30: 64 20 61 6e 20 65 78 61 6d 70 6c 65 20 74 68 61 d an example tha
2c40: 74 20 63 6f 75 6c 64 20 6f 6e 6c 79 20 62 65 20 t could only be
2c50: 64 6f 6e 65 20 75 73 69 6e 67 20 60 46 49 58 4d done using `FIXM
2c60: 52 49 60 20 75 6e 64 65 72 20 50 41 4c 2d 49 49 RI` under PAL-II
2c70: 49 2c 20 62 79 20 77 68 69 63 68 20 49 20 69 6e I, by which I in
2c80: 66 65 72 20 74 68 61 74 20 4d 41 43 52 4f 2d 38 fer that MACRO-8
2c90: 20 73 69 6d 70 6c 79 20 64 6f 65 73 6e 27 74 20 simply doesn't
2ca0: 6e 65 65 64 20 74 68 65 20 68 69 6e 74 20 66 72 need the hint fr
2cb0: 6f 6d 20 74 68 65 20 75 73 65 72 3a 20 6d 65 6d om the user: mem
2cc0: 6f 72 79 20 72 65 66 65 72 65 6e 63 65 20 69 6e ory reference in
2cd0: 73 74 72 75 63 74 69 6f 6e 73 20 63 61 6e 20 62 structions can b
2ce0: 65 20 64 65 74 65 63 74 65 64 20 61 73 20 70 61 e detected as pa
2cf0: 72 74 20 6f 66 20 72 65 67 75 6c 61 72 20 73 79 rt of regular sy
2d00: 6d 62 6f 6c 20 74 61 62 6c 65 20 6d 61 6e 69 70 mbol table manip
2d10: 75 6c 61 74 69 6f 6e 73 2e 0d 0a 0d 0a 3e 20 2a ulations.....> *
2d20: 2a 48 69 73 74 6f 72 69 63 61 6c 20 76 69 67 6e *Historical vign
2d30: 65 74 74 65 3a 2a 2a 20 57 68 65 72 65 20 74 68 ette:** Where th
2d40: 65 20 65 61 72 6c 69 65 72 20 50 44 50 2d 38 20 e earlier PDP-8
2d50: 61 73 73 65 6d 62 6c 65 72 20 6d 61 6e 75 61 6c assembler manual
2d60: 73 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e s refer to the n
2d70: 65 77 20 41 53 43 49 49 20 63 68 61 72 61 63 74 ew ASCII charact
2d80: 65 72 20 63 6f 6e 73 74 61 6e 74 20 66 65 61 74 er constant feat
2d90: 75 72 65 2c 20 74 68 65 79 20 61 63 74 75 61 6c ure, they actual
2da0: 6c 79 20 65 69 74 68 65 72 20 72 65 66 65 72 20 ly either refer
2db0: 74 6f 20 22 55 53 41 20 53 43 49 49 22 20 6f 72 to "USA SCII" or
2dc0: 20 74 6f 20 22 41 4e 53 43 49 49 22 2c 20 74 68 to "ANSCII", th
2dd0: 6f 73 65 20 62 65 69 6e 67 20 74 68 65 20 6f 72 ose being the or
2de0: 69 67 69 6e 61 6c 20 6e 61 6d 65 73 20 6f 66 20 iginal names of
2df0: 5b 41 53 43 49 49 5d 5b 61 73 63 69 69 5d 3a 20 [ASCII][ascii]:
2e00: 74 68 65 20 55 6e 69 74 65 64 20 53 74 61 74 65 the United State
2e10: 73 20 6f 66 20 41 6d 65 72 69 63 61 20 53 74 61 s of America Sta
2e20: 6e 64 61 72 64 20 43 6f 64 65 20 66 6f 72 20 49 ndard Code for I
2e30: 6e 66 6f 72 6d 61 74 69 6f 6e 20 49 6e 74 65 72 nformation Inter
2e40: 63 68 61 6e 67 65 3b 20 6f 72 20 74 68 65 20 41 change; or the A
2e50: 6d 65 72 69 63 61 6e 20 4e 61 74 69 6f 6e 61 6c merican National
2e60: 20 53 74 61 6e 64 61 72 64 20 43 6f 64 65 20 66 Standard Code f
2e70: 6f 72 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 49 or Information I
2e80: 6e 74 65 72 63 68 61 6e 67 65 2e 20 59 6f 75 20 nterchange. You
2e90: 6d 61 79 20 61 6c 73 6f 20 73 65 65 20 22 55 53 may also see "US
2ea0: 2d 41 53 43 49 49 22 20 69 6e 20 73 6f 6d 65 20 -ASCII" in some
2eb0: 70 6c 61 63 65 73 2c 20 62 65 69 6e 67 20 61 6e places, being an
2ec0: 6f 74 68 65 72 20 77 61 79 20 6f 66 20 77 72 69 other way of wri
2ed0: 74 69 6e 67 20 22 55 53 41 20 53 43 49 49 22 2e ting "USA SCII".
2ee0: 0d 0a 0d 0a 5b 61 73 63 69 69 5d 3a 20 68 74 74 ....[ascii]: htt
2ef0: 70 73 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 ps://en.wikipedi
2f00: 61 2e 6f 72 67 2f 77 69 6b 69 2f 41 53 43 49 49 a.org/wiki/ASCII
2f10: 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 ......## <a id="
2f20: 70 61 6c 2d 64 22 3e 3c 2f 61 3e 50 41 4c 2d 44 pal-d"></a>PAL-D
2f30: 0d 0a 0d 0a 7c 20 2a 2a 49 6e 74 72 6f 64 75 63 ....| **Introduc
2f40: 65 64 2a 2a 20 7c 20 41 70 72 69 6c 20 31 39 36 ed** | April 196
2f50: 38 0d 0a 7c 20 2a 2a 4d 61 6e 75 61 6c 2a 2a 20 8..| **Manual**
2f60: 7c 20 5b 50 44 46 2c 20 31 2e 39 20 4d 42 5d 28 | [PDF, 1.9 MB](
2f70: 68 74 74 70 73 3a 2f 2f 61 72 63 68 69 76 65 2e https://archive.
2f80: 6f 72 67 2f 64 65 74 61 69 6c 73 2f 62 69 74 73 org/details/bits
2f90: 61 76 65 72 73 5f 64 65 63 70 64 70 38 73 6f 66 avers_decpdp8sof
2fa0: 50 72 6f 67 52 65 66 5f 31 39 30 37 36 36 36 29 ProgRef_1907666)
2fb0: 0d 0a 7c 20 2a 2a 44 65 6c 69 76 65 72 79 2a 2a ..| **Delivery**
2fc0: 20 7c 20 70 61 70 65 72 20 74 61 70 65 0d 0a 0d | paper tape...
2fd0: 0a 50 41 4c 2d 44 20 69 73 20 61 20 64 65 73 63 .PAL-D is a desc
2fe0: 65 6e 64 61 6e 74 20 6f 66 20 50 41 4c 2d 49 49 endant of PAL-II
2ff0: 49 2c 20 6f 72 69 67 69 6e 61 6c 6c 79 20 61 70 I, originally ap
3000: 70 65 61 72 69 6e 67 20 61 73 20 70 61 72 74 20 pearing as part
3010: 6f 66 20 74 68 65 20 50 44 50 2d 38 20 44 69 73 of the PDP-8 Dis
3020: 6b 20 4d 6f 6e 69 74 6f 72 20 53 79 73 74 65 6d k Monitor System
3030: 2c 20 6f 6e 65 20 6f 66 20 4f 53 2f 38 27 73 20 , one of OS/8's
3040: 70 72 65 64 65 63 65 73 73 6f 72 73 2e 20 49 74 predecessors. It
3050: 20 77 6f 75 6c 64 20 6c 61 74 65 72 20 72 65 61 would later rea
3060: 70 70 65 61 72 20 75 6e 64 65 72 20 54 53 53 2f ppear under TSS/
3070: 38 2e 0d 0a 0d 0a 5b 57 69 6b 69 70 65 64 69 61 8.....[Wikipedia
3080: 20 63 6c 61 69 6d 73 5d 5b 64 6d 73 5d 20 74 68 claims][dms] th
3090: 61 74 20 74 68 65 20 66 69 72 73 74 20 76 65 72 at the first ver
30a0: 73 69 6f 6e 20 6f 66 20 74 68 65 20 44 69 73 6b sion of the Disk
30b0: 20 4d 6f 6e 69 74 6f 72 20 77 61 73 20 70 75 62 Monitor was pub
30c0: 6c 69 73 68 65 64 20 69 6e 20 6c 61 74 65 20 31 lished in late 1
30d0: 39 36 37 2c 20 62 75 74 20 74 68 65 20 65 61 72 967, but the ear
30e0: 6c 69 65 73 74 20 50 41 4c 2d 44 20 6d 61 6e 75 liest PAL-D manu
30f0: 61 6c 20 49 27 76 65 20 62 65 65 6e 20 61 62 6c al I've been abl
3100: 65 20 74 6f 20 66 69 6e 64 20 68 61 73 20 41 70 e to find has Ap
3110: 72 69 6c 20 31 39 36 38 20 61 73 20 74 68 65 20 ril 1968 as the
3120: 64 61 74 65 20 6f 66 20 69 74 73 20 66 69 72 73 date of its firs
3130: 74 20 65 64 69 74 69 6f 6e 2e 0d 0a 0d 0a 50 41 t edition.....PA
3140: 4c 2d 44 20 63 61 6d 65 20 69 6e 20 74 77 6f 20 L-D came in two
3150: 66 6f 72 6d 73 2c 20 74 68 65 20 34 4b 20 61 6e forms, the 4K an
3160: 64 20 38 4b 20 76 65 72 73 69 6f 6e 73 2c 20 72 d 8K versions, r
3170: 65 66 65 72 72 69 6e 67 20 74 6f 20 74 68 65 20 eferring to the
3180: 6d 69 6e 69 6d 75 6d 20 61 6d 6f 75 6e 74 20 6f minimum amount o
3190: 66 20 63 6f 72 65 20 6d 65 6d 6f 72 79 20 65 61 f core memory ea
31a0: 63 68 20 72 65 71 75 69 72 65 64 2e 20 4e 6f 74 ch required. Not
31b0: 65 20 74 68 61 74 20 74 68 65 20 34 4b 20 76 65 e that the 4K ve
31c0: 72 73 69 6f 6e 20 63 6f 75 6c 64 20 61 73 73 65 rsion could asse
31d0: 6d 62 6c 65 20 66 6f 72 20 6c 61 72 67 65 72 20 mble for larger
31e0: 6d 61 63 68 69 6e 65 73 3b 20 69 74 20 68 61 73 machines; it has
31f0: 20 74 68 65 20 60 46 49 45 4c 44 60 20 70 73 65 the `FIELD` pse
3200: 75 64 6f 2d 6f 70 2c 20 66 6f 72 20 65 78 61 6d udo-op, for exam
3210: 70 6c 65 2c 20 77 68 69 63 68 20 69 73 20 6f 66 ple, which is of
3220: 20 6e 6f 20 75 73 65 20 75 6e 6c 65 73 73 20 79 no use unless y
3230: 6f 75 72 20 61 73 73 65 6d 62 6c 65 64 20 70 72 our assembled pr
3240: 6f 67 72 61 6d 20 77 6f 75 6c 64 20 72 75 6e 20 ogram would run
3250: 69 6e 20 61 74 20 6c 65 61 73 74 20 38 4b 20 6f in at least 8K o
3260: 66 20 63 6f 72 65 2e 0d 0a 0d 0a 34 4b 20 50 41 f core.....4K PA
3270: 4c 2d 44 20 61 64 64 65 64 20 6f 6e 6c 79 20 6f L-D added only o
3280: 6e 65 20 6e 65 77 20 66 65 61 74 75 72 65 20 74 ne new feature t
3290: 6f 20 74 68 65 20 50 44 50 2d 38 20 61 73 73 65 o the PDP-8 asse
32a0: 6d 62 6c 65 72 20 66 61 6d 69 6c 79 3a 20 74 68 mbler family: th
32b0: 65 20 60 58 4c 49 53 54 60 20 70 73 65 75 64 6f e `XLIST` pseudo
32c0: 2d 6f 70 2c 20 77 68 69 63 68 20 6c 65 74 73 20 -op, which lets
32d0: 74 68 65 20 70 72 6f 67 72 61 6d 6d 65 72 20 73 the programmer s
32e0: 74 6f 70 20 61 6e 64 20 74 68 65 6e 20 72 65 2d top and then re-
32f0: 73 74 61 72 74 20 74 68 65 20 61 73 73 65 6d 62 start the assemb
3300: 6c 79 20 6c 69 73 74 69 6e 67 20 69 6e 20 74 68 ly listing in th
3310: 65 20 6f 70 74 69 6f 6e 61 6c 20 74 68 69 72 64 e optional third
3320: 20 70 61 73 73 2e 0d 0a 0d 0a 34 4b 20 50 41 4c pass.....4K PAL
3330: 2d 44 20 69 73 20 6d 6f 72 65 20 6e 6f 74 61 62 -D is more notab
3340: 6c 65 20 66 6f 72 20 74 68 65 20 66 65 61 74 75 le for the featu
3350: 72 65 73 20 69 74 20 62 72 6f 75 67 68 74 20 69 res it brought i
3360: 6e 74 6f 20 74 68 65 20 50 41 4c 20 66 61 6d 69 nto the PAL fami
3370: 6c 79 20 66 72 6f 6d 20 5b 4d 41 43 52 4f 2d 38 ly from [MACRO-8
3380: 5d 28 23 6d 61 63 72 6f 2d 38 29 3a 0d 0a 0d 0a ](#macro-8):....
3390: 2a 20 20 20 6c 69 74 65 72 61 6c 73 0d 0a 2a 20 * literals..*
33a0: 20 20 6f 66 66 2d 70 61 67 65 20 6c 69 6e 6b 20 off-page link
33b0: 67 65 6e 65 72 61 74 69 6f 6e 0d 0a 2a 20 20 20 generation..*
33c0: 42 6f 6f 6c 65 61 6e 20 6f 70 65 72 61 74 6f 72 Boolean operator
33d0: 73 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 s in expressions
33e0: 0d 0a 2a 20 20 20 74 68 65 20 60 50 41 47 45 60 ..* the `PAGE`
33f0: 20 61 6e 64 20 60 54 45 58 54 60 20 70 73 65 75 and `TEXT` pseu
3400: 64 6f 2d 6f 70 73 0d 0a 0d 0a 38 4b 20 50 41 4c do-ops....8K PAL
3410: 2d 44 20 61 64 64 65 64 20 73 65 76 65 72 61 6c -D added several
3420: 20 6d 6f 72 65 20 66 65 61 74 75 72 65 73 20 72 more features r
3430: 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 34 elative to the 4
3440: 4b 20 76 65 72 73 69 6f 6e 3a 0d 0a 0d 0a 2a 20 K version:....*
3450: 20 20 61 62 69 6c 69 74 79 20 74 6f 20 72 75 6e ability to run
3460: 20 69 6e 20 38 4b 20 6f 72 20 31 32 4b 20 6f 66 in 8K or 12K of
3470: 20 63 6f 72 65 2c 20 61 6c 6c 6f 77 69 6e 67 20 core, allowing
3480: 61 73 73 65 6d 62 6c 79 20 6f 66 20 6c 61 72 67 assembly of larg
3490: 65 72 20 70 72 6f 67 72 61 6d 73 0d 0a 2a 20 20 er programs..*
34a0: 20 6d 6f 72 65 20 70 73 65 75 64 6f 2d 6f 70 65 more pseudo-ope
34b0: 72 61 74 69 6f 6e 73 3a 0d 0a 20 20 20 20 2a 20 rations:.. *
34c0: 20 20 60 45 4a 45 43 54 60 3a 20 65 6d 69 74 20 `EJECT`: emit
34d0: 61 20 66 6f 72 6d 20 66 65 65 64 20 69 6e 20 74 a form feed in t
34e0: 68 65 20 6c 69 73 74 69 6e 67 20 6f 75 74 70 75 he listing outpu
34f0: 74 0d 0a 20 20 20 20 2a 20 20 20 60 49 46 44 45 t.. * `IFDE
3500: 46 60 20 61 6e 64 20 60 49 46 5a 45 52 4f 60 3a F` and `IFZERO`:
3510: 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 61 73 73 conditional ass
3520: 65 6d 62 6c 79 20 74 65 73 74 73 3b 20 61 66 66 embly tests; aff
3530: 65 63 74 65 64 20 73 74 61 74 65 6d 65 6e 74 73 ected statements
3540: 20 69 6e 20 61 6e 67 6c 65 20 62 72 61 63 6b 65 in angle bracke
3550: 74 73 0d 0a 20 20 20 20 2a 20 20 20 60 4e 4f 50 ts.. * `NOP
3560: 55 4e 43 48 60 20 61 6e 64 20 60 45 4e 50 55 4e UNCH` and `ENPUN
3570: 43 48 60 3a 20 73 74 6f 70 20 61 6e 64 20 72 65 CH`: stop and re
3580: 73 74 61 72 74 20 61 73 73 65 6d 62 6c 65 64 20 start assembled
3590: 6d 61 63 68 69 6e 65 20 63 6f 64 65 20 6f 75 74 machine code out
35a0: 70 75 74 0d 0a 20 20 20 20 2a 20 20 20 60 5a 42 put.. * `ZB
35b0: 4c 4f 43 4b 60 3a 20 72 65 73 65 72 76 65 20 6d LOCK`: reserve m
35c0: 65 6d 6f 72 79 2c 20 73 65 74 74 69 6e 67 20 69 emory, setting i
35d0: 6e 69 74 69 61 6c 20 76 61 6c 75 65 73 20 74 6f nitial values to
35e0: 20 7a 65 72 6f 0d 0a 0d 0a 4e 6f 74 65 20 74 68 zero....Note th
35f0: 61 74 20 6e 65 69 74 68 65 72 20 76 65 72 73 69 at neither versi
3600: 6f 6e 20 6f 66 20 50 41 4c 2d 44 20 62 72 6f 75 on of PAL-D brou
3610: 67 68 74 20 6f 76 65 72 20 74 68 65 20 60 44 45 ght over the `DE
3620: 46 49 4e 45 60 2c 20 60 44 55 42 4c 60 20 6f 72 FINE`, `DUBL` or
3630: 20 60 46 4c 54 47 60 20 70 73 65 75 64 6f 2d 6f `FLTG` pseudo-o
3640: 70 73 20 66 72 6f 6d 20 4d 41 43 52 4f 2d 38 2e ps from MACRO-8.
3650: 0d 0a 0d 0a 4e 6f 74 69 63 65 20 61 6c 73 6f 20 ....Notice also
3660: 74 68 61 74 20 74 68 65 20 6e 65 67 61 74 65 64 that the negated
3670: 20 66 6f 72 6d 73 20 6f 66 20 74 68 65 20 63 6f forms of the co
3680: 6e 64 69 74 69 6f 6e 61 6c 20 61 73 73 65 6d 62 nditional assemb
3690: 6c 79 20 6f 70 65 72 61 74 69 6f 6e 73 20 64 69 ly operations di
36a0: 64 20 6e 6f 74 20 61 70 70 65 61 72 20 75 6e 74 d not appear unt
36b0: 69 6c 20 6c 61 74 65 72 2e 20 54 68 65 20 66 69 il later. The fi
36c0: 72 73 74 20 72 65 66 65 72 65 6e 63 65 20 49 27 rst reference I'
36d0: 76 65 20 62 65 65 6e 20 61 62 6c 65 20 74 6f 20 ve been able to
36e0: 66 69 6e 64 20 66 6f 72 20 60 49 46 4e 5a 52 4f find for `IFNZRO
36f0: 60 20 61 6e 64 20 60 49 46 4e 44 45 46 60 20 69 ` and `IFNDEF` i
3700: 73 20 69 6e 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 s in connection
3710: 77 69 74 68 20 5b 50 41 4c 38 5d 28 23 70 61 6c with [PAL8](#pal
3720: 38 29 2e 0d 0a 0d 0a 57 65 20 66 69 6e 64 20 65 8).....We find e
3730: 76 69 64 65 6e 63 65 20 66 6f 72 20 61 20 63 6f vidence for a co
3740: 6d 70 6c 69 63 61 74 65 64 20 64 65 76 65 6c 6f mplicated develo
3750: 70 6d 65 6e 74 20 68 69 73 74 6f 72 79 20 69 6e pment history in
3760: 20 74 68 65 20 60 50 55 4e 43 48 60 20 61 6e 64 the `PUNCH` and
3770: 20 60 58 4c 49 53 54 60 20 70 73 65 75 64 6f 2d `XLIST` pseudo-
3780: 6f 70 73 2e 20 54 68 65 79 20 64 6f 20 6d 75 63 ops. They do muc
3790: 68 20 74 68 65 20 73 61 6d 65 20 74 68 69 6e 67 h the same thing
37a0: 2c 20 6f 6e 6c 79 20 66 6f 72 20 64 69 66 66 65 , only for diffe
37b0: 72 65 6e 74 20 70 61 73 73 65 73 20 6f 66 20 74 rent passes of t
37c0: 68 65 20 61 73 73 65 6d 62 6c 65 72 2c 20 79 65 he assembler, ye
37d0: 74 20 74 68 65 20 66 6f 72 6d 20 6f 66 20 74 68 t the form of th
37e0: 65 20 6f 70 73 20 64 69 66 66 65 72 2e 20 20 49 e ops differ. I
37f0: 66 20 74 68 69 73 20 61 73 73 65 6d 62 6c 65 72 f this assembler
3800: 20 77 61 73 20 63 72 65 61 74 65 64 20 62 79 20 was created by
3810: 61 20 73 69 6e 67 6c 65 20 6d 69 6e 64 20 69 6e a single mind in
3820: 20 61 20 73 69 6e 67 6c 65 20 74 69 6d 65 20 61 a single time a
3830: 6e 64 20 70 6c 61 63 65 2c 20 6f 72 20 69 66 20 nd place, or if
3840: 69 74 20 77 65 72 65 20 63 72 65 61 74 65 64 20 it were created
3850: 62 79 20 61 20 73 74 61 6e 64 61 72 64 73 20 63 by a standards c
3860: 6f 6d 6d 69 74 74 65 65 20 77 69 74 68 20 61 20 ommittee with a
3870: 6d 61 6e 64 61 74 65 20 74 6f 20 73 69 6d 70 6c mandate to simpl
3880: 69 66 79 20 61 6e 64 20 75 6e 69 66 79 2c 20 79 ify and unify, y
3890: 6f 75 20 77 6f 75 6c 64 20 65 78 70 65 63 74 20 ou would expect
38a0: 74 68 65 73 65 20 74 77 6f 20 73 65 74 73 20 6f these two sets o
38b0: 66 20 70 73 65 75 64 6f 2d 6f 70 73 20 74 6f 20 f pseudo-ops to
38c0: 68 61 76 65 20 73 69 6d 69 6c 61 72 20 6e 61 6d have similar nam
38d0: 65 73 20 61 6e 64 20 66 6f 72 6d 73 2c 20 65 69 es and forms, ei
38e0: 74 68 65 72 20 60 58 50 55 4e 43 48 60 20 74 61 ther `XPUNCH` ta
38f0: 6b 69 6e 67 20 61 6e 20 61 72 67 75 6d 65 6e 74 king an argument
3900: 20 6f 72 20 61 20 60 4e 4f 4c 49 53 54 60 2f 60 or a `NOLIST`/`
3910: 45 4e 4c 49 53 54 60 20 70 61 69 72 2e 20 57 65 ENLIST` pair. We
3920: 20 63 61 6e 20 69 6e 66 65 72 20 64 69 66 66 65 can infer diffe
3930: 72 65 6e 74 20 6d 69 6e 64 73 20 62 65 68 69 6e rent minds behin
3940: 64 20 74 68 65 20 34 4b 20 61 6e 64 20 38 4b 20 d the 4K and 8K
3950: 76 65 72 73 69 6f 6e 73 20 6f 66 20 50 41 4c 2d versions of PAL-
3960: 44 2e 0d 0a 0d 0a 54 68 65 20 60 50 55 4e 43 48 D.....The `PUNCH
3970: 60 20 6f 70 20 6e 61 6d 65 73 20 61 6c 73 6f 20 ` op names also
3980: 73 75 67 67 65 73 74 20 74 68 61 74 20 74 68 65 suggest that the
3990: 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 6d 61 operation is ma
39a0: 69 6e 6c 79 20 75 73 65 66 75 6c 20 66 6f 72 20 inly useful for
39b0: 70 61 70 65 72 20 74 61 70 65 20 6f 75 74 70 75 paper tape outpu
39c0: 74 2c 20 73 74 69 6c 6c 20 61 6e 20 69 6d 70 6f t, still an impo
39d0: 72 74 61 6e 74 20 49 2f 4f 20 64 65 76 69 63 65 rtant I/O device
39e0: 20 77 68 65 6e 20 50 41 4c 2d 44 20 77 61 73 20 when PAL-D was
39f0: 6e 65 77 2e 20 57 65 20 63 61 6e 20 66 69 6e 64 new. We can find
3a00: 20 69 74 20 6d 65 6e 74 69 6f 6e 65 64 20 69 6e it mentioned in
3a10: 20 74 68 65 20 50 41 4c 38 20 73 65 63 74 69 6f the PAL8 sectio
3a20: 6e 20 6f 66 20 5b 74 68 65 20 4f 53 2f 38 20 48 n of [the OS/8 H
3a30: 61 6e 64 62 6f 6f 6b 20 28 31 39 37 34 20 65 64 andbook (1974 ed
3a40: 2e 29 5d 5b 6f 73 38 6d 5d 2c 20 62 75 74 20 69 .)][os8m], but i
3a50: 74 20 77 61 73 20 61 69 72 62 72 75 73 68 65 64 t was airbrushed
3a60: 20 6f 75 74 20 6f 66 20 68 69 73 74 6f 72 79 20 out of history
3a70: 62 79 20 74 68 65 20 5b 31 39 37 39 20 65 64 69 by the [1979 edi
3a80: 74 69 6f 6e 20 66 6f 72 20 4f 53 2f 37 38 5d 5b tion for OS/78][
3a90: 6f 73 37 38 6d 5d 2c 20 73 75 67 67 65 73 74 69 os78m], suggesti
3aa0: 6e 67 20 74 68 61 74 20 74 68 65 20 70 75 72 70 ng that the purp
3ab0: 6f 73 65 20 6f 66 20 74 68 65 73 65 20 70 73 65 ose of these pse
3ac0: 75 64 6f 2d 6f 70 73 20 62 65 63 61 6d 65 20 65 udo-ops became e
3ad0: 66 66 65 63 74 69 76 65 6c 79 20 72 65 64 75 6e ffectively redun
3ae0: 64 61 6e 74 20 61 66 74 65 72 20 74 68 65 20 62 dant after the b
3af0: 75 6c 6b 20 6f 66 20 74 68 65 20 6d 61 72 6b 65 ulk of the marke
3b00: 74 20 6d 6f 76 65 64 20 74 6f 20 64 69 73 6b 2d t moved to disk-
3b10: 62 61 73 65 64 20 50 44 50 2d 38 20 73 79 73 74 based PDP-8 syst
3b20: 65 6d 73 20 73 75 63 68 20 61 73 20 74 68 65 20 ems such as the
3b30: 5b 44 45 43 73 74 61 74 69 6f 6e 20 37 38 5d 5b [DECstation 78][
3b40: 64 73 37 38 5d 2c 20 61 20 6d 69 63 72 6f 63 6f ds78], a microco
3b50: 6e 74 72 6f 6c 6c 65 72 2d 62 61 73 65 64 20 50 ntroller-based P
3b60: 44 50 2d 38 20 6d 65 72 67 65 64 20 77 69 74 68 DP-8 merged with
3b70: 20 61 20 56 54 35 32 20 76 69 64 65 6f 20 74 65 a VT52 video te
3b80: 72 6d 69 6e 61 6c 2c 20 77 68 69 63 68 20 65 66 rminal, which ef
3b90: 66 65 63 74 69 76 65 6c 79 20 72 65 70 6c 61 63 fectively replac
3ba0: 65 64 20 74 68 65 20 74 65 6c 65 74 79 70 65 20 ed the teletype
3bb0: 2b 20 70 61 70 65 72 20 74 61 70 65 20 72 65 61 + paper tape rea
3bc0: 64 65 72 2f 70 75 6e 63 68 20 6d 6f 73 74 20 6f der/punch most o
3bd0: 66 74 65 6e 20 75 73 65 64 20 77 69 74 68 20 65 ften used with e
3be0: 61 72 6c 69 65 72 20 50 44 50 2d 38 20 73 79 73 arlier PDP-8 sys
3bf0: 74 65 6d 73 2e 20 28 54 68 75 73 20 74 68 65 20 tems. (Thus the
3c00: 72 65 6e 61 6d 69 6e 67 20 6f 66 20 22 4f 53 2f renaming of "OS/
3c10: 38 22 20 74 6f 20 22 4f 53 2f 37 38 2c 22 20 62 8" to "OS/78," b
3c20: 79 20 74 68 65 20 77 61 79 2e 29 0d 0a 0d 0a 4c y the way.)....L
3c30: 69 6b 65 20 4d 41 43 52 4f 2d 38 2c 20 50 41 4c ike MACRO-8, PAL
3c40: 2d 44 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 -D does not have
3c50: 20 74 68 65 20 60 46 49 58 4d 52 49 60 20 70 73 the `FIXMRI` ps
3c60: 65 75 64 6f 2d 6f 70 2e 0d 0a 0d 0a 5b 63 73 33 eudo-op.....[cs3
3c70: 33 5d 3a 20 68 74 74 70 3a 2f 2f 69 63 6c 63 65 3]: http://iclce
3c80: 73 2e 75 6b 2f 61 72 74 69 63 6c 65 73 2f 61 5f s.uk/articles/a_
3c90: 74 65 6c 65 74 79 70 65 5f 66 6f 6e 74 2e 68 74 teletype_font.ht
3ca0: 6d 6c 0d 0a 5b 64 6d 73 5d 3a 20 68 74 74 70 73 ml..[dms]: https
3cb0: 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e ://en.wikipedia.
3cc0: 6f 72 67 2f 77 69 6b 69 2f 34 4b 5f 44 69 73 6b org/wiki/4K_Disk
3cd0: 5f 4d 6f 6e 69 74 6f 72 5f 53 79 73 74 65 6d 0d _Monitor_System.
3ce0: 0a 5b 64 73 37 38 5d 3a 20 68 74 74 70 73 3a 2f .[ds78]: https:/
3cf0: 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 /en.wikipedia.or
3d00: 67 2f 77 69 6b 69 2f 44 45 43 73 74 61 74 69 6f g/wiki/DECstatio
3d10: 6e 23 44 45 43 73 74 61 74 69 6f 6e 5f 37 38 0d n#DECstation_78.
3d20: 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 6f .....## <a id="o
3d30: 73 38 22 3e 3c 2f 61 3e 54 68 65 20 4f 53 2f 38 s8"></a>The OS/8
3d40: 20 41 73 73 65 6d 62 6c 65 72 73 0d 0a 0d 0a 7c Assemblers....|
3d50: 20 2a 2a 49 6e 74 72 6f 64 75 63 65 64 2a 2a 20 **Introduced**
3d60: 7c 20 31 39 37 31 2c 20 63 6f 6c 6c 65 63 74 69 | 1971, collecti
3d70: 76 65 6c 79 0d 0a 7c 20 2a 2a 4d 61 6e 75 61 6c vely..| **Manual
3d80: 2a 2a 20 7c 20 5b 50 44 46 2c 20 33 38 20 4d 42 ** | [PDF, 38 MB
3d90: 5d 5b 6f 73 38 6d 5d 0d 0a 7c 20 2a 2a 44 65 6c ][os8m]..| **Del
3da0: 69 76 65 72 79 2a 2a 20 7c 20 70 61 72 74 20 6f ivery** | part o
3db0: 66 20 4f 53 2f 38 0d 0a 0d 0a 5b 4f 53 2f 38 5d f OS/8....[OS/8]
3dc0: 28 68 74 74 70 73 3a 2f 2f 65 6e 2e 77 69 6b 69 (https://en.wiki
3dd0: 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 4f pedia.org/wiki/O
3de0: 53 2f 38 29 20 77 61 73 20 5b 74 68 65 20 70 72 S/8) was [the pr
3df0: 69 6d 61 72 79 20 70 72 6f 67 72 61 6d 6d 69 6e imary programmin
3e00: 67 20 73 79 73 74 65 6d 20 66 72 6f 6d 20 44 45 g system from DE
3e10: 43 5d 5b 66 61 71 31 30 5d 20 66 6f 72 20 74 68 C][faq10] for th
3e20: 65 20 50 44 50 2d 38 20 69 6e 20 69 74 73 20 6c e PDP-8 in its l
3e30: 61 74 65 72 20 79 65 61 72 73 2e 20 49 74 20 69 ater years. It i
3e40: 6e 63 6c 75 64 65 64 20 73 65 76 65 72 61 6c 20 ncluded several
3e50: 64 69 66 66 65 72 65 6e 74 20 61 73 73 65 6d 62 different assemb
3e60: 6c 65 72 73 2c 20 61 6c 6c 20 64 6f 63 75 6d 65 lers, all docume
3e70: 6e 74 65 64 20 69 6e 20 74 68 65 20 4f 53 2f 38 nted in the OS/8
3e80: 20 68 61 6e 64 62 6f 6f 6b 2e 20 54 68 65 20 31 handbook. The 1
3e90: 39 37 34 20 65 64 69 74 69 6f 6e 20 69 73 20 6c 974 edition is l
3ea0: 69 6e 6b 65 64 20 61 62 6f 76 65 2e 20 59 6f 75 inked above. You
3eb0: 20 6d 61 79 20 61 6c 73 6f 20 66 69 6e 64 20 74 may also find t
3ec0: 68 65 20 6c 61 74 65 72 20 5b 4f 53 2f 37 38 20 he later [OS/78
3ed0: 48 61 6e 64 62 6f 6f 6b 5d 5b 6f 73 37 38 6d 5d Handbook][os78m]
3ee0: 20 66 72 6f 6d 20 31 39 37 39 20 69 6e 74 65 72 from 1979 inter
3ef0: 65 73 74 69 6e 67 20 66 6f 72 20 63 6f 6d 70 61 esting for compa
3f00: 72 69 73 6f 6e 20 70 75 72 70 6f 73 65 73 2e 0d rison purposes..
3f10: 0a 0d 0a 54 68 65 20 69 6e 74 72 6f 64 75 63 74 ...The introduct
3f20: 69 6f 6e 20 64 61 74 65 20 69 73 20 74 68 61 74 ion date is that
3f30: 20 6f 66 20 4f 53 2f 38 2c 20 62 75 74 20 4f 53 of OS/8, but OS
3f40: 2f 38 20 68 61 73 20 61 20 5b 63 6f 6d 70 6c 69 /8 has a [compli
3f50: 63 61 74 65 64 20 64 65 76 65 6c 6f 70 6d 65 6e cated developmen
3f60: 74 20 68 69 73 74 6f 72 79 5d 5b 66 61 71 31 30 t history][faq10
3f70: 5d 20 74 68 61 74 20 73 74 72 65 74 63 68 65 73 ] that stretches
3f80: 20 62 61 63 6b 20 74 6f 20 31 39 36 36 20 6f 72 back to 1966 or
3f90: 20 73 6f 2e 20 53 6f 6d 65 20 6f 66 20 74 68 65 so. Some of the
3fa0: 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 73 73 65 6d following assem
3fb0: 62 6c 65 72 73 20 70 72 65 64 61 74 65 20 4f 53 blers predate OS
3fc0: 2f 38 3b 20 77 68 65 72 65 20 74 68 65 20 64 61 /8; where the da
3fd0: 74 65 73 20 66 6f 72 20 74 68 65 6d 20 61 72 65 tes for them are
3fe0: 20 6b 6e 6f 77 6e 2c 20 74 68 65 79 20 61 72 65 known, they are
3ff0: 20 63 61 6c 6c 65 64 20 6f 75 74 20 62 65 6c 6f called out belo
4000: 77 2e 20 46 6f 72 20 74 68 6f 73 65 20 77 69 74 w. For those wit
4010: 68 20 6e 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 h no additional
4020: 64 61 74 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e date information
4030: 2c 20 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65 , it is possible
4040: 20 74 68 61 74 20 69 74 20 77 61 73 20 66 69 72 that it was fir
4050: 73 74 20 69 6e 74 72 6f 64 75 63 65 64 20 61 66 st introduced af
4060: 74 65 72 20 4f 53 2f 38 20 62 75 74 20 62 65 66 ter OS/8 but bef
4070: 6f 72 65 20 31 39 37 34 2c 20 74 68 65 20 64 61 ore 1974, the da
4080: 74 65 20 6f 66 20 74 68 65 20 6d 61 6e 75 61 6c te of the manual
4090: 20 6c 69 6e 6b 65 64 20 61 62 6f 76 65 2c 20 77 linked above, w
40a0: 68 69 63 68 20 74 61 6c 6b 73 20 61 62 6f 75 74 hich talks about
40b0: 20 61 6c 6c 20 6f 66 20 74 68 65 73 65 20 61 73 all of these as
40c0: 73 65 6d 62 6c 65 72 73 2e 0d 0a 0d 0a 5b 66 61 semblers.....[fa
40d0: 71 31 30 5d 3a 20 68 74 74 70 3a 2f 2f 77 77 77 q10]: http://www
40e0: 2e 66 61 71 73 2e 6f 72 67 2f 66 61 71 73 2f 64 .faqs.org/faqs/d
40f0: 65 63 2d 66 61 71 2f 70 64 70 38 2f 73 65 63 74 ec-faq/pdp8/sect
4100: 69 6f 6e 2d 31 30 2e 68 74 6d 6c 0d 0a 5b 6f 73 ion-10.html..[os
4110: 38 6d 5d 3a 20 68 74 74 70 73 3a 2f 2f 61 72 63 8m]: https://arc
4120: 68 69 76 65 2e 6f 72 67 2f 64 65 74 61 69 6c 73 hive.org/details
4130: 2f 62 69 74 73 61 76 65 72 73 5f 64 65 63 70 64 /bitsavers_decpd
4140: 70 38 6f 73 38 5f 33 39 34 31 34 37 39 32 0d 0a p8os8_39414792..
4150: 5b 6f 73 37 38 6d 5d 3a 20 68 74 74 70 73 3a 2f [os78m]: https:/
4160: 2f 77 77 77 2e 67 72 63 2e 63 6f 6d 2f 70 64 70 /www.grc.com/pdp
4170: 2d 38 2f 64 6f 63 73 2f 4f 53 38 5f 48 61 6e 64 -8/docs/OS8_Hand
4180: 62 6f 6f 6b 2e 70 64 66 0d 0a 0d 0a 0d 0a 23 23 book.pdf......##
4190: 23 20 3c 61 20 69 64 3d 22 70 61 6c 38 22 20 6e # <a id="pal8" n
41a0: 61 6d 65 3d 22 70 61 6c 2d 38 22 3e 3c 2f 61 3e ame="pal-8"></a>
41b0: 50 41 4c 38 0d 0a 0d 0a 54 68 65 20 65 61 72 6c PAL8....The earl
41c0: 69 65 73 74 20 61 74 74 65 73 74 61 74 69 6f 6e iest attestation
41d0: 20 74 6f 20 74 68 65 20 50 41 4c 38 20 61 73 73 to the PAL8 ass
41e0: 65 6d 62 6c 65 72 20 49 27 76 65 20 62 65 65 6e embler I've been
41f0: 20 61 62 6c 65 20 74 6f 20 66 69 6e 64 20 69 73 able to find is
4200: 20 69 6e 20 74 68 65 20 4d 61 79 20 31 39 37 30 in the May 1970
4210: 20 70 72 69 6e 74 69 6e 67 20 6f 66 20 5b 50 72 printing of [Pr
4220: 6f 67 72 61 6d 6d 69 6e 67 20 4c 61 6e 67 75 61 ogramming Langua
4230: 67 65 73 5d 5b 70 6c 5d 2c 20 74 68 65 20 73 65 ges][pl], the se
4240: 63 6f 6e 64 20 69 6e 20 61 20 74 77 6f 2d 76 6f cond in a two-vo
4250: 6c 75 6d 65 20 73 65 74 20 6f 6e 20 70 72 6f 67 lume set on prog
4260: 72 61 6d 6d 69 6e 67 20 50 44 50 2d 38 20 66 61 ramming PDP-8 fa
4270: 6d 69 6c 79 20 63 6f 6d 70 75 74 65 72 73 2e 20 mily computers.
4280: 28 54 68 65 20 66 69 72 73 74 20 76 6f 6c 75 6d (The first volum
4290: 65 20 62 65 69 6e 67 20 5b 49 6e 74 72 6f 64 75 e being [Introdu
42a0: 63 74 69 6f 6e 20 74 6f 20 50 72 6f 67 72 61 6d ction to Program
42b0: 6d 69 6e 67 5d 5b 69 70 5d 2e 29 20 4f 6e 20 70 ming][ip].) On p
42c0: 61 67 65 20 31 34 2d 37 20 69 6e 20 74 68 65 20 age 14-7 in the
42d0: 73 65 63 74 69 6f 6e 20 6f 6e 20 38 4b 20 50 41 section on 8K PA
42e0: 4c 2d 44 2c 20 69 74 20 67 69 76 65 73 20 61 20 L-D, it gives a
42f0: 44 69 73 6b 20 4d 6f 6e 69 74 6f 72 20 63 6f 6d Disk Monitor com
4300: 6d 61 6e 64 20 66 6f 72 20 73 61 76 69 6e 67 20 mand for saving
4310: 74 68 65 20 69 6e 2d 63 6f 72 65 20 63 6f 70 79 the in-core copy
4320: 20 6f 66 20 38 4b 20 50 41 4c 2d 44 20 61 73 20 of 8K PAL-D as
4330: 22 50 41 4c 38 22 2e 20 49 74 20 69 73 20 74 68 "PAL8". It is th
4340: 65 72 65 66 6f 72 65 20 75 6e 73 75 72 70 72 69 erefore unsurpri
4350: 73 69 6e 67 20 74 68 61 74 20 74 68 65 20 4f 53 sing that the OS
4360: 2f 38 20 76 65 72 73 69 6f 6e 20 6f 66 20 50 41 /8 version of PA
4370: 4c 38 20 69 73 20 6d 6f 72 70 68 6f 6c 6f 67 69 L8 is morphologi
4380: 63 61 6c 6c 79 20 6d 6f 72 65 20 73 69 6d 69 6c cally more simil
4390: 61 72 20 74 6f 20 5b 50 41 4c 2d 44 5d 28 23 70 ar to [PAL-D](#p
43a0: 61 6c 2d 64 29 20 74 68 61 6e 20 74 6f 20 5b 50 al-d) than to [P
43b0: 41 4c 2d 49 49 49 5d 28 23 70 61 6c 2d 69 69 69 AL-III](#pal-iii
43c0: 29 2e 0d 0a 0d 0a 54 68 65 20 65 61 72 6c 69 65 ).....The earlie
43d0: 73 74 20 72 65 66 65 72 65 6e 63 65 20 74 6f 20 st reference to
43e0: 50 41 4c 38 20 61 73 20 61 20 6e 61 6d 65 64 20 PAL8 as a named
43f0: 70 72 6f 64 75 63 74 20 6f 66 20 44 45 43 20 69 product of DEC i
4400: 73 20 69 6e 20 74 68 65 20 5b 50 53 2f 38 20 38 s in the [PS/8 8
4410: 4b 20 50 72 6f 67 72 61 6d 6d 69 6e 67 20 53 79 K Programming Sy
4420: 73 74 65 6d 20 55 73 65 72 27 73 20 47 75 69 64 stem User's Guid
4430: 65 5d 5b 70 73 38 75 67 5d 20 66 72 6f 6d 20 4f e][ps8ug] from O
4440: 63 74 6f 62 65 72 20 31 39 37 30 2c 20 74 68 61 ctober 1970, tha
4450: 74 20 70 72 6f 64 75 63 74 20 62 65 69 6e 67 20 t product being
4460: 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20 70 72 the immediate pr
4470: 65 64 65 63 65 73 73 6f 72 20 6f 66 20 4f 53 2f edecessor of OS/
4480: 38 2e 0d 0a 0d 0a 50 41 4c 38 20 75 6e 64 65 72 8.....PAL8 under
4490: 73 74 61 6e 64 73 20 74 68 65 20 73 61 6d 65 20 stands the same
44a0: 62 61 73 69 63 20 6c 61 6e 67 75 61 67 65 20 61 basic language a
44b0: 73 20 50 41 4c 2d 44 20 62 75 74 20 67 65 6e 65 s PAL-D but gene
44c0: 72 61 6c 6c 79 20 68 61 73 20 6d 6f 72 65 20 66 rally has more f
44d0: 65 61 74 75 72 65 73 2c 20 6d 6f 73 74 20 65 73 eatures, most es
44e0: 70 65 63 69 61 6c 6c 79 20 72 65 6c 61 74 65 64 pecially related
44f0: 20 74 6f 20 72 75 6e 6e 69 6e 67 20 75 6e 64 65 to running unde
4500: 72 20 4f 53 2f 38 2e 0d 0a 0d 0a 49 20 63 6f 6e r OS/8.....I con
4510: 73 69 64 65 72 20 50 41 4c 38 20 74 68 65 20 64 sider PAL8 the d
4520: 65 66 61 75 6c 74 20 61 73 73 65 6d 62 6c 65 72 efault assembler
4530: 20 66 6f 72 20 4f 53 2f 38 20 75 73 65 72 73 2e for OS/8 users.
4540: 20 49 66 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 If none of the
4550: 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 62 65 6c 6f information belo
4560: 77 20 67 75 69 64 65 73 20 79 6f 75 20 74 6f 20 w guides you to
4570: 6f 6e 65 20 6f 66 20 74 68 65 20 6f 74 68 65 72 one of the other
4580: 20 61 73 73 65 6d 62 6c 65 72 73 2c 20 79 6f 75 assemblers, you
4590: 20 73 68 6f 75 6c 64 20 70 72 6f 62 61 62 6c 79 should probably
45a0: 20 73 74 61 72 74 20 77 69 74 68 20 50 41 4c 38 start with PAL8
45b0: 2e 20 49 66 20 79 6f 75 20 68 61 76 65 20 61 20 . If you have a
45c0: 70 69 65 63 65 20 6f 66 20 61 73 73 65 6d 62 6c piece of assembl
45d0: 79 20 63 6f 64 65 20 74 68 61 74 20 69 73 20 6d y code that is m
45e0: 65 61 6e 74 20 74 6f 20 62 65 20 61 73 73 65 6d eant to be assem
45f0: 62 6c 65 64 20 75 6e 64 65 72 20 4f 53 2f 38 2c bled under OS/8,
4600: 20 61 6e 64 20 79 6f 75 20 68 61 76 65 20 6e 6f and you have no
4610: 20 65 76 69 64 65 6e 63 65 20 74 68 61 74 20 69 evidence that i
4620: 73 20 66 6f 72 20 61 6e 79 20 6f 74 68 65 72 20 s for any other
4630: 61 73 73 65 6d 62 6c 65 72 2c 20 69 74 27 73 20 assembler, it's
4640: 70 72 6f 62 61 62 6c 79 20 6d 65 61 6e 74 20 74 probably meant t
4650: 6f 20 62 65 20 61 73 73 65 6d 62 6c 65 64 20 62 o be assembled b
4660: 79 20 50 41 4c 38 2e 0d 0a 0d 0a 50 41 4c 38 20 y PAL8.....PAL8
4670: 68 61 73 20 6d 61 6e 79 20 66 65 61 74 75 72 65 has many feature
4680: 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 20 69 6e s not present in
4690: 20 38 4b 20 50 41 4c 2d 44 3a 0d 0a 0d 0a 2a 20 8K PAL-D:....*
46a0: 20 20 61 73 73 65 6d 62 6c 79 20 6f 70 74 69 6f assembly optio
46b0: 6e 73 20 73 65 74 20 76 69 61 20 4f 53 2f 38 20 ns set via OS/8
46c0: 43 43 4c 20 66 6c 61 67 73 20 72 61 74 68 65 72 CCL flags rather
46d0: 20 74 68 61 6e 20 76 69 61 20 66 72 6f 6e 74 2d than via front-
46e0: 70 61 6e 65 6c 20 73 77 69 74 63 68 65 73 0d 0a panel switches..
46f0: 2a 20 20 20 6f 75 74 70 75 74 20 6f 70 74 69 6f * output optio
4700: 6e 20 66 6f 72 20 70 72 6f 64 75 63 69 6e 67 20 n for producing
4710: 69 6e 70 75 74 20 74 6f 20 5b 43 52 45 46 5d 5b input to [CREF][
4720: 6f 73 38 6d 5d 0d 0a 2a 20 20 20 6d 6f 72 65 20 os8m]..* more
4730: 6f 70 65 72 61 74 6f 72 73 20 69 6e 20 65 78 70 operators in exp
4740: 72 65 73 73 69 6f 6e 73 3a 0d 0a 20 20 20 20 2a ressions:.. *
4750: 20 20 20 20 60 5e 60 20 66 6f 72 20 31 32 2d 62 `^` for 12-b
4760: 69 74 20 75 6e 73 69 67 6e 65 64 20 6d 75 6c 74 it unsigned mult
4770: 69 70 6c 69 63 61 74 69 6f 6e 20 28 60 2a 60 20 iplication (`*`
4780: 77 61 73 20 61 6c 72 65 61 64 79 20 74 61 6b 65 was already take
4790: 6e 20 66 6f 72 20 73 65 74 74 69 6e 67 20 74 68 n for setting th
47a0: 65 20 6c 6f 63 61 74 69 6f 6e 20 63 6f 75 6e 74 e location count
47b0: 65 72 29 0d 0a 20 20 20 20 2a 20 20 20 20 60 25 er).. * `%
47c0: 60 20 66 6f 72 20 31 32 2d 62 69 74 20 75 6e 73 ` for 12-bit uns
47d0: 69 67 6e 65 64 20 64 69 76 69 73 69 6f 6e 20 28 igned division (
47e0: 60 2f 60 20 77 61 73 20 61 6c 72 65 61 64 79 20 `/` was already
47f0: 74 61 6b 65 6e 20 61 73 20 74 68 65 20 63 6f 6d taken as the com
4800: 6d 65 6e 74 20 73 74 61 72 74 20 63 68 61 72 61 ment start chara
4810: 63 74 65 72 29 0d 0a 2a 20 20 20 74 68 65 20 60 cter)..* the `
4820: 46 49 58 4d 52 49 60 20 70 73 65 75 64 6f 2d 6f FIXMRI` pseudo-o
4830: 70 20 69 73 20 62 61 63 6b 0d 0a 2a 20 20 20 60 p is back..* `
4840: 45 4a 45 43 54 60 20 70 73 65 75 64 6f 2d 6f 70 EJECT` pseudo-op
4850: 20 65 78 74 65 6e 64 65 64 20 74 6f 20 61 6c 6c extended to all
4860: 6f 77 20 74 68 65 20 70 61 67 65 20 68 65 61 64 ow the page head
4870: 65 72 20 74 6f 20 62 65 20 63 68 61 6e 67 65 64 er to be changed
4880: 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 61 6e for the next an
4890: 64 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 67 65 d following page
48a0: 73 0d 0a 2a 20 20 20 6e 65 77 20 70 73 65 75 64 s..* new pseud
48b0: 6f 2d 6f 70 65 72 61 74 69 6f 6e 73 3a 0d 0a 20 o-operations:..
48c0: 20 20 20 2a 20 20 20 60 44 45 56 49 43 45 60 20 * `DEVICE`
48d0: 61 6e 64 20 60 46 49 4c 45 4e 41 4d 45 60 20 61 and `FILENAME` a
48e0: 6c 74 65 72 6e 61 74 69 76 65 73 20 74 6f 20 60 lternatives to `
48f0: 54 45 58 54 60 20 66 6f 72 20 70 61 73 73 69 6e TEXT` for passin
4900: 67 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 4f g arguments to O
4910: 53 2f 38 20 73 65 72 76 69 63 65 20 72 6f 75 74 S/8 service rout
4920: 69 6e 65 73 0d 0a 20 20 20 20 2a 20 20 20 60 44 ines.. * `D
4930: 54 4f 52 47 60 3a 20 73 65 74 20 44 45 43 74 61 TORG`: set DECta
4940: 70 65 20 62 6c 6f 63 6b 20 6e 75 6d 62 65 72 20 pe block number
4950: 69 6e 20 6f 75 74 70 75 74 20 66 6f 72 20 74 68 in output for th
4960: 65 20 5b 54 79 70 65 73 65 74 2d 38 5d 5b 74 73 e [Typeset-8][ts
4970: 38 6d 5d 20 63 6f 6d 70 75 74 65 72 69 7a 65 64 8m] computerized
4980: 20 74 79 70 65 73 65 74 74 69 6e 67 20 73 79 73 typesetting sys
4990: 74 65 6d 20 28 5b 70 68 6f 74 6f 5d 5b 74 73 38 tem ([photo][ts8
49a0: 70 5d 29 0d 0a 20 20 20 20 2a 20 20 20 60 49 46 p]).. * `IF
49b0: 4e 44 45 46 60 20 61 6e 64 20 60 49 46 4e 5a 52 NDEF` and `IFNZR
49c0: 4f 60 20 6e 65 67 61 74 65 64 20 66 6f 72 6d 73 O` negated forms
49d0: 20 6f 66 20 74 68 65 20 63 6f 6e 64 69 74 69 6f of the conditio
49e0: 6e 61 6c 20 61 73 73 65 6d 62 6c 79 20 74 65 73 nal assembly tes
49f0: 74 73 0d 0a 20 20 20 20 2a 20 20 20 60 52 45 4c ts.. * `REL
4a00: 4f 43 60 3a 20 61 73 73 65 6d 62 6c 65 20 63 6f OC`: assemble co
4a10: 64 65 20 66 6f 72 20 72 65 6c 6f 63 61 74 69 6f de for relocatio
4a20: 6e 20 61 66 74 65 72 20 6c 6f 61 64 69 6e 67 0d n after loading.
4a30: 0a 0d 0a 54 68 65 20 72 65 73 74 6f 72 61 74 69 ...The restorati
4a40: 6f 6e 20 6f 66 20 74 68 65 20 60 46 49 58 4d 52 on of the `FIXMR
4a50: 49 60 20 70 73 65 75 64 6f 2d 6f 70 20 69 73 20 I` pseudo-op is
4a60: 63 75 72 69 6f 75 73 2e 20 49 74 20 69 73 20 6e curious. It is n
4a70: 6f 74 20 63 6c 65 61 72 20 66 72 6f 6d 20 74 68 ot clear from th
4a80: 65 20 6d 61 6e 75 61 6c 73 20 77 68 65 74 68 65 e manuals whethe
4a90: 72 20 69 74 73 20 75 73 65 20 69 73 20 61 67 61 r its use is aga
4aa0: 69 6e 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 in required for
4ab0: 72 65 64 65 66 69 6e 69 6e 67 20 6d 65 6d 6f 72 redefining memor
4ac0: 79 20 72 65 66 65 72 65 6e 63 65 20 69 6e 73 74 y reference inst
4ad0: 72 75 63 74 69 6f 6e 73 20 28 4d 52 49 29 20 61 ructions (MRI) a
4ae0: 66 74 65 72 20 61 6e 20 60 45 58 50 55 4e 47 45 fter an `EXPUNGE
4af0: 60 20 63 61 6c 6c 20 6f 72 20 69 66 20 69 74 20 ` call or if it
4b00: 69 73 20 6d 65 72 65 6c 79 20 66 6f 72 20 63 6f is merely for co
4b10: 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 mpatibility with
4b20: 20 63 65 72 74 61 69 6e 20 65 78 69 73 74 69 6e certain existin
4b30: 67 20 50 41 4c 2d 49 49 49 20 70 72 6f 67 72 61 g PAL-III progra
4b40: 6d 73 2e 20 28 2a 2a 54 4f 44 4f 2a 2a 3a 20 54 ms. (**TODO**: T
4b50: 72 79 20 69 74 20 61 6e 64 20 73 65 65 2e 29 0d ry it and see.).
4b60: 0a 0d 0a 54 68 65 20 65 78 69 73 74 65 6e 63 65 ...The existence
4b70: 20 6f 66 20 74 68 65 20 60 52 45 4c 4f 43 60 20 of the `RELOC`
4b80: 70 73 65 75 64 6f 2d 6f 70 20 73 68 6f 75 6c 64 pseudo-op should
4b90: 20 6e 6f 74 20 62 65 20 74 61 6b 65 6e 20 61 73 not be taken as
4ba0: 20 61 20 73 69 67 6e 20 74 68 61 74 20 50 41 4c a sign that PAL
4bb0: 38 20 69 73 20 61 20 72 65 6c 6f 63 61 74 61 62 8 is a relocatab
4bc0: 6c 65 20 61 73 73 65 6d 62 6c 65 72 2e 20 49 74 le assembler. It
4bd0: 20 73 69 6d 70 6c 79 20 61 6c 6c 6f 77 73 20 63 simply allows c
4be0: 6f 64 65 20 74 6f 20 62 65 20 61 73 73 65 6d 62 ode to be assemb
4bf0: 6c 65 64 20 73 74 61 72 74 69 6e 67 20 61 74 20 led starting at
4c00: 6f 6e 65 20 66 69 78 65 64 20 61 64 64 72 65 73 one fixed addres
4c10: 73 20 77 68 69 63 68 20 69 73 20 69 6e 74 65 6e s which is inten
4c20: 64 65 64 20 74 6f 20 62 65 20 72 75 6e 20 61 74 ded to be run at
4c30: 20 61 20 64 69 66 66 65 72 65 6e 74 20 66 69 78 a different fix
4c40: 65 64 20 61 64 64 72 65 73 73 2e 20 41 20 70 72 ed address. A pr
4c50: 6f 70 65 72 20 72 65 6c 6f 63 61 74 61 62 6c 65 oper relocatable
4c60: 20 61 73 73 65 6d 62 6c 65 72 20 67 65 6e 65 72 assembler gener
4c70: 61 6c 6c 79 20 74 72 69 65 73 20 74 6f 20 68 69 ally tries to hi
4c80: 64 65 20 74 68 65 20 66 69 78 65 64 20 61 64 64 de the fixed add
4c90: 72 65 73 73 65 73 20 69 74 20 75 73 65 73 20 77 resses it uses w
4ca0: 68 65 6e 20 61 73 73 65 6d 62 6c 69 6e 67 20 79 hen assembling y
4cb0: 6f 75 72 20 70 72 6f 67 72 61 6d 3b 20 63 6f 6d our program; com
4cc0: 70 61 72 65 20 5b 53 41 42 52 5d 28 23 73 61 62 pare [SABR](#sab
4cd0: 72 29 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c r), for example,
4ce0: 20 77 68 69 63 68 20 70 72 6f 64 75 63 65 73 20 which produces
4cf0: 6f 75 74 70 75 74 20 74 68 61 74 20 63 61 6e 6e output that cann
4d00: 6f 74 20 62 65 20 72 75 6e 20 64 69 72 65 63 74 ot be run direct
4d10: 6c 79 2c 20 62 75 74 20 77 68 69 63 68 20 6d 75 ly, but which mu
4d20: 73 74 20 62 65 20 70 72 6f 63 65 73 73 65 64 20 st be processed
4d30: 62 79 20 61 20 72 65 6c 6f 63 61 74 69 6e 67 20 by a relocating
4d40: 6c 6f 61 64 65 72 20 28 60 4c 4f 41 44 45 52 2e loader (`LOADER.
4d50: 53 56 60 29 20 74 6f 20 66 69 78 20 75 70 20 74 SV`) to fix up t
4d60: 68 65 20 61 64 64 72 65 73 73 65 73 20 74 6f 20 he addresses to
4d70: 74 68 65 69 72 20 66 69 6e 61 6c 20 65 78 65 63 their final exec
4d80: 75 74 69 6f 6e 20 76 61 6c 75 65 73 2e 0d 0a 0d ution values....
4d90: 0a 50 41 4c 2d 49 49 49 20 68 61 73 20 6f 6e 65 .PAL-III has one
4da0: 20 66 65 61 74 75 72 65 20 6e 6f 74 20 69 6d 70 feature not imp
4db0: 6c 65 6d 65 6e 74 65 64 20 69 6e 20 50 41 4c 38 lemented in PAL8
4dc0: 3a 20 20 74 68 65 20 61 62 69 6c 69 74 79 20 74 : the ability t
4dd0: 6f 20 67 65 74 20 61 20 62 72 69 65 66 20 6c 69 o get a brief li
4de0: 73 74 69 6e 67 20 6f 66 20 74 68 65 20 75 6e 64 sting of the und
4df0: 65 66 69 6e 65 64 20 73 79 6d 62 6f 6c 73 20 69 efined symbols i
4e00: 6e 20 61 20 70 72 6f 67 72 61 6d 2e 20 54 68 65 n a program. The
4e10: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 information is
4e20: 69 6e 73 74 65 61 64 20 70 72 65 73 65 6e 74 65 instead presente
4e30: 64 20 69 6e 6c 69 6e 65 20 69 6e 20 74 68 65 20 d inline in the
4e40: 6c 69 73 74 69 6e 67 20 6f 75 74 70 75 74 2c 20 listing output,
4e50: 6e 6f 74 20 67 72 6f 75 70 65 64 20 74 6f 67 65 not grouped toge
4e60: 74 68 65 72 20 69 6e 74 6f 20 61 20 73 69 6e 67 ther into a sing
4e70: 6c 65 20 70 6c 61 63 65 2c 20 77 68 69 63 68 20 le place, which
4e80: 63 61 6e 20 6d 61 6b 65 20 72 65 66 69 6e 65 6d can make refinem
4e90: 65 6e 74 20 6f 66 20 61 6e 20 69 6e 2d 64 65 76 ent of an in-dev
4ea0: 65 6c 6f 70 6d 65 6e 74 20 70 72 6f 67 72 61 6d elopment program
4eb0: 20 74 65 64 69 6f 75 73 20 61 73 20 79 6f 75 20 tedious as you
4ec0: 6e 65 65 64 20 74 6f 20 63 6f 6d 62 20 69 6e 66 need to comb inf
4ed0: 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 75 ormation about u
4ee0: 6e 64 65 66 69 6e 65 64 20 73 79 6d 62 6f 6c 73 ndefined symbols
4ef0: 20 6f 75 74 20 66 72 6f 6d 20 61 6d 6f 6e 67 20 out from among
4f00: 61 6c 6c 20 74 68 65 20 6f 74 68 65 72 20 6f 75 all the other ou
4f10: 74 70 75 74 2e 0d 0a 0d 0a 5b 69 70 5d 3a 20 68 tput.....[ip]: h
4f20: 74 74 70 3a 2f 2f 62 69 74 73 61 76 65 72 73 2e ttp://bitsavers.
4f30: 6f 72 67 2f 70 64 66 2f 64 65 63 2f 70 64 70 38 org/pdf/dec/pdp8
4f40: 2f 68 61 6e 64 62 6f 6f 6b 73 2f 44 45 43 2d 30 /handbooks/DEC-0
4f50: 38 2d 58 49 4e 50 41 2d 41 2d 44 5f 69 6e 74 72 8-XINPA-A-D_intr
4f60: 50 67 6d 5f 37 35 2e 70 64 66 0d 0a 5b 70 6c 5d Pgm_75.pdf..[pl]
4f70: 3a 20 68 74 74 70 3a 2f 2f 62 69 74 73 61 76 65 : http://bitsave
4f80: 72 73 2e 6f 72 67 2f 70 64 66 2f 64 65 63 2f 70 rs.org/pdf/dec/p
4f90: 64 70 38 2f 68 61 6e 64 62 6f 6f 6b 73 2f 70 72 dp8/handbooks/pr
4fa0: 6f 67 72 61 6d 6d 69 6e 67 4c 61 6e 67 75 61 67 ogrammingLanguag
4fb0: 65 73 5f 4d 61 79 37 30 2e 70 64 66 0d 0a 5b 70 es_May70.pdf..[p
4fc0: 73 38 75 67 5d 3a 20 68 74 74 70 73 3a 2f 2f 61 s8ug]: https://a
4fd0: 72 63 68 69 76 65 2e 6f 72 67 2f 64 65 74 61 69 rchive.org/detai
4fe0: 6c 73 2f 62 69 74 73 61 76 65 72 73 5f 64 65 63 ls/bitsavers_dec
4ff0: 70 64 70 38 73 6f 66 6f 67 72 61 6d 6d 69 6e 67 pdp8sofogramming
5000: 53 79 73 74 65 6d 55 73 65 72 73 47 75 69 64 65 SystemUsersGuide
5010: 5f 32 34 31 37 33 34 37 0d 0a 5b 74 73 38 6d 5d _2417347..[ts8m]
5020: 3a 20 68 74 74 70 3a 2f 2f 62 69 74 73 61 76 65 : http://bitsave
5030: 72 73 2e 6f 72 67 2f 70 64 66 2f 64 65 63 2f 70 rs.org/pdf/dec/p
5040: 64 70 38 2f 74 79 70 65 73 65 74 38 2f 0d 0a 5b dp8/typeset8/..[
5050: 74 73 38 70 5d 3a 20 68 74 74 70 3a 2f 2f 67 6f ts8p]: http://go
5060: 72 64 6f 6e 62 65 6c 6c 2e 61 7a 75 72 65 77 65 rdonbell.azurewe
5070: 62 73 69 74 65 73 2e 6e 65 74 2f 64 69 67 69 74 bsites.net/digit
5080: 61 6c 2f 74 69 6d 65 6c 69 6e 65 2f 31 39 36 38 al/timeline/1968
5090: 2d 33 2e 68 74 6d 0d 0a 0d 0a 0d 0a 23 23 23 20 -3.htm......###
50a0: 3c 61 20 69 64 3d 22 72 61 6c 66 22 3e 3c 2f 61 <a id="ralf"></a
50b0: 3e 52 41 4c 46 0d 0a 0d 0a 52 41 4c 46 20 75 73 >RALF....RALF us
50c0: 65 73 20 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 es approximately
50d0: 20 74 68 65 20 73 61 6d 65 20 73 74 61 74 65 6d the same statem
50e0: 65 6e 74 20 73 79 6e 74 61 78 20 61 73 20 74 68 ent syntax as th
50f0: 65 20 50 41 4c 20 66 61 6d 69 6c 79 2c 20 62 75 e PAL family, bu
5100: 74 20 69 74 20 69 73 20 61 20 76 65 72 79 20 64 t it is a very d
5110: 69 66 66 65 72 65 6e 74 20 61 73 73 65 6d 62 6c ifferent assembl
5120: 65 72 20 62 79 20 6e 61 74 75 72 65 2e 20 57 65 er by nature. We
5130: 20 63 61 6e 20 64 69 76 69 64 65 20 69 74 73 20 can divide its
5140: 64 69 66 66 65 72 65 6e 63 65 73 20 69 6e 74 6f differences into
5150: 20 73 65 76 65 72 61 6c 20 67 72 6f 75 70 73 2e several groups.
5160: 0d 0a 0d 0a 0d 0a 23 23 23 23 20 46 6c 6f 61 74 ......#### Float
5170: 69 6e 67 20 50 6f 69 6e 74 20 50 72 6f 63 65 73 ing Point Proces
5180: 73 6f 72 20 53 75 70 70 6f 72 74 0d 0a 0d 0a 52 sor Support....R
5190: 41 4c 46 20 69 73 20 6e 6f 74 20 6f 6e 6c 79 20 ALF is not only
51a0: 61 6e 20 61 73 73 65 6d 62 6c 65 72 20 66 6f 72 an assembler for
51b0: 20 74 68 65 20 50 44 50 2d 38 20 70 72 6f 63 65 the PDP-8 proce
51c0: 73 73 6f 72 2c 20 69 74 20 69 73 20 61 6c 73 6f ssor, it is also
51d0: 20 61 6e 20 61 73 73 65 6d 62 6c 65 72 20 66 6f an assembler fo
51e0: 72 20 74 68 65 20 5b 46 50 50 31 32 5d 5b 66 70 r the [FPP12][fp
51f0: 70 31 32 5d 20 46 6c 6f 61 74 69 6e 67 20 50 6f p12] Floating Po
5200: 69 6e 74 20 50 72 6f 63 65 73 73 6f 72 20 28 46 int Processor (F
5210: 50 50 29 20 70 65 72 69 70 68 65 72 61 6c 2e 20 PP) peripheral.
5220: 0d 0a 0d 0a 52 41 4c 46 20 69 73 20 74 68 65 20 ....RALF is the
5230: 62 61 63 6b 2d 65 6e 64 20 61 73 73 65 6d 62 6c back-end assembl
5240: 65 72 20 66 6f 72 20 74 68 65 20 4f 53 2f 38 20 er for the OS/8
5250: 46 4f 52 54 52 41 4e 20 49 56 20 63 6f 6d 70 69 FORTRAN IV compi
5260: 6c 65 72 2c 20 77 68 69 63 68 20 64 65 6c 65 67 ler, which deleg
5270: 61 74 65 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 ates all of the
5280: 46 50 50 20 68 61 6e 64 6c 69 6e 67 20 74 6f 20 FPP handling to
5290: 52 41 4c 46 2c 20 62 75 74 20 61 74 20 70 72 6f RALF, but at pro
52a0: 67 72 61 6d 20 6c 6f 61 64 20 74 69 6d 65 2c 20 gram load time,
52b0: 60 46 52 54 53 60 20 63 68 65 63 6b 73 20 66 6f `FRTS` checks fo
52c0: 72 20 74 68 65 20 65 78 69 73 74 65 6e 63 65 20 r the existence
52d0: 6f 66 20 61 6e 20 46 50 50 20 61 6e 64 20 73 77 of an FPP and sw
52e0: 69 74 63 68 65 73 20 74 6f 20 61 20 73 6f 66 74 itches to a soft
52f0: 77 61 72 65 20 46 50 50 20 73 69 6d 75 6c 61 74 ware FPP simulat
5300: 6f 72 20 69 66 20 74 68 65 72 65 20 69 73 20 6e or if there is n
5310: 6f 20 46 50 50 20 70 72 65 73 65 6e 74 2e 20 28 o FPP present. (
5320: 60 46 52 54 53 60 20 64 6f 65 73 20 74 68 65 20 `FRTS` does the
5330: 73 61 6d 65 20 66 6f 72 20 74 68 65 20 45 41 45 same for the EAE
5340: 2c 20 62 79 20 74 68 65 20 77 61 79 2e 29 0d 0a , by the way.)..
5350: 0d 0a 41 6c 74 68 6f 75 67 68 20 74 68 65 20 46 ..Although the F
5360: 50 50 31 32 20 77 61 73 20 69 6e 74 72 6f 64 75 PP12 was introdu
5370: 63 65 64 20 77 69 74 68 20 74 68 65 20 50 44 50 ced with the PDP
5380: 2d 31 32 2c 20 69 74 20 69 73 20 6e 6f 74 20 72 -12, it is not r
5390: 65 73 74 72 69 63 74 65 64 20 74 6f 20 75 73 65 estricted to use
53a0: 20 77 69 74 68 20 74 68 65 20 50 44 50 2d 31 32 with the PDP-12
53b0: 3a 20 69 74 20 61 6c 73 6f 20 77 6f 72 6b 73 20 : it also works
53c0: 77 69 74 68 20 61 6c 6c 20 6f 66 20 74 68 65 20 with all of the
53d0: 6f 74 68 65 72 20 50 44 50 2d 38 20 66 61 6d 69 other PDP-8 fami
53e0: 6c 79 20 63 6f 6d 70 75 74 65 72 73 20 63 6f 6e ly computers con
53f0: 74 65 6d 70 6f 72 61 6e 65 6f 75 73 20 77 69 74 temporaneous wit
5400: 68 20 61 6e 64 20 70 72 65 63 65 64 69 6e 67 20 h and preceding
5410: 69 74 2c 20 67 6f 69 6e 67 20 62 61 63 6b 20 74 it, going back t
5420: 6f 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 50 o the original P
5430: 44 50 2d 38 2e 20 54 68 69 73 20 69 73 20 70 6f DP-8. This is po
5440: 73 73 69 62 6c 65 20 62 65 63 61 75 73 65 20 74 ssible because t
5450: 68 65 20 46 50 50 20 69 73 20 61 20 62 75 73 20 he FPP is a bus
5460: 70 65 72 69 70 68 65 72 61 6c 20 72 61 74 68 65 peripheral rathe
5470: 72 20 74 68 61 6e 20 61 20 66 65 61 74 75 72 65 r than a feature
5480: 20 6f 66 20 74 68 65 20 43 50 55 20 70 72 6f 70 of the CPU prop
5490: 65 72 2e 20 44 45 43 20 6a 75 73 74 69 66 69 65 er. DEC justifie
54a0: 64 20 74 68 69 73 20 69 6e 20 74 68 65 69 72 20 d this in their
54b0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2c 20 70 documentation, p
54c0: 6f 69 6e 74 69 6e 67 20 6f 75 74 20 74 68 61 74 ointing out that
54d0: 20 69 74 20 6d 65 61 6e 73 20 74 68 61 74 20 61 it means that a
54e0: 20 73 69 74 65 20 63 61 6e 20 75 70 67 72 61 64 site can upgrad
54f0: 65 20 74 68 65 69 72 20 65 78 69 73 74 69 6e 67 e their existing
5500: 20 70 72 6f 63 65 73 73 6f 72 73 20 77 69 74 68 processors with
5510: 20 61 6e 20 46 50 50 20 72 61 74 68 65 72 20 74 an FPP rather t
5520: 68 61 6e 20 62 75 79 20 61 20 77 68 6f 6c 65 20 han buy a whole
5530: 6e 65 77 20 6d 61 63 68 69 6e 65 20 77 69 74 68 new machine with
5540: 20 69 6e 74 65 67 72 61 74 65 64 20 46 50 50 20 integrated FPP
5550: 66 65 61 74 75 72 65 73 20 77 68 65 6e 20 74 68 features when th
5560: 65 79 20 66 69 6e 64 20 74 68 61 74 20 73 6f 66 ey find that sof
5570: 74 77 61 72 65 20 46 50 20 69 73 20 74 61 6b 69 tware FP is taki
5580: 6e 67 20 74 6f 6f 20 6d 75 63 68 20 74 69 6d 65 ng too much time
5590: 20 74 6f 20 72 75 6e 2e 0d 0a 0d 0a 54 68 65 72 to run.....Ther
55a0: 65 20 77 61 73 20 61 6c 73 6f 20 61 20 66 6f 6c e was also a fol
55b0: 6c 6f 77 2d 6f 6e 20 70 65 72 69 70 68 65 72 61 low-on periphera
55c0: 6c 20 66 6f 72 20 74 68 65 20 50 44 50 2d 38 2f l for the PDP-8/
55d0: 61 20 63 61 6c 6c 65 64 20 74 68 65 20 5b 46 50 a called the [FP
55e0: 50 38 2d 41 5d 5b 66 70 70 38 61 5d 2c 20 61 73 P8-A][fpp8a], as
55f0: 20 77 65 6c 6c 20 61 73 20 61 20 6c 61 74 65 72 well as a later
5600: 20 76 61 72 69 61 6e 74 20 63 61 6c 6c 65 64 20 variant called
5610: 74 68 65 20 46 50 50 31 32 41 2c 20 62 6f 74 68 the FPP12A, both
5620: 20 6f 66 20 77 68 69 63 68 20 61 72 65 20 69 6e of which are in
5630: 73 74 72 75 63 74 69 6f 6e 2d 63 6f 6d 70 61 74 struction-compat
5640: 69 62 6c 65 20 77 69 74 68 20 74 68 65 20 6f 72 ible with the or
5650: 69 67 69 6e 61 6c 20 46 50 50 31 32 2e 20 54 68 iginal FPP12. Th
5660: 65 20 46 50 50 20 66 65 61 74 75 72 65 73 20 6f e FPP features o
5670: 66 20 52 41 4c 46 20 61 6c 6c 6f 77 20 79 6f 75 f RALF allow you
5680: 20 74 6f 20 69 6e 74 65 72 6d 69 78 20 46 50 50 to intermix FPP
5690: 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 77 69 instructions wi
56a0: 74 68 20 50 44 50 2d 38 20 69 6e 73 74 72 75 63 th PDP-8 instruc
56b0: 74 69 6f 6e 73 20 6a 75 73 74 20 61 73 20 69 66 tions just as if
56c0: 20 74 68 65 20 46 50 50 20 77 65 72 65 20 70 61 the FPP were pa
56d0: 72 74 20 6f 66 20 74 68 65 20 50 44 50 2d 38 20 rt of the PDP-8
56e0: 43 50 55 2c 20 72 61 74 68 65 72 20 74 68 61 6e CPU, rather than
56f0: 20 62 65 69 6e 67 20 61 20 76 65 72 79 20 64 69 being a very di
5700: 66 66 65 72 65 6e 74 20 65 78 74 65 72 6e 61 6c fferent external
5710: 20 63 6f 70 72 6f 63 65 73 73 6f 72 2e 0d 0a 0d coprocessor....
5720: 0a 48 65 72 65 20 69 73 20 61 20 73 75 6d 6d 61 .Here is a summa
5730: 72 79 20 6f 66 20 74 68 65 20 46 50 50 2d 72 65 ry of the FPP-re
5740: 6c 61 74 65 64 20 66 65 61 74 75 72 65 73 20 6f lated features o
5750: 66 20 52 41 4c 46 3a 0d 0a 0d 0a 2a 20 20 20 4d f RALF:....* M
5760: 6f 72 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 ore instructions
5770: 20 61 6e 64 20 70 73 65 75 64 6f 2d 6f 70 73 3a and pseudo-ops:
5780: 0d 0a 20 20 20 20 2a 20 20 20 41 72 69 74 68 6d .. * Arithm
5790: 65 74 69 63 3a 20 60 46 41 44 44 60 2c 20 60 46 etic: `FADD`, `F
57a0: 41 44 44 4d 60 2c 20 60 46 44 49 56 60 2c 20 60 ADDM`, `FDIV`, `
57b0: 46 4d 55 4c 60 2c 20 60 46 4d 55 4c 4d 60 2c 20 FMUL`, `FMULM`,
57c0: 60 46 53 55 42 60 0d 0a 20 20 20 20 2a 20 20 20 `FSUB`.. *
57d0: 43 6f 6e 64 69 74 69 6f 6e 61 6c 20 6a 75 6d 70 Conditional jump
57e0: 73 3a 20 60 4a 45 51 60 2c 20 60 4a 47 45 60 2c s: `JEQ`, `JGE`,
57f0: 20 60 4a 4c 45 60 2c 20 60 4a 41 60 2c 20 60 4a `JLE`, `JA`, `J
5800: 4e 45 60 2c 20 60 4a 47 54 60 2c 20 60 4a 41 4c NE`, `JGT`, `JAL
5810: 60 0d 0a 20 20 20 20 2a 20 20 20 46 50 50 20 74 `.. * FPP t
5820: 6f 20 50 44 50 2d 38 20 6a 75 6d 70 73 3a 20 60 o PDP-8 jumps: `
5830: 4a 58 4e 60 2c 20 60 54 52 41 50 33 60 2c 20 60 JXN`, `TRAP3`, `
5840: 54 52 41 50 34 60 0d 0a 20 20 20 20 2a 20 20 20 TRAP4`.. *
5850: 49 6e 64 65 78 69 6e 67 3a 20 60 41 44 44 58 60 Indexing: `ADDX`
5860: 2c 20 60 49 4e 44 45 58 60 2c 20 60 4c 44 58 60 , `INDEX`, `LDX`
5870: 0d 0a 20 20 20 20 2a 20 20 20 4d 61 72 6b 20 6d .. * Mark m
5880: 6f 64 75 6c 65 20 61 73 20 72 65 71 75 69 72 69 odule as requiri
5890: 6e 67 20 64 6f 75 62 6c 65 2d 70 72 65 63 69 73 ng double-precis
58a0: 69 6f 6e 20 68 61 72 64 77 61 72 65 3a 20 60 44 ion hardware: `D
58b0: 50 43 48 4b 60 0d 0a 20 20 20 20 2a 20 20 20 4e PCHK`.. * N
58c0: 6f 2d 6f 70 3a 20 60 4e 4f 50 60 0d 0a 20 20 20 o-op: `NOP`..
58d0: 20 2a 20 20 20 50 6f 69 6e 74 65 72 20 6d 6f 76 * Pointer mov
58e0: 65 73 3a 20 60 4a 53 41 60 2c 20 60 4a 53 52 60 es: `JSA`, `JSR`
58f0: 2c 20 60 53 45 54 42 60 2c 20 60 53 45 54 58 60 , `SETB`, `SETX`
5900: 0d 0a 20 20 20 20 2a 20 20 20 50 72 6f 63 65 73 .. * Proces
5910: 73 6f 72 20 6f 70 65 72 61 74 69 6f 6e 73 3a 20 sor operations:
5920: 60 46 43 4c 41 60 2c 20 60 46 45 58 49 54 60 2c `FCLA`, `FEXIT`,
5930: 20 60 46 4e 45 47 60 2c 20 60 46 4e 4f 52 4d 60 `FNEG`, `FNORM`
5940: 2c 20 60 46 50 41 55 53 45 60 2c 20 60 4a 41 43 , `FPAUSE`, `JAC
5950: 60 2c 20 60 53 54 41 52 54 44 60 2c 20 60 53 54 `, `STARTD`, `ST
5960: 41 52 54 46 60 0d 0a 20 20 20 20 2a 20 20 20 52 ARTF`.. * R
5970: 65 67 69 73 74 65 72 20 6d 61 6e 69 70 75 6c 61 egister manipula
5980: 74 69 6f 6e 3a 20 60 41 4c 4e 60 2c 20 60 41 54 tion: `ALN`, `AT
5990: 58 60 2c 20 60 46 4c 44 41 60 2c 20 60 46 53 54 X`, `FLDA`, `FST
59a0: 41 60 2c 20 60 58 54 41 60 0d 0a 20 20 20 20 2a A`, `XTA`.. *
59b0: 20 20 20 53 65 74 20 73 69 6e 67 6c 65 2d 77 6f Set single-wo
59c0: 72 64 20 61 64 64 72 65 73 73 69 6e 67 20 6d 6f rd addressing mo
59d0: 64 65 20 62 61 73 65 20 61 64 64 72 65 73 73 3a de base address:
59e0: 20 60 42 41 53 45 60 0d 0a 2a 20 20 20 55 73 65 `BASE`..* Use
59f0: 20 31 35 2d 62 69 74 20 28 64 6f 75 62 6c 65 2d 15-bit (double-
5a00: 77 6f 72 64 29 20 61 64 64 72 65 73 73 65 73 20 word) addresses
5a10: 64 69 72 65 63 74 6c 79 20 69 6e 20 46 50 50 20 directly in FPP
5a20: 69 6e 73 74 72 75 63 74 69 6f 6e 73 2c 20 72 61 instructions, ra
5a30: 74 68 65 72 20 74 68 61 6e 20 74 68 65 20 5b 50 ther than the [P
5a40: 44 50 2d 38 27 73 20 6d 65 6d 6f 72 79 20 6d 6f DP-8's memory mo
5a50: 64 65 6c 5d 5b 6d 6d 38 5d 0d 0a 0d 0a 49 66 20 del][mm8]....If
5a60: 79 6f 75 20 73 65 65 20 61 6e 79 20 6f 66 20 74 you see any of t
5a70: 68 6f 73 65 20 69 6e 73 74 72 75 63 74 69 6f 6e hose instruction
5a80: 73 20 69 6e 20 61 20 50 44 50 2d 38 20 61 73 73 s in a PDP-8 ass
5a90: 65 6d 62 6c 79 20 6c 61 6e 67 75 61 67 65 20 70 embly language p
5aa0: 72 6f 67 72 61 6d 2c 20 69 74 27 73 20 61 20 70 rogram, it's a p
5ab0: 72 65 74 74 79 20 67 6f 6f 64 20 69 6e 64 69 63 retty good indic
5ac0: 61 74 6f 72 20 74 68 61 74 20 69 74 27 73 20 6d ator that it's m
5ad0: 65 61 6e 74 20 74 6f 20 62 65 20 61 73 73 65 6d eant to be assem
5ae0: 62 6c 65 64 20 62 79 20 52 41 4c 46 20 6f 72 20 bled by RALF or
5af0: 5b 46 4c 41 50 5d 28 23 66 6c 61 70 29 2e 0d 0a [FLAP](#flap)...
5b00: 0d 0a 0d 0a 23 23 23 23 20 52 65 6c 6f 63 61 74 ....#### Relocat
5b10: 61 62 6c 65 20 43 6f 64 65 0d 0a 0d 0a 52 41 4c able Code....RAL
5b20: 46 20 67 65 6e 65 72 61 74 65 73 20 72 65 6c 6f F generates relo
5b30: 63 61 74 61 62 6c 65 20 6f 75 74 70 75 74 20 63 catable output c
5b40: 6f 64 65 20 69 6e 20 60 2a 2e 52 4c 60 20 66 69 ode in `*.RL` fi
5b50: 6c 65 73 20 72 61 74 68 65 72 20 74 68 61 6e 20 les rather than
5b60: 61 62 73 6f 6c 75 74 65 2d 61 64 64 72 65 73 73 absolute-address
5b70: 65 64 20 6f 75 74 70 75 74 2c 20 77 68 69 63 68 ed output, which
5b80: 20 6d 65 61 6e 73 20 79 6f 75 20 63 61 6e 6e 6f means you canno
5b90: 74 20 73 69 6d 70 6c 79 20 6c 6f 61 64 20 69 74 t simply load it
5ba0: 73 20 6f 75 74 70 75 74 20 69 6e 74 6f 20 63 6f s output into co
5bb0: 72 65 20 61 6e 64 20 65 78 65 63 75 74 65 20 69 re and execute i
5bc0: 74 20 64 69 72 65 63 74 6c 79 2e 20 59 6f 75 20 t directly. You
5bd0: 6d 75 73 74 20 75 73 65 20 74 68 65 20 4f 53 2f must use the OS/
5be0: 38 20 46 4f 52 54 52 41 4e 20 49 56 20 6c 6f 61 8 FORTRAN IV loa
5bf0: 64 65 72 20 28 60 4c 4f 41 44 2e 53 56 60 29 20 der (`LOAD.SV`)
5c00: 74 6f 20 6c 6f 61 64 20 6f 6e 65 20 6f 72 20 6d to load one or m
5c10: 6f 72 65 20 60 2a 2e 52 4c 60 20 66 69 6c 65 73 ore `*.RL` files
5c20: 20 69 6e 74 6f 20 63 6f 72 65 20 6d 65 6d 6f 72 into core memor
5c30: 79 2c 20 6c 69 6e 6b 20 74 68 65 6d 20 74 6f 20 y, link them to
5c40: 61 6e 79 20 65 78 74 65 72 6e 61 6c 20 6c 69 62 any external lib
5c50: 72 61 72 69 65 73 2c 20 63 6f 6e 76 65 72 74 20 raries, convert
5c60: 72 65 6c 61 74 69 76 65 20 61 64 64 72 65 73 73 relative address
5c70: 65 73 20 74 6f 20 66 69 78 65 64 20 61 64 64 72 es to fixed addr
5c80: 65 73 73 65 73 2c 20 61 6e 64 20 77 72 69 74 65 esses, and write
5c90: 20 6f 75 74 20 61 20 6c 6f 61 64 65 72 20 69 6d out a loader im
5ca0: 61 67 65 20 28 60 2a 2e 4c 44 60 29 20 77 68 69 age (`*.LD`) whi
5cb0: 63 68 20 63 61 6e 20 74 68 65 6e 20 62 65 20 6c ch can then be l
5cc0: 6f 61 64 65 64 20 61 6e 20 72 75 6e 20 62 79 20 oaded an run by
5cd0: 74 68 65 20 4f 53 2f 38 20 46 4f 52 54 52 41 4e the OS/8 FORTRAN
5ce0: 20 49 56 20 52 75 6e 20 54 69 6d 65 20 53 79 73 IV Run Time Sys
5cf0: 74 65 6d 2c 20 60 46 52 54 53 2e 53 56 60 2e 0d tem, `FRTS.SV`..
5d00: 0a 0d 0a 54 68 65 20 63 6f 6d 70 65 6e 73 61 74 ...The compensat
5d10: 69 6f 6e 20 66 6f 72 20 74 68 69 73 20 63 6f 6d ion for this com
5d20: 70 6c 69 63 61 74 65 64 20 73 63 68 65 6d 65 20 plicated scheme
5d30: 69 73 20 74 68 61 74 20 60 4c 4f 41 44 2e 53 56 is that `LOAD.SV
5d40: 60 20 61 6e 64 20 60 46 52 54 53 2e 53 56 60 20 ` and `FRTS.SV`
5d50: 70 72 6f 76 69 64 65 20 61 20 70 6f 77 65 72 66 provide a powerf
5d60: 75 6c 20 6f 76 65 72 6c 61 79 20 61 6e 64 20 6c ul overlay and l
5d70: 69 6e 6b 61 67 65 20 6c 6f 61 64 69 6e 67 20 73 inkage loading s
5d80: 63 68 65 6d 65 20 77 68 69 63 68 20 61 6c 6c 6f cheme which allo
5d90: 77 73 20 66 6f 72 20 70 72 6f 67 72 61 6d 73 20 ws for programs
5da0: 75 70 20 74 6f 20 61 62 6f 75 74 20 33 30 30 20 up to about 300
5db0: 6b 57 6f 72 64 73 20 69 6e 20 73 69 7a 65 2c 20 kWords in size,
5dc0: 6e 65 61 72 6c 79 20 31 30 26 74 69 6d 65 73 3b nearly 10×
5dd0: 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 63 6f 72 the maximum cor
5de0: 65 20 6d 65 6d 6f 72 79 20 73 69 7a 65 20 69 6e e memory size in
5df0: 20 61 20 73 74 61 6e 64 61 72 64 20 50 44 50 2d a standard PDP-
5e00: 38 20 66 61 6d 69 6c 79 20 63 6f 6d 70 75 74 65 8 family compute
5e10: 72 2e 20 49 74 20 64 6f 65 73 20 74 68 69 73 20 r. It does this
5e20: 62 79 20 6c 6f 61 64 69 6e 67 20 63 6f 64 65 20 by loading code
5e30: 66 72 6f 6d 20 64 69 73 6b 20 61 73 20 6e 65 65 from disk as nee
5e40: 64 65 64 2e 20 54 68 69 73 20 73 63 68 65 6d 65 ded. This scheme
5e50: 20 69 73 20 6d 61 64 65 20 70 6f 73 73 69 62 6c is made possibl
5e60: 65 20 62 79 20 74 68 65 20 72 65 6c 6f 63 61 74 e by the relocat
5e70: 61 62 6c 65 20 6f 75 74 70 75 74 20 63 6f 64 65 able output code
5e80: 20 66 72 6f 6d 20 52 41 4c 46 2e 0d 0a 0d 0a 28 from RALF.....(
5e90: 44 6f 20 6e 6f 74 20 63 6f 6e 66 75 73 65 20 60 Do not confuse `
5ea0: 4c 4f 41 44 2e 53 56 60 2c 20 74 68 65 20 4f 53 LOAD.SV`, the OS
5eb0: 2f 38 20 46 4f 52 54 52 41 4e 20 49 56 20 6c 6f /8 FORTRAN IV lo
5ec0: 61 64 65 72 20 e2 80 94 20 75 73 65 64 20 62 79 ader — used by
5ed0: 20 62 6f 74 68 20 52 41 4c 46 20 61 6e 64 20 46 both RALF and F
5ee0: 34 20 e2 80 94 20 77 69 74 68 20 60 4c 4f 41 44 4 — with `LOAD
5ef0: 45 52 2e 53 56 60 2c 20 74 68 65 20 73 69 6d 70 ER.SV`, the simp
5f00: 6c 65 72 20 22 6c 69 6e 6b 69 6e 67 20 6c 6f 61 ler "linking loa
5f10: 64 65 72 22 20 75 73 65 64 20 62 79 20 74 68 65 der" used by the
5f20: 20 4f 53 2f 38 20 46 4f 52 54 52 41 4e 20 49 49 OS/8 FORTRAN II
5f30: 20 63 6f 6d 70 69 6c 65 72 20 28 60 46 4f 52 54 compiler (`FORT
5f40: 2e 53 56 60 29 20 61 6e 64 20 62 79 20 5b 53 41 .SV`) and by [SA
5f50: 42 52 5d 28 23 73 61 62 72 29 2e 20 54 68 65 72 BR](#sabr). Ther
5f60: 65 27 73 20 61 20 73 65 63 6f 6e 64 20 63 61 75 e's a second cau
5f70: 73 65 20 66 6f 72 20 63 6f 6e 66 75 73 69 6f 6e se for confusion
5f80: 3a 20 62 6f 74 68 20 6c 6f 61 64 65 72 73 20 75 : both loaders u
5f90: 73 65 20 60 2a 2e 52 4c 60 20 61 73 20 74 68 65 se `*.RL` as the
5fa0: 69 72 20 64 65 66 61 75 6c 74 20 69 6e 70 75 74 ir default input
5fb0: 20 66 69 6c 65 20 6e 61 6d 65 20 65 78 74 65 6e file name exten
5fc0: 73 69 6f 6e 2c 20 73 6f 20 52 41 4c 46 2c 20 46 sion, so RALF, F
5fd0: 34 2c 20 46 4f 52 54 2c 20 61 6e 64 20 53 41 42 4, FORT, and SAB
5fe0: 52 20 61 6c 6c 20 6f 75 74 70 75 74 20 66 69 6c R all output fil
5ff0: 65 73 20 77 69 74 68 20 74 68 61 74 20 65 78 74 es with that ext
6000: 65 6e 73 69 6f 6e 2e 29 0d 0a 0d 0a 0d 0a 23 23 ension.)......##
6010: 23 23 20 46 75 72 74 68 65 72 20 49 6d 70 72 6f ## Further Impro
6020: 76 65 6d 65 6e 74 73 0d 0a 0d 0a 52 41 4c 46 20 vements....RALF
6030: 61 6c 73 6f 20 68 61 73 20 6d 61 6e 79 20 6f 74 also has many ot
6040: 68 65 72 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 her improvements
6050: 20 6f 76 65 72 20 6c 61 74 65 2d 67 65 6e 65 72 over late-gener
6060: 61 74 69 6f 6e 20 50 41 4c 20 66 61 6d 69 6c 79 ation PAL family
6070: 20 61 73 73 65 6d 62 6c 65 72 73 20 73 75 63 68 assemblers such
6080: 20 61 73 20 50 41 4c 38 20 77 68 69 63 68 20 61 as PAL8 which a
6090: 72 65 20 6e 6f 74 20 64 69 72 65 63 74 6c 79 20 re not directly
60a0: 74 69 65 64 20 74 6f 20 64 72 69 76 69 6e 67 20 tied to driving
60b0: 74 68 65 20 46 50 50 20 6f 72 20 74 6f 20 72 65 the FPP or to re
60c0: 6c 6f 63 61 74 61 62 6c 65 20 63 6f 64 65 3a 0d locatable code:.
60d0: 0a 0d 0a 2a 20 20 20 45 78 70 72 65 73 73 69 6f ...* Expressio
60e0: 6e 73 3a 0d 0a 20 20 20 20 2a 20 20 20 4d 75 6c ns:.. * Mul
60f0: 74 69 70 6c 69 63 61 74 69 6f 6e 20 69 73 20 60 tiplication is `
6100: 2a 60 20 72 61 74 68 65 72 20 74 68 61 6e 20 60 *` rather than `
6110: 5e 60 3b 20 74 68 69 73 20 69 73 20 70 6f 73 73 ^`; this is poss
6120: 69 62 6c 65 20 62 65 63 61 75 73 65 20 52 41 4c ible because RAL
6130: 46 20 6f 66 66 65 72 73 20 74 68 65 20 60 4f 52 F offers the `OR
6140: 47 60 20 70 73 65 75 64 6f 2d 6f 70 20 74 6f 20 G` pseudo-op to
6150: 73 65 74 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e set the location
6160: 20 63 6f 75 6e 74 65 72 2c 20 77 68 65 72 65 20 counter, where
6170: 50 41 4c 20 66 61 6d 69 6c 79 20 61 73 73 65 6d PAL family assem
6180: 62 6c 65 72 73 20 75 73 65 20 60 2a 60 0d 0a 20 blers use `*`..
6190: 20 20 20 2a 20 20 20 44 69 76 69 73 69 6f 6e 20 * Division
61a0: 69 73 20 60 2f 60 20 72 61 74 68 65 72 20 74 68 is `/` rather th
61b0: 61 6e 20 60 25 60 2c 20 61 63 68 69 65 76 65 64 an `%`, achieved
61c0: 20 62 79 20 72 65 71 75 69 72 69 6e 67 20 77 68 by requiring wh
61d0: 69 74 65 73 70 61 63 65 20 62 65 66 6f 72 65 20 itespace before
61e0: 60 2f 60 20 69 66 20 75 73 65 64 20 74 6f 20 73 `/` if used to s
61f0: 74 61 72 74 20 61 20 63 6f 6d 6d 65 6e 74 20 61 tart a comment a
6200: 6e 64 20 64 69 73 61 6c 6c 6f 77 69 6e 67 20 73 nd disallowing s
6210: 70 61 63 65 73 20 69 6e 20 65 78 70 72 65 73 73 paces in express
6220: 69 6f 6e 73 0d 0a 2a 20 20 20 4d 61 6e 79 20 6e ions..* Many n
6230: 65 77 20 61 6e 64 20 63 68 61 6e 67 65 64 20 70 ew and changed p
6240: 73 65 75 64 6f 2d 6f 70 73 3a 0d 0a 20 20 20 20 seudo-ops:..
6250: 2a 20 20 20 60 41 44 44 52 60 3a 20 64 65 66 69 * `ADDR`: defi
6260: 6e 65 20 61 64 64 72 65 73 73 20 63 6f 6e 73 74 ne address const
6270: 61 6e 74 0d 0a 20 20 20 20 2a 20 20 20 60 45 60 ant.. * `E`
6280: 20 61 6e 64 20 60 46 60 3a 20 64 65 66 69 6e 65 and `F`: define
6290: 20 66 6c 6f 61 74 69 6e 67 2d 70 6f 69 6e 74 20 floating-point
62a0: 63 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 2a constants.. *
62b0: 20 20 20 60 49 46 50 4f 53 60 2c 20 60 49 46 4e `IFPOS`, `IFN
62c0: 45 47 60 2c 20 60 49 46 53 57 60 2c 20 60 49 46 EG`, `IFSW`, `IF
62d0: 4e 53 57 60 2c 20 60 49 46 46 4c 41 50 60 2c 20 NSW`, `IFFLAP`,
62e0: 61 6e 64 20 60 49 46 52 41 4c 46 60 20 63 6f 6e and `IFRALF` con
62f0: 64 69 74 69 6f 6e 61 6c 20 61 73 73 65 6d 62 6c ditional assembl
6300: 79 20 70 73 65 75 64 6f 2d 6f 70 73 0d 0a 20 20 y pseudo-ops..
6310: 20 20 2a 20 20 20 60 49 46 52 45 46 60 3a 20 72 * `IFREF`: r
6320: 65 70 6c 61 63 65 73 20 60 49 46 44 45 46 60 20 eplaces `IFDEF`
6330: 70 73 65 75 64 6f 2d 6f 70 2c 20 68 61 76 69 6e pseudo-op, havin
6340: 67 20 61 20 73 75 70 65 72 73 65 74 20 6f 66 20 g a superset of
6350: 69 74 73 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 its functionalit
6360: 79 0d 0a 20 20 20 20 2a 20 20 20 60 4c 49 53 54 y.. * `LIST
6370: 4f 46 60 2f 60 4c 49 53 54 4f 4e 60 3a 20 73 74 OF`/`LISTON`: st
6380: 6f 70 20 61 6e 64 20 73 74 61 72 74 20 6c 69 73 op and start lis
6390: 74 69 6e 67 20 6f 75 74 70 75 74 20 72 61 74 68 ting output rath
63a0: 65 72 20 74 68 61 6e 20 74 68 65 20 50 41 4c 20 er than the PAL
63b0: 66 61 6d 69 6c 79 27 73 20 60 58 4c 49 53 54 60 family's `XLIST`
63c0: 20 70 73 65 75 64 6f 2d 6f 70 0d 0a 20 20 20 20 pseudo-op..
63d0: 2a 20 20 20 60 52 45 50 45 41 54 60 3a 20 61 73 * `REPEAT`: as
63e0: 73 65 6d 62 6c 65 20 74 68 65 20 66 6f 6c 6c 6f semble the follo
63f0: 77 69 6e 67 20 6c 69 6e 65 20 6d 75 6c 74 69 70 wing line multip
6400: 6c 65 20 74 69 6d 65 73 0d 0a 20 20 20 20 2a 20 le times.. *
6410: 20 20 60 43 4f 4d 4d 4f 4e 60 2c 20 60 43 4f 4d `COMMON`, `COM
6420: 4d 5a 60 2c 20 60 45 4e 54 52 59 60 2c 20 60 45 MZ`, `ENTRY`, `E
6430: 58 54 45 52 4e 60 2c 20 60 46 49 45 4c 44 31 60 XTERN`, `FIELD1`
6440: 2c 20 60 53 45 43 54 60 2c 20 61 6e 64 20 60 53 , `SECT`, and `S
6450: 45 43 54 38 60 20 70 73 65 75 64 6f 2d 6f 70 73 ECT8` pseudo-ops
6460: 20 74 6f 20 73 75 70 70 6f 72 74 20 46 4f 52 54 to support FORT
6470: 52 41 4e 20 49 56 20 63 6f 64 65 0d 0a 0d 0a 53 RAN IV code....S
6480: 6f 6d 65 20 6d 61 79 20 61 72 67 75 65 20 61 62 ome may argue ab
6490: 6f 75 74 20 6d 79 20 67 72 6f 75 70 69 6e 67 20 out my grouping
64a0: 6f 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f of the expressio
64b0: 6e 20 63 68 61 6e 67 65 73 20 68 65 72 65 20 72 n changes here r
64c0: 61 74 68 65 72 20 74 68 61 6e 20 75 6e 64 65 72 ather than under
64d0: 20 74 68 65 20 5b 41 72 62 69 74 72 61 72 79 20 the [Arbitrary
64e0: 44 69 66 66 65 72 65 6e 63 65 73 5d 28 23 72 61 Differences](#ra
64f0: 6c 66 2d 61 64 29 20 73 65 63 74 69 6f 6e 20 62 lf-ad) section b
6500: 65 6c 6f 77 2e 20 49 20 6d 61 64 65 20 74 68 69 elow. I made thi
6510: 73 20 63 68 6f 69 63 65 20 62 65 63 61 75 73 65 s choice because
6520: 20 74 68 65 20 63 68 61 6e 67 65 20 77 61 73 20 the change was
6530: 6e 65 63 65 73 73 61 72 79 20 74 6f 20 61 6c 6c necessary to all
6540: 6f 77 20 61 6e 20 69 6d 70 72 6f 76 65 6d 65 6e ow an improvemen
6550: 74 2e 0d 0a 0d 0a 5b 66 70 70 38 61 5d 3a 20 68 t.....[fpp8a]: h
6560: 74 74 70 73 3a 2f 2f 61 72 63 68 69 76 65 2e 6f ttps://archive.o
6570: 72 67 2f 64 65 74 61 69 6c 73 2f 62 69 74 73 61 rg/details/bitsa
6580: 76 65 72 73 5f 64 65 63 70 64 70 38 70 64 70 55 vers_decpdp8pdpU
6590: 73 65 72 73 4d 61 6e 44 65 63 37 36 5f 39 39 36 sersManDec76_996
65a0: 37 37 30 0d 0a 5b 66 70 70 31 32 5d 3a 20 68 74 770..[fpp12]: ht
65b0: 74 70 73 3a 2f 2f 61 72 63 68 69 76 65 2e 6f 72 tps://archive.or
65c0: 67 2f 64 65 74 61 69 6c 73 2f 62 69 74 73 61 76 g/details/bitsav
65d0: 65 72 73 5f 64 65 63 70 64 70 31 32 44 45 5f 32 ers_decpdp12DE_2
65e0: 36 30 36 32 34 37 0d 0a 0d 0a 0d 0a 23 23 23 23 606247......####
65f0: 20 3c 61 20 69 64 3d 22 72 61 6c 66 2d 6a 72 22 <a id="ralf-jr"
6600: 3e 3c 2f 61 3e 4a 75 73 74 69 66 69 61 62 6c 65 ></a>Justifiable
6610: 20 52 65 73 74 72 69 63 74 69 6f 6e 73 0d 0a 0d Restrictions...
6620: 0a 54 68 65 72 65 20 61 72 65 20 72 65 73 74 72 .There are restr
6630: 69 63 74 69 6f 6e 73 20 69 6e 20 52 41 4c 46 20 ictions in RALF
6640: 72 65 6c 61 74 69 76 65 20 74 6f 20 6c 61 74 65 relative to late
6650: 2d 67 65 6e 65 72 61 74 69 6f 6e 20 50 41 4c 20 -generation PAL
6660: 66 61 6d 69 6c 79 20 61 73 73 65 6d 62 6c 65 72 family assembler
6670: 73 20 74 68 61 74 20 61 72 65 20 6a 75 73 74 69 s that are justi
6680: 66 69 61 62 6c 65 20 6f 6e 20 74 68 65 20 67 72 fiable on the gr
6690: 6f 75 6e 64 73 20 74 68 61 74 20 74 68 65 79 20 ounds that they
66a0: 66 6f 6c 6c 6f 77 20 66 72 6f 6d 20 74 68 65 20 follow from the
66b0: 72 65 71 75 69 72 65 6d 65 6e 74 20 74 68 61 74 requirement that
66c0: 20 74 68 65 20 6f 75 74 70 75 74 20 63 6f 64 65 the output code
66d0: 20 62 65 20 72 65 6c 6f 63 61 74 61 62 6c 65 3a be relocatable:
66e0: 0d 0a 0d 0a 2a 20 20 20 49 74 20 64 6f 65 73 20 ....* It does
66f0: 6e 6f 74 20 75 6e 64 65 72 73 74 61 6e 64 20 74 not understand t
6700: 68 65 20 60 50 41 47 45 60 20 70 73 65 75 64 6f he `PAGE` pseudo
6710: 2d 6f 70 3a 20 74 68 65 20 50 41 4c 20 66 6f 72 -op: the PAL for
6720: 6d 20 6f 66 20 74 68 69 73 20 66 65 61 74 75 72 m of this featur
6730: 65 20 e2 80 94 20 77 68 65 72 65 20 74 68 65 20 e — where the
6740: 70 61 67 65 20 6e 75 6d 62 65 72 20 69 73 20 67 page number is g
6750: 69 76 65 6e 20 61 73 20 61 6e 20 61 72 67 75 6d iven as an argum
6760: 65 6e 74 20 74 6f 20 74 68 65 20 70 73 65 75 64 ent to the pseud
6770: 6f 2d 6f 70 20 e2 80 94 20 69 6e 68 65 72 65 6e o-op — inheren
6780: 74 6c 79 20 67 6f 65 73 20 61 67 61 69 6e 73 74 tly goes against
6790: 20 74 68 65 20 6e 61 74 75 72 65 20 6f 66 20 72 the nature of r
67a0: 65 6c 6f 63 61 74 61 62 6c 65 20 6f 75 74 70 75 elocatable outpu
67b0: 74 2e 20 54 68 65 20 69 6e 61 62 69 6c 69 74 79 t. The inability
67c0: 20 74 6f 20 61 63 63 65 70 74 20 74 68 65 20 61 to accept the a
67d0: 72 67 75 6d 65 6e 74 2d 6c 65 73 73 20 76 65 72 rgument-less ver
67e0: 73 69 6f 6e 20 75 6e 64 65 72 73 74 6f 6f 64 20 sion understood
67f0: 62 79 20 5b 53 41 42 52 5d 28 23 73 61 62 72 29 by [SABR](#sabr)
6800: 20 69 73 20 68 61 72 64 65 72 20 74 6f 20 6a 75 is harder to ju
6810: 73 74 69 66 79 2e 0d 0a 0d 0a 2a 20 20 20 49 74 stify.....* It
6820: 20 64 6f 65 73 20 6e 6f 74 20 73 75 70 70 6f 72 does not suppor
6830: 74 20 63 75 72 72 65 6e 74 2d 70 61 67 65 20 6c t current-page l
6840: 69 74 65 72 61 6c 73 20 e2 80 94 20 60 28 34 32 iterals — `(42
6850: 29 60 20 e2 80 94 20 73 69 6e 63 65 20 61 6c 6c )` — since all
6860: 6f 77 69 6e 67 20 69 74 20 77 6f 75 6c 64 20 63 owing it would c
6870: 6f 6d 70 6c 69 63 61 74 65 20 72 65 6c 6f 63 61 omplicate reloca
6880: 74 69 6f 6e 2e 0d 0a 0d 0a 0d 0a 23 23 23 23 20 tion.......####
6890: 3c 61 20 69 64 3d 22 72 61 6c 66 2d 61 64 22 3e <a id="ralf-ad">
68a0: 3c 2f 61 3e 41 72 62 69 74 72 61 72 79 20 44 69 </a>Arbitrary Di
68b0: 66 66 65 72 65 6e 63 65 73 0d 0a 0d 0a 54 68 65 fferences....The
68c0: 72 65 20 61 72 65 20 61 64 64 69 74 69 6f 6e 61 re are additiona
68d0: 6c 20 64 69 66 66 65 72 65 6e 63 65 73 20 69 6e l differences in
68e0: 20 52 41 4c 46 20 72 65 6c 61 74 69 76 65 20 74 RALF relative t
68f0: 6f 20 74 68 65 20 50 41 4c 20 66 61 6d 69 6c 79 o the PAL family
6900: 20 61 73 73 65 6d 62 6c 65 72 73 20 74 68 61 74 assemblers that
6910: 20 73 65 65 6d 20 65 6e 74 69 72 65 6c 79 20 61 seem entirely a
6920: 72 62 69 74 72 61 72 79 20 74 6f 20 6d 65 3a 0d rbitrary to me:.
6930: 0a 0d 0a 2a 20 20 20 49 6e 64 69 72 65 63 74 20 ...* Indirect
6940: 61 64 64 72 65 73 73 69 6e 67 20 69 73 20 64 6f addressing is do
6950: 6e 65 20 64 69 66 66 65 72 65 6e 74 6c 79 3a 0d ne differently:.
6960: 0a 0d 0a 20 20 20 20 20 20 20 20 54 41 44 20 49 ... TAD I
6970: 20 41 20 20 20 20 20 20 20 2f 20 50 41 4c 20 73 A / PAL s
6980: 79 6e 74 61 78 0d 0a 20 20 20 20 20 20 20 20 54 yntax.. T
6990: 41 44 25 20 41 20 20 20 20 20 20 20 20 2f 20 52 AD% A / R
69a0: 41 4c 46 20 73 79 6e 74 61 78 0d 0a 0d 0a 2a 20 ALF syntax....*
69b0: 20 20 54 68 65 20 70 72 6f 67 72 61 6d 6d 65 72 The programmer
69c0: 20 6d 75 73 74 20 74 65 6c 6c 20 74 68 65 20 61 must tell the a
69d0: 73 73 65 6d 62 6c 65 72 20 77 68 65 6e 20 7a 65 ssembler when ze
69e0: 72 6f 2d 70 61 67 65 20 61 64 64 72 65 73 73 69 ro-page addressi
69f0: 6e 67 20 69 73 20 6e 65 65 64 65 64 3a 0d 0a 0d ng is needed:...
6a00: 0a 20 20 20 20 20 20 20 20 54 41 44 20 41 20 20 . TAD A
6a10: 20 20 20 20 20 20 20 2f 20 50 41 4c 20 73 79 6e / PAL syn
6a20: 74 61 78 2c 20 69 6d 70 6c 69 63 69 74 20 5a 20 tax, implicit Z
6a30: 66 6c 61 67 20 62 61 73 65 64 20 6f 6e 20 6b 6e flag based on kn
6a40: 6f 77 6e 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 own location of
6a50: 41 0d 0a 20 20 20 20 20 20 20 20 54 41 44 20 5a A.. TAD Z
6a60: 20 41 20 20 20 20 20 20 20 2f 20 50 41 4c 20 6c A / PAL l
6a70: 65 74 73 20 79 6f 75 20 62 65 20 65 78 70 6c 69 ets you be expli
6a80: 63 69 74 20 69 66 20 79 6f 75 20 77 61 6e 74 3b cit if you want;
6a90: 20 73 70 61 63 65 20 69 73 20 6e 6f 74 20 6f 70 space is not op
6aa0: 74 69 6f 6e 61 6c 0d 0a 20 20 20 20 20 20 20 20 tional..
6ab0: 54 41 44 5a 20 41 20 20 20 20 20 20 20 20 2f 20 TADZ A /
6ac0: 52 41 4c 46 20 73 79 6e 74 61 78 3a 20 52 41 4c RALF syntax: RAL
6ad0: 46 20 6e 65 65 64 73 20 74 6f 20 62 65 20 74 6f F needs to be to
6ae0: 6c 64 3b 20 6e 6f 20 73 70 61 63 65 20 63 61 6e ld; no space can
6af0: 20 62 65 20 67 69 76 65 6e 0d 0a 0d 0a 2a 20 20 be given....*
6b00: 20 49 74 73 20 65 78 70 72 65 73 73 69 6f 6e 20 Its expression
6b10: 73 79 6e 74 61 78 20 68 61 73 20 6e 6f 20 22 61 syntax has no "a
6b20: 6e 64 22 20 6f 70 65 72 61 74 6f 72 2c 20 60 26 nd" operator, `&
6b30: 60 0d 0a 0d 0a 2a 20 20 20 49 74 20 64 6f 65 73 `....* It does
6b40: 20 6e 6f 74 20 73 75 70 70 6f 72 74 20 7a 65 72 not support zer
6b50: 6f 2d 70 61 67 65 20 6c 69 74 65 72 61 6c 73 3a o-page literals:
6b60: 20 60 5b 32 30 5d 60 0d 0a 0d 0a 20 20 20 20 54 `[20]`.... T
6b70: 68 69 73 20 72 65 73 74 72 69 63 74 69 6f 6e 20 his restriction
6b80: 64 6f 65 73 20 6e 6f 74 20 73 65 65 6d 20 74 6f does not seem to
6b90: 20 68 61 76 65 20 61 20 67 6f 6f 64 20 6a 75 73 have a good jus
6ba0: 74 69 66 69 63 61 74 69 6f 6e 2c 20 65 76 65 6e tification, even
6bb0: 20 69 6e 20 72 65 6c 6f 63 61 74 61 62 6c 65 20 in relocatable
6bc0: 61 73 73 65 6d 62 6c 65 72 20 6f 75 74 70 75 74 assembler output
6bd0: 2c 20 73 69 6e 63 65 20 74 68 65 20 6e 61 74 75 , since the natu
6be0: 72 65 20 6f 66 20 74 68 65 20 66 65 61 74 75 72 re of the featur
6bf0: 65 20 61 74 20 62 6f 74 68 20 61 74 20 74 68 65 e at both at the
6c00: 20 61 73 73 65 6d 62 6c 79 20 61 6e 64 20 6d 61 assembly and ma
6c10: 63 68 69 6e 65 20 63 6f 64 65 20 6c 65 76 65 6c chine code level
6c20: 73 20 69 73 20 74 68 61 74 20 74 68 65 20 6d 65 s is that the me
6c30: 6d 6f 72 79 20 72 65 66 65 72 65 6e 63 65 20 69 mory reference i
6c40: 73 20 69 6e 68 65 72 65 6e 74 6c 79 20 61 62 73 s inherently abs
6c50: 6f 6c 75 74 65 2e 20 54 68 75 73 2c 20 67 65 6e olute. Thus, gen
6c60: 65 72 61 74 69 6f 6e 20 6f 66 20 61 20 7a 65 72 eration of a zer
6c70: 6f 2d 70 61 67 65 20 6c 69 74 65 72 61 6c 20 63 o-page literal c
6c80: 61 6e 6e 6f 74 20 61 66 66 65 63 74 20 74 68 65 annot affect the
6c90: 20 61 62 69 6c 69 74 79 20 6f 66 20 74 68 65 20 ability of the
6ca0: 6c 6f 61 64 65 72 20 74 6f 20 72 65 6c 6f 63 61 loader to reloca
6cb0: 74 65 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 te the generated
6cc0: 20 63 6f 64 65 2e 0d 0a 0d 0a 0d 0a 23 23 23 20 code.......###
6cd0: 3c 61 20 69 64 3d 22 66 6c 61 70 22 3e 3c 2f 61 <a id="flap"></a
6ce0: 3e 46 4c 41 50 0d 0a 0d 0a 5b 52 41 4c 46 5d 28 >FLAP....[RALF](
6cf0: 23 72 61 6c 66 29 20 77 61 73 20 62 61 73 65 64 #ralf) was based
6d00: 20 6f 6e 20 61 20 73 69 6d 70 6c 65 72 20 61 73 on a simpler as
6d10: 73 65 6d 62 6c 65 72 20 63 61 6c 6c 65 64 20 46 sembler called F
6d20: 4c 41 50 2c 20 77 68 69 63 68 20 67 65 6e 65 72 LAP, which gener
6d30: 61 74 65 73 20 61 62 73 6f 6c 75 74 65 2d 61 64 ates absolute-ad
6d40: 64 72 65 73 73 65 64 20 63 6f 64 65 2c 20 6a 75 dressed code, ju
6d50: 73 74 20 61 73 20 50 41 4c 38 20 64 6f 65 73 2e st as PAL8 does.
6d60: 20 54 68 69 73 20 73 65 63 74 69 6f 6e 20 77 69 This section wi
6d70: 6c 6c 20 73 69 6d 70 6c 79 20 64 65 73 63 72 69 ll simply descri
6d80: 62 65 20 74 68 65 20 64 69 66 66 65 72 65 6e 63 be the differenc
6d90: 65 73 20 69 6e 20 46 4c 41 50 20 72 65 6c 61 74 es in FLAP relat
6da0: 69 76 65 20 74 6f 20 52 41 4c 46 2e 20 54 68 65 ive to RALF. The
6db0: 73 65 20 64 69 66 66 65 72 65 6e 63 65 73 20 61 se differences a
6dc0: 73 69 64 65 2c 20 46 4c 41 50 20 73 68 61 72 65 side, FLAP share
6dd0: 73 20 74 68 65 20 66 65 61 74 75 72 65 20 73 65 s the feature se
6de0: 74 20 6f 66 20 52 41 4c 46 2e 0d 0a 0d 0a 54 68 t of RALF.....Th
6df0: 65 20 70 72 69 6d 61 72 79 20 61 64 76 61 6e 74 e primary advant
6e00: 61 67 65 20 46 4c 41 50 20 68 61 73 20 6f 76 65 age FLAP has ove
6e10: 72 20 52 41 4c 46 20 69 73 20 74 68 61 74 2c 20 r RALF is that,
6e20: 62 65 63 61 75 73 65 20 69 74 20 69 73 20 64 69 because it is di
6e30: 66 66 69 63 75 6c 74 20 74 6f 20 61 73 63 72 69 fficult to ascri
6e40: 62 65 20 6d 65 61 6e 69 6e 67 20 74 6f 20 74 68 be meaning to th
6e50: 65 20 22 70 61 67 65 22 20 63 6f 6e 63 65 70 74 e "page" concept
6e60: 20 69 6e 20 72 65 6c 6f 63 61 74 61 62 6c 65 20 in relocatable
6e70: 61 73 73 65 6d 62 6c 65 72 20 6f 75 74 70 75 74 assembler output
6e80: 2c 20 52 41 4c 46 20 64 6f 65 73 6e 27 74 20 73 , RALF doesn't s
6e90: 75 70 70 6f 72 74 20 74 68 65 20 60 50 41 47 45 upport the `PAGE
6ea0: 60 20 70 73 65 75 64 6f 2d 6f 70 2c 20 77 68 69 ` pseudo-op, whi
6eb0: 6c 65 20 46 4c 41 50 20 64 6f 65 73 2e 20 46 4c le FLAP does. FL
6ec0: 41 50 20 61 6c 73 6f 20 73 75 70 70 6f 72 74 73 AP also supports
6ed0: 20 74 68 65 20 50 41 4c 20 66 61 6d 69 6c 79 27 the PAL family'
6ee0: 73 20 7a 65 72 6f 2d 70 61 67 65 20 61 6e 64 20 s zero-page and
6ef0: 63 75 72 72 65 6e 74 2d 70 61 67 65 20 6c 69 74 current-page lit
6f00: 65 72 61 6c 20 73 79 6e 74 61 78 65 73 2c 20 77 eral syntaxes, w
6f10: 68 69 6c 65 20 52 41 4c 46 20 64 6f 65 73 20 6e hile RALF does n
6f20: 6f 74 2e 0d 0a 0d 0a 46 4c 41 50 20 68 61 73 20 ot.....FLAP has
6f30: 6f 6e 65 20 70 73 65 75 64 6f 2d 6f 70 20 74 68 one pseudo-op th
6f40: 61 74 20 52 41 4c 46 20 64 6f 65 73 20 6e 6f 74 at RALF does not
6f50: 2c 20 60 53 60 20 66 6f 72 20 64 65 66 69 6e 69 , `S` for defini
6f60: 6e 67 20 61 20 73 69 6e 67 6c 65 2d 77 6f 72 64 ng a single-word
6f70: 20 69 6e 74 65 67 65 72 20 63 6f 6e 73 74 61 6e integer constan
6f80: 74 2e 0d 0a 0d 0a 42 65 63 61 75 73 65 20 46 4c t.....Because FL
6f90: 41 50 20 6f 75 74 70 75 74 20 69 73 20 61 62 73 AP output is abs
6fa0: 6f 6c 75 74 65 2d 61 64 64 72 65 73 73 65 64 2c olute-addressed,
6fb0: 20 69 74 20 77 72 69 74 65 73 20 60 2a 2e 42 4e it writes `*.BN
6fc0: 60 20 66 69 6c 65 73 20 61 73 20 6f 75 74 70 75 ` files as outpu
6fd0: 74 20 72 61 74 68 65 72 20 74 68 61 6e 20 60 2a t rather than `*
6fe0: 2e 52 4c 60 2e 20 54 68 65 73 65 20 61 72 65 20 .RL`. These are
6ff0: 6c 69 6e 6b 65 64 20 61 6e 64 20 6c 6f 61 64 65 linked and loade
7000: 64 20 62 79 20 74 68 65 20 4f 53 2f 38 20 61 62 d by the OS/8 ab
7010: 73 6f 6c 75 74 65 20 6c 6f 61 64 65 72 2c 20 60 solute loader, `
7020: 41 42 53 4c 44 52 2e 53 56 60 2c 20 72 61 74 68 ABSLDR.SV`, rath
7030: 65 72 20 74 68 61 6e 20 62 79 20 74 68 65 20 72 er than by the r
7040: 65 6c 6f 63 61 74 69 6e 67 20 6c 6f 61 64 65 72 elocating loader
7050: 20 75 73 65 64 20 62 79 20 52 41 4c 46 2c 20 60 used by RALF, `
7060: 4c 4f 41 44 2e 53 56 60 2e 20 59 6f 75 20 63 61 LOAD.SV`. You ca
7070: 6e 20 6c 69 6e 6b 20 61 6e 64 20 72 75 6e 20 73 n link and run s
7080: 65 76 65 72 61 6c 20 66 69 6c 65 73 20 64 69 72 everal files dir
7090: 65 63 74 6c 79 20 74 68 69 73 20 77 61 79 2c 20 ectly this way,
70a0: 6f 72 20 79 6f 75 20 63 61 6e 20 6a 75 73 74 20 or you can just
70b0: 6c 6f 61 64 20 74 68 65 6d 20 69 6e 74 6f 20 63 load them into c
70c0: 6f 72 65 20 61 6e 64 20 60 53 41 56 45 60 20 74 ore and `SAVE` t
70d0: 68 65 6d 20 74 6f 20 61 20 60 2a 2e 53 56 60 20 hem to a `*.SV`
70e0: 66 69 6c 65 20 66 6f 72 20 6c 61 74 65 72 20 75 file for later u
70f0: 73 65 20 62 79 20 74 68 65 20 4f 53 2f 38 20 60 se by the OS/8 `
7100: 52 60 20 63 6f 6d 6d 61 6e 64 2e 20 54 68 69 73 R` command. This
7110: 20 69 73 20 62 6f 74 68 20 73 69 6d 70 6c 65 72 is both simpler
7120: 20 61 6e 64 20 6c 65 73 73 20 70 6f 77 65 72 66 and less powerf
7130: 75 6c 20 74 68 61 6e 20 74 68 65 20 52 41 4c 46 ul than the RALF
7140: 2f 46 52 54 53 20 64 79 6e 61 6d 69 63 20 6f 76 /FRTS dynamic ov
7150: 65 72 6c 61 79 20 73 63 68 65 6d 65 3a 20 46 4c erlay scheme: FL
7160: 41 50 20 70 72 6f 67 72 61 6d 73 20 63 61 6e 6e AP programs cann
7170: 6f 74 20 62 65 20 61 6e 79 20 6c 61 72 67 65 72 ot be any larger
7180: 20 74 68 61 6e 20 63 6f 72 65 20 6d 65 6d 6f 72 than core memor
7190: 79 20 75 6e 6c 65 73 73 20 79 6f 75 2c 20 74 68 y unless you, th
71a0: 65 20 70 72 6f 67 72 61 6d 6d 65 72 2c 20 64 6f e programmer, do
71b0: 20 74 68 65 20 6d 61 6e 75 61 6c 20 77 6f 72 6b the manual work
71c0: 20 74 6f 20 63 72 65 61 74 65 20 79 6f 75 72 20 to create your
71d0: 6f 77 6e 20 6f 76 65 72 6c 61 79 20 73 77 61 70 own overlay swap
71e0: 70 69 6e 67 20 73 63 68 65 6d 65 2e 0d 0a 0d 0a ping scheme.....
71f0: 60 46 4c 41 50 2e 53 56 60 20 69 73 20 63 75 72 `FLAP.SV` is cur
7200: 72 65 6e 74 6c 79 20 6e 6f 74 20 70 72 6f 76 69 rently not provi
7210: 64 65 64 20 6f 6e 20 74 68 65 20 50 69 44 50 2d ded on the PiDP-
7220: 38 2f 49 20 70 72 6f 6a 65 63 74 27 73 20 4f 53 8/I project's OS
7230: 2f 38 20 64 69 73 6b 20 70 61 63 6b 73 2e 20 49 /8 disk packs. I
7240: 74 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 t is not present
7250: 20 6f 6e 20 74 68 65 20 4f 53 2f 38 20 73 6f 75 on the OS/8 sou
7260: 72 63 65 20 6d 65 64 69 61 20 77 65 27 72 65 20 rce media we're
7270: 75 73 69 6e 67 2c 20 62 75 74 20 77 65 20 64 6f using, but we do
7280: 6e 27 74 20 6b 6e 6f 77 20 69 66 20 74 68 69 73 n't know if this
7290: 20 69 73 20 62 65 63 61 75 73 65 20 69 74 20 77 is because it w
72a0: 61 73 20 72 65 6d 6f 76 65 64 20 66 72 6f 6d 20 as removed from
72b0: 4f 53 2f 38 20 62 79 20 44 45 43 20 6f 72 20 69 OS/8 by DEC or i
72c0: 66 20 77 65 20 73 69 6d 70 6c 79 20 6d 69 73 73 f we simply miss
72d0: 65 64 20 74 68 65 20 46 4c 41 50 20 73 6f 75 72 ed the FLAP sour
72e0: 63 65 20 6d 65 64 69 61 20 77 68 65 6e 20 63 75 ce media when cu
72f0: 72 61 74 69 6e 67 20 74 68 65 20 69 6e 70 75 74 rating the input
7300: 20 6d 65 64 69 61 20 77 65 20 75 73 65 20 66 6f media we use fo
7310: 72 20 62 75 69 6c 64 69 6e 67 20 6f 75 72 20 4f r building our O
7320: 53 2f 38 20 64 69 73 6b 20 70 61 63 6b 73 2e 20 S/8 disk packs.
7330: 57 68 65 6e 20 77 65 20 66 69 67 75 72 65 20 74 When we figure t
7340: 68 61 74 20 6f 75 74 2c 20 49 27 6c 6c 20 75 70 hat out, I'll up
7350: 64 61 74 65 20 74 68 69 73 20 61 72 74 69 63 6c date this articl
7360: 65 2e 0d 0a 0d 0a 54 68 65 72 65 20 69 73 20 61 e.....There is a
7370: 20 60 46 4c 41 50 2e 53 41 56 60 20 70 72 6f 67 `FLAP.SAV` prog
7380: 72 61 6d 20 6f 6e 20 74 68 65 20 50 69 44 50 2d ram on the PiDP-
7390: 38 2f 49 20 70 72 6f 6a 65 63 74 27 73 20 54 53 8/I project's TS
73a0: 53 2f 38 20 62 6f 6f 74 20 6d 65 64 69 61 2c 20 S/8 boot media,
73b0: 62 75 74 20 77 65 20 68 61 76 65 20 6e 6f 74 20 but we have not
73c0: 79 65 74 20 73 70 65 6e 74 20 74 68 65 20 74 69 yet spent the ti
73d0: 6d 65 20 74 6f 20 66 69 67 75 72 65 20 6f 75 74 me to figure out
73e0: 20 68 6f 77 20 74 6f 20 6d 61 6b 65 20 69 74 20 how to make it
73f0: 77 6f 72 6b 2e 20 4e 6f 6e 65 20 6f 66 20 74 68 work. None of th
7400: 65 20 54 53 53 2f 38 20 6d 61 6e 75 61 6c 73 20 e TSS/8 manuals
7410: 77 65 20 68 61 76 65 20 61 63 63 65 73 73 20 74 we have access t
7420: 6f 20 74 61 6c 6b 20 61 62 6f 75 74 20 46 4c 41 o talk about FLA
7430: 50 2c 20 73 6f 20 74 68 69 73 20 69 73 20 6e 6f P, so this is no
7440: 74 20 6c 69 6b 65 6c 79 20 74 6f 20 62 65 20 61 t likely to be a
7450: 20 71 75 69 63 6b 20 69 6e 76 65 73 74 69 67 61 quick investiga
7460: 74 69 6f 6e 2e 0d 0a 0d 0a 42 79 20 74 68 65 20 tion.....By the
7470: 77 61 79 2c 20 79 6f 75 20 6d 61 79 20 66 69 6e way, you may fin
7480: 64 20 70 61 67 65 73 20 6f 6e 6c 69 6e 65 20 74 d pages online t
7490: 68 61 74 20 63 6c 61 69 6d 20 74 68 61 74 20 46 hat claim that F
74a0: 4c 41 50 20 77 61 73 20 64 65 72 69 76 65 64 20 LAP was derived
74b0: 66 72 6f 6d 20 52 41 4c 46 2c 20 72 61 74 68 65 from RALF, rathe
74c0: 72 20 74 68 61 6e 20 74 68 65 20 6f 74 68 65 72 r than the other
74d0: 20 77 61 79 20 61 72 6f 75 6e 64 2e 20 49 27 6d way around. I'm
74e0: 20 62 61 73 69 6e 67 20 6d 79 20 63 6c 61 69 6d basing my claim
74f0: 20 6f 6e 20 77 68 61 74 20 44 45 43 27 73 20 6f on what DEC's o
7500: 77 6e 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e wn documentation
7510: 20 73 61 79 73 3a 20 22 52 41 4c 46 2c 20 61 6e says: "RALF, an
7520: 20 65 78 74 65 6e 73 69 6f 6e 20 6f 66 20 46 4c extension of FL
7530: 41 50 2e 2e 2e 22 20 54 68 69 73 20 71 75 6f 74 AP..." This quot
7540: 65 20 77 61 73 20 66 6f 75 6e 64 20 69 6e 20 74 e was found in t
7550: 77 6f 20 64 69 66 66 65 72 65 6e 74 20 4f 53 2f wo different OS/
7560: 38 20 6d 61 6e 75 61 6c 73 20 70 75 62 6c 69 73 8 manuals publis
7570: 68 65 64 20 61 62 6f 75 74 20 35 20 79 65 61 72 hed about 5 year
7580: 73 20 61 70 61 72 74 2e 0d 0a 0d 0a 0d 0a 23 23 s apart.......##
7590: 23 20 3c 61 20 69 64 3d 22 73 61 62 72 22 3e 3c # <a id="sabr"><
75a0: 2f 61 3e 53 41 42 52 0d 0a 0d 0a 41 73 20 5b 52 /a>SABR....As [R
75b0: 41 4c 46 5d 28 23 72 61 6c 66 29 20 69 73 20 74 ALF](#ralf) is t
75c0: 6f 20 4f 53 2f 38 27 73 20 46 4f 52 54 52 41 4e o OS/8's FORTRAN
75d0: 20 49 56 20 63 6f 6d 70 69 6c 65 72 2c 20 73 6f IV compiler, so
75e0: 20 74 68 65 20 5b 53 79 6d 62 6f 6c 69 63 20 41 the [Symbolic A
75f0: 73 73 65 6d 62 6c 65 72 20 66 6f 72 20 42 69 6e ssembler for Bin
7600: 61 72 79 20 52 65 6c 6f 63 61 74 61 62 6c 65 20 ary Relocatable
7610: 70 72 6f 67 72 61 6d 73 5d 28 68 74 74 70 3a 2f programs](http:/
7620: 2f 68 6f 6d 65 70 61 67 65 2e 63 73 2e 75 69 6f /homepage.cs.uio
7630: 77 61 2e 65 64 75 2f 7e 6a 6f 6e 65 73 2f 70 64 wa.edu/~jones/pd
7640: 70 38 2f 66 61 71 73 2f 23 6c 61 6e 67 73 29 20 p8/faqs/#langs)
7650: 69 73 20 74 6f 20 4f 53 2f 38 27 73 20 46 4f 52 is to OS/8's FOR
7660: 54 52 41 4e 20 49 49 20 63 6f 6d 70 69 6c 65 72 TRAN II compiler
7670: 2e 0d 0a 0d 0a 53 41 42 52 20 69 73 20 61 20 72 .....SABR is a r
7680: 65 6c 61 74 69 76 65 20 61 73 73 65 6d 62 6c 65 elative assemble
7690: 72 2c 20 75 6e 6c 69 6b 65 20 5b 50 41 4c 38 5d r, unlike [PAL8]
76a0: 28 23 70 61 6c 38 29 20 6f 72 20 5b 46 4c 41 50 (#pal8) or [FLAP
76b0: 5d 28 23 66 6c 61 70 29 2c 20 6d 65 61 6e 69 6e ](#flap), meanin
76c0: 67 20 74 68 61 74 20 74 68 65 20 4f 53 2f 38 20 g that the OS/8
76d0: 6c 69 6e 6b 69 6e 67 20 6c 6f 61 64 65 72 20 28 linking loader (
76e0: 60 4c 4f 41 44 45 52 2e 53 56 60 29 20 61 64 6a `LOADER.SV`) adj
76f0: 75 73 74 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 usts all of the
7700: 61 64 64 72 65 73 73 65 73 20 69 6e 20 74 68 65 addresses in the
7710: 20 61 73 73 65 6d 62 6c 65 64 20 60 2a 2e 52 4c assembled `*.RL
7720: 60 20 6f 75 74 70 75 74 20 74 6f 20 74 68 65 69 ` output to thei
7730: 72 20 66 69 6e 61 6c 20 76 61 6c 75 65 73 2e 0d r final values..
7740: 0a 0d 0a 53 41 42 52 20 64 6f 65 73 20 6e 6f 74 ...SABR does not
7750: 20 68 61 76 65 20 61 6e 79 20 74 69 65 20 74 6f have any tie to
7760: 20 74 68 65 20 46 50 50 2c 20 75 6e 6c 69 6b 65 the FPP, unlike
7770: 20 52 41 4c 46 20 61 6e 64 20 46 4c 41 50 2e 0d RALF and FLAP..
7780: 0a 0d 0a 54 68 65 20 6d 6f 73 74 20 6e 6f 74 61 ...The most nota
7790: 62 6c 65 20 66 65 61 74 75 72 65 20 6f 66 20 53 ble feature of S
77a0: 41 42 52 20 69 73 20 74 68 61 74 20 74 68 65 20 ABR is that the
77b0: 70 72 6f 67 72 61 6d 6d 65 72 20 6e 6f 72 6d 61 programmer norma
77c0: 6c 6c 79 20 77 72 69 74 65 73 20 53 41 42 52 20 lly writes SABR
77d0: 63 6f 64 65 20 61 73 20 69 66 20 75 73 69 6e 67 code as if using
77e0: 20 61 20 66 6c 61 74 20 6d 65 6d 6f 72 79 20 6d a flat memory m
77f0: 6f 64 65 6c 20 6d 61 63 68 69 6e 65 2c 20 63 65 odel machine, ce
7800: 64 69 6e 67 20 61 6c 6c 20 63 6f 6e 74 72 6f 6c ding all control
7810: 20 6f 76 65 72 20 6c 69 74 65 72 61 6c 20 70 6c over literal pl
7820: 61 63 65 6d 65 6e 74 20 61 6e 64 20 6f 66 20 70 acement and of p
7830: 61 67 65 2f 66 69 65 6c 64 20 62 6f 75 6e 64 61 age/field bounda
7840: 72 79 20 70 6c 61 63 65 6d 65 6e 74 20 74 6f 20 ry placement to
7850: 74 68 65 20 61 73 73 65 6d 62 6c 65 72 2e 20 54 the assembler. T
7860: 68 69 73 20 66 65 61 74 75 72 65 20 e2 80 94 20 his feature —
7870: 63 61 6c 6c 65 64 20 61 75 74 6f 6d 61 74 69 63 called automatic
7880: 20 70 61 67 69 6e 67 20 e2 80 94 20 66 72 65 65 paging — free
7890: 73 20 74 68 65 20 70 72 6f 67 72 61 6d 6d 65 72 s the programmer
78a0: 20 66 72 6f 6d 20 68 61 76 69 6e 67 20 74 6f 20 from having to
78b0: 64 65 61 6c 20 77 69 74 68 20 74 68 65 20 5b 73 deal with the [s
78c0: 74 72 61 6e 67 65 20 50 44 50 2d 38 20 6d 65 6d trange PDP-8 mem
78d0: 6f 72 79 20 6d 6f 64 65 6c 5d 5b 6d 6d 38 5d 2c ory model][mm8],
78e0: 20 62 75 74 20 69 74 20 61 6c 73 6f 20 6d 65 61 but it also mea
78f0: 6e 73 20 73 68 65 20 69 73 20 64 65 70 65 6e 64 ns she is depend
7900: 65 6e 74 20 75 70 6f 6e 20 74 68 65 20 61 73 73 ent upon the ass
7910: 65 6d 62 6c 65 72 20 74 6f 20 6d 61 6b 65 20 73 embler to make s
7920: 6d 61 72 74 20 64 65 63 69 73 69 6f 6e 73 20 61 mart decisions a
7930: 62 6f 75 74 20 61 6c 6c 20 6f 66 20 74 68 69 73 bout all of this
7940: 2c 20 65 76 65 6e 20 77 68 69 6c 65 20 53 41 42 , even while SAB
7950: 52 20 6d 75 73 74 20 69 74 73 65 6c 66 20 72 75 R must itself ru
7960: 6e 20 77 69 74 68 69 6e 20 74 68 6f 73 65 20 73 n within those s
7970: 61 6d 65 20 63 6f 6e 73 74 72 61 69 6e 74 73 2e ame constraints.
7980: 20 54 68 69 73 20 6d 61 6b 65 73 20 77 72 69 74 This makes writ
7990: 69 6e 67 20 53 41 42 52 20 65 61 73 69 65 72 20 ing SABR easier
79a0: 74 68 61 6e 20 66 6f 72 20 6d 6f 73 74 20 6f 74 than for most ot
79b0: 68 65 72 20 50 44 50 2d 38 20 61 73 73 65 6d 62 her PDP-8 assemb
79c0: 6c 65 72 73 2c 20 62 75 74 20 62 65 63 61 75 73 lers, but becaus
79d0: 65 20 79 6f 75 20 63 61 6e 27 74 20 67 65 74 20 e you can't get
79e0: 61 20 77 68 6f 6c 65 20 6c 6f 74 20 6f 66 20 6f a whole lot of o
79f0: 70 74 69 6d 69 7a 61 74 69 6f 6e 20 73 6d 61 72 ptimization smar
7a00: 74 73 20 69 6e 74 6f 20 61 20 36 26 6e 62 73 70 ts into a 6 
7a10: 3b 6b 57 6f 72 64 20 70 72 6f 67 72 61 6d 2c 20 ;kWord program,
7a20: 74 68 65 20 6f 75 74 70 75 74 20 63 6f 64 65 20 the output code
7a30: 74 65 6e 64 73 20 74 6f 20 62 65 20 6c 65 73 73 tends to be less
7a40: 20 65 66 66 69 63 69 65 6e 74 20 74 68 61 6e 20 efficient than
7a50: 68 61 6e 64 2d 74 75 6e 65 64 20 63 6f 64 65 20 hand-tuned code
7a60: 66 6f 72 20 6f 74 68 65 72 20 61 73 73 65 6d 62 for other assemb
7a70: 6c 65 72 73 2e 0d 0a 0d 0a 59 6f 75 20 63 61 6e lers.....You can
7a80: 20 73 65 65 20 74 68 69 73 20 64 65 73 69 67 6e see this design
7a90: 20 64 65 63 69 73 69 6f 6e 20 69 6e 20 73 65 76 decision in sev
7aa0: 65 72 61 6c 20 6c 61 6e 67 75 61 67 65 20 64 69 eral language di
7ab0: 66 66 65 72 65 6e 63 65 73 20 72 65 6c 61 74 69 fferences relati
7ac0: 76 65 20 74 6f 20 50 41 4c 2d 49 49 49 20 6f 72 ve to PAL-III or
7ad0: 20 50 41 4c 38 3a 0d 0a 0d 0a 2a 20 20 20 4e 6f PAL8:....* No
7ae0: 20 60 46 49 45 4c 44 60 20 70 73 65 75 64 6f 2d `FIELD` pseudo-
7af0: 6f 70 3b 20 6e 6f 74 20 6e 65 65 64 65 64 2c 20 op; not needed,
7b00: 67 69 76 65 6e 20 72 65 6c 6f 63 61 74 61 62 6c given relocatabl
7b10: 65 20 6f 75 74 70 75 74 0d 0a 2a 20 20 20 54 68 e output..* Th
7b20: 65 20 60 50 41 47 45 60 20 70 73 65 75 64 6f 2d e `PAGE` pseudo-
7b30: 6f 70 20 74 61 6b 65 73 20 6e 6f 20 61 72 67 75 op takes no argu
7b40: 6d 65 6e 74 3a 20 69 74 20 73 69 6d 70 6c 79 20 ment: it simply
7b50: 66 6f 72 63 65 73 20 74 68 65 20 61 73 73 65 6d forces the assem
7b60: 62 6c 65 72 20 74 6f 20 67 6f 20 74 6f 20 74 68 bler to go to th
7b70: 65 20 6e 65 78 74 20 70 61 67 65 0d 0a 2a 20 20 e next page..*
7b80: 20 4f 66 66 2d 70 61 67 65 20 69 6e 64 69 72 65 Off-page indire
7b90: 63 74 69 6f 6e 20 69 73 20 61 6c 6c 6f 77 65 64 ction is allowed
7ba0: 3b 20 74 68 65 20 61 73 73 65 6d 62 6c 65 72 20 ; the assembler
7bb0: 77 69 6c 6c 20 67 65 6e 65 72 61 74 65 20 69 6e will generate in
7bc0: 73 74 72 75 63 74 69 6f 6e 73 20 74 6f 20 6a 75 structions to ju
7bd0: 6d 70 20 62 65 74 77 65 65 6e 20 70 61 67 65 73 mp between pages
7be0: 20 61 73 20 6e 65 65 64 65 64 0d 0a 2a 20 20 20 as needed..*
7bf0: 4e 6f 20 73 71 75 61 72 65 20 62 72 61 63 6b 65 No square bracke
7c00: 74 20 73 79 6e 74 61 78 20 66 6f 72 20 70 6c 61 t syntax for pla
7c10: 63 69 6e 67 20 6c 69 74 65 72 61 6c 73 20 6f 6e cing literals on
7c20: 20 70 61 67 65 20 7a 65 72 6f 0d 0a 2a 20 20 20 page zero..*
7c30: 53 65 76 65 72 61 6c 20 6e 65 77 20 70 73 65 75 Several new pseu
7c40: 64 6f 2d 6f 70 73 20 74 6f 20 67 65 74 20 61 72 do-ops to get ar
7c50: 6f 75 6e 64 20 74 68 65 20 66 61 6c 6c 6f 75 74 ound the fallout
7c60: 20 6f 66 20 61 6c 6c 20 74 68 69 73 20 70 72 6f of all this pro
7c70: 67 72 61 6d 6d 65 72 20 66 72 65 65 64 6f 6d 3a grammer freedom:
7c80: 0d 0a 20 20 20 20 2a 20 20 20 60 41 42 53 59 4d .. * `ABSYM
7c90: 60 3a 20 64 65 66 69 6e 65 20 61 20 73 79 6d 62 `: define a symb
7ca0: 6f 6c 69 63 20 6e 61 6d 65 20 66 6f 72 20 61 6e olic name for an
7cb0: 20 61 62 73 6f 6c 75 74 65 20 63 6f 72 65 20 6d absolute core m
7cc0: 65 6d 6f 72 79 20 6c 6f 63 61 74 69 6f 6e 0d 0a emory location..
7cd0: 20 20 20 20 2a 20 20 20 60 43 50 41 47 45 60 3a * `CPAGE`:
7ce0: 20 72 65 73 65 72 76 65 20 4e 20 77 6f 72 64 73 reserve N words
7cf0: 20 6f 66 20 63 6f 72 65 20 6f 6e 20 74 68 65 20 of core on the
7d00: 63 75 72 72 65 6e 74 20 70 61 67 65 20 69 66 20 current page if
7d10: 73 70 61 63 65 20 69 73 20 61 76 61 69 6c 61 62 space is availab
7d20: 6c 65 2c 20 65 6c 73 65 20 6e 65 78 74 20 70 61 le, else next pa
7d30: 67 65 0d 0a 20 20 20 20 2a 20 20 20 60 4c 41 50 ge.. * `LAP
7d40: 60 20 61 6e 64 20 60 45 41 50 60 3a 20 6c 65 61 ` and `EAP`: lea
7d50: 76 65 20 61 6e 64 20 72 65 2d 65 6e 74 65 72 20 ve and re-enter
7d60: 61 75 74 6f 6d 61 74 69 63 20 70 61 67 69 6e 67 automatic paging
7d70: 20 6d 6f 64 65 0d 0a 20 20 20 20 2a 20 20 20 60 mode.. * `
7d80: 4f 50 44 45 46 60 20 61 6e 64 20 60 53 4b 50 44 OPDEF` and `SKPD
7d90: 46 60 3a 20 64 65 66 69 6e 65 20 63 75 73 74 6f F`: define custo
7da0: 6d 20 6f 70 2d 63 6f 64 65 73 3b 20 60 49 4e 43 m op-codes; `INC
7db0: 60 20 6e 6f 6e 2d 73 6b 69 70 20 76 65 72 73 69 ` non-skip versi
7dc0: 6f 6e 20 6f 66 20 60 49 53 5a 60 20 70 72 65 64 on of `ISZ` pred
7dd0: 65 66 69 6e 65 64 0d 0a 20 20 20 20 2a 20 20 20 efined.. *
7de0: 60 52 45 4f 52 47 60 3a 20 73 69 6d 69 6c 61 72 `REORG`: similar
7df0: 20 74 6f 20 60 2a 60 20 66 65 61 74 75 72 65 20 to `*` feature
7e00: 6f 66 20 50 41 4c 2c 20 65 78 63 65 70 74 20 74 of PAL, except t
7e10: 68 61 74 20 69 74 27 73 20 66 6f 72 63 65 64 20 hat it's forced
7e20: 74 6f 20 74 68 65 20 74 6f 70 20 6f 66 20 74 68 to the top of th
7e30: 65 20 70 61 67 65 0d 0a 2a 20 20 20 41 72 69 74 e page..* Arit
7e40: 68 6d 65 74 69 63 20 65 78 70 72 65 73 73 69 6f hmetic expressio
7e50: 6e 73 20 62 61 6e 6e 65 64 20 69 6e 20 6f 70 65 ns banned in ope
7e60: 72 61 6e 64 73 3b 20 73 69 6d 70 6c 65 20 60 4e rands; simple `N
7e70: 2b 31 60 20 63 61 73 65 20 72 65 70 6c 61 63 65 +1` case replace
7e80: 64 20 62 79 20 74 68 65 20 60 23 60 20 66 65 61 d by the `#` fea
7e90: 74 75 72 65 0d 0a 0d 0a 59 6f 75 20 6d 61 79 20 ture....You may
7ea0: 62 65 20 73 75 72 70 72 69 73 65 64 20 74 6f 20 be surprised to
7eb0: 73 65 65 20 74 68 65 20 60 4f 50 44 45 46 60 20 see the `OPDEF`
7ec0: 61 6e 64 20 60 53 4b 50 44 46 60 20 70 73 65 75 and `SKPDF` pseu
7ed0: 64 6f 2d 6f 70 73 20 67 72 6f 75 70 65 64 20 61 do-ops grouped a
7ee0: 6d 6f 6e 67 20 74 68 65 73 65 20 63 6f 6e 73 65 mong these conse
7ef0: 71 75 65 6e 63 65 73 20 6f 66 20 74 68 65 20 77 quences of the w
7f00: 61 79 20 53 41 42 52 20 77 6f 72 6b 73 20 61 73 ay SABR works as
7f10: 20 63 6f 6d 70 61 72 65 64 20 74 6f 20 74 68 65 compared to the
7f20: 20 50 41 4c 20 74 79 70 65 20 61 73 73 65 6d 62 PAL type assemb
7f30: 6c 65 72 73 2e 20 54 68 69 73 20 69 73 20 62 65 lers. This is be
7f40: 63 61 75 73 65 20 74 68 65 20 50 41 4c 20 77 61 cause the PAL wa
7f50: 79 20 6f 66 20 64 65 66 69 6e 69 6e 67 20 63 75 y of defining cu
7f60: 73 74 6f 6d 20 6f 70 63 6f 64 65 73 20 28 65 2e stom opcodes (e.
7f70: 67 2e 20 60 44 56 49 3d 37 34 30 37 60 29 20 61 g. `DVI=7407`) a
7f80: 73 73 75 6d 65 73 20 74 68 65 20 70 72 6f 67 72 ssumes the progr
7f90: 61 6d 6d 65 72 20 6b 6e 6f 77 73 20 77 68 61 74 ammer knows what
7fa0: 20 73 68 65 20 69 73 20 64 6f 69 6e 67 20 77 69 she is doing wi
7fb0: 74 68 20 72 65 67 61 72 64 20 74 6f 20 77 68 65 th regard to whe
7fc0: 74 68 65 72 20 74 68 65 20 6f 70 63 6f 64 65 20 ther the opcode
7fd0: 63 61 6e 20 63 61 75 73 65 20 74 68 65 20 6e 65 can cause the ne
7fe0: 78 74 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 74 xt instruction t
7ff0: 6f 20 62 65 20 73 6b 69 70 70 65 64 2e 20 53 69 o be skipped. Si
8000: 6e 63 65 20 74 68 65 20 53 41 42 52 20 70 72 6f nce the SABR pro
8010: 67 72 61 6d 6d 65 72 20 67 65 6e 65 72 61 6c 6c grammer generall
8020: 79 20 64 6f 65 73 6e 27 74 20 6b 6e 6f 77 20 77 y doesn't know w
8030: 68 65 72 65 20 74 68 65 20 70 61 67 65 20 62 6f here the page bo
8040: 75 6e 64 61 72 69 65 73 20 61 72 65 2c 20 74 68 undaries are, th
8050: 61 74 20 6d 65 61 6e 73 20 73 68 65 20 63 61 6e at means she can
8060: 6e 6f 74 20 70 72 65 64 69 63 74 20 77 68 61 74 not predict what
8070: 20 63 65 72 74 61 69 6e 20 69 6e 73 74 72 75 63 certain instruc
8080: 74 69 6f 6e 73 20 77 69 6c 6c 20 6c 6f 6f 6b 20 tions will look
8090: 6c 69 6b 65 20 69 6e 20 74 68 65 20 66 69 6e 61 like in the fina
80a0: 6c 20 6d 61 63 68 69 6e 65 20 63 6f 64 65 2c 20 l machine code,
80b0: 61 6e 64 20 74 68 75 73 20 77 68 65 74 68 65 72 and thus whether
80c0: 20 61 20 73 6b 69 70 20 77 69 6c 6c 20 64 6f 20 a skip will do
80d0: 77 68 61 74 20 73 68 65 20 77 61 6e 74 73 20 69 what she wants i
80e0: 74 20 74 6f 2e 20 53 41 42 52 20 74 68 65 72 65 t to. SABR there
80f0: 66 6f 72 65 20 70 72 6f 76 69 64 65 73 20 74 77 fore provides tw
8100: 6f 20 64 69 66 66 65 72 65 6e 74 20 77 61 79 73 o different ways
8110: 20 74 6f 20 64 65 66 69 6e 65 20 63 75 73 74 6f to define custo
8120: 6d 20 6f 70 63 6f 64 65 73 2c 20 6f 6e 65 20 66 m opcodes, one f
8130: 6f 72 20 65 61 63 68 20 63 61 73 65 2c 20 77 68 or each case, wh
8140: 69 63 68 20 61 6c 6c 6f 77 73 20 74 68 65 20 70 ich allows the p
8150: 72 6f 67 72 61 6d 6d 65 72 20 74 6f 20 63 6c 75 rogrammer to clu
8160: 65 20 74 68 65 20 61 73 73 65 6d 62 6c 65 72 20 e the assembler
8170: 69 6e 74 6f 20 74 68 65 20 63 6f 72 72 65 63 74 into the correct
8180: 20 6f 75 74 70 75 74 2e 0d 0a 0d 0a 53 41 42 52 output.....SABR
8190: 20 68 61 73 20 61 20 62 75 6e 63 68 20 6f 66 20 has a bunch of
81a0: 70 73 65 75 64 6f 2d 6f 70 65 72 61 74 6f 72 73 pseudo-operators
81b0: 20 74 6f 20 73 75 70 70 6f 72 74 20 53 41 42 52 to support SABR
81c0: 27 73 20 72 6f 6c 65 20 61 73 20 74 68 65 20 62 's role as the b
81d0: 61 63 6b 20 65 6e 64 20 6f 66 20 4f 53 2f 38 20 ack end of OS/8
81e0: 46 4f 52 54 52 41 4e 20 49 49 3a 0d 0a 0d 0a 2a FORTRAN II:....*
81f0: 20 20 20 60 41 52 47 60 3a 20 64 65 66 69 6e 65 `ARG`: define
8200: 20 61 64 64 72 65 73 73 2f 61 72 67 75 6d 65 6e address/argumen
8210: 74 20 76 61 6c 75 65 20 70 61 69 72 73 20 66 6f t value pairs fo
8220: 72 20 63 61 6c 6c 69 6e 67 20 46 4f 52 54 52 41 r calling FORTRA
8230: 4e 20 73 75 62 72 6f 75 74 69 6e 65 73 0d 0a 2a N subroutines..*
8240: 20 20 20 60 43 41 4c 4c 60 3a 20 63 61 6c 6c 20 `CALL`: call
8250: 65 78 74 65 72 6e 61 6c 20 73 75 62 72 6f 75 74 external subrout
8260: 69 6e 65 0d 0a 2a 20 20 20 60 43 4f 4d 4d 4e 60 ine..* `COMMN`
8270: 3a 20 73 65 74 20 61 73 69 64 65 20 73 74 6f 72 : set aside stor
8280: 61 67 65 20 73 70 61 63 65 20 69 6e 20 66 69 65 age space in fie
8290: 6c 64 20 31 2c 20 77 68 69 63 68 20 4f 53 2f 38 ld 1, which OS/8
82a0: 20 46 4f 52 54 52 41 4e 20 49 49 20 75 73 65 73 FORTRAN II uses
82b0: 20 66 6f 72 20 60 43 4f 4d 4d 4f 4e 60 20 73 74 for `COMMON` st
82c0: 6f 72 61 67 65 0d 0a 2a 20 20 20 20 60 44 55 4d orage..* `DUM
82d0: 4d 59 60 3a 20 75 73 65 64 20 69 6e 20 74 68 65 MY`: used in the
82e0: 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 calling convent
82f0: 69 6f 6e 20 66 6f 72 20 46 4f 52 54 52 41 4e 20 ion for FORTRAN
8300: 73 75 62 72 6f 75 74 69 6e 65 73 0d 0a 2a 20 20 subroutines..*
8310: 20 60 45 4e 44 60 3a 20 6d 61 72 6b 20 65 6e 64 `END`: mark end
8320: 20 6f 66 20 70 72 6f 67 72 61 6d 20 6f 72 20 73 of program or s
8330: 75 62 70 72 6f 67 72 61 6d 3b 20 72 65 70 6c 61 ubprogram; repla
8340: 63 65 73 20 6d 65 61 6e 69 6e 67 20 6f 66 20 60 ces meaning of `
8350: 24 60 20 69 6e 20 50 41 4c 0d 0a 2a 20 20 20 60 $` in PAL..* `
8360: 45 4e 54 52 59 60 3a 20 6d 61 72 6b 20 73 75 62 ENTRY`: mark sub
8370: 70 72 6f 67 72 61 6d 20 65 6e 74 72 79 20 70 6f program entry po
8380: 69 6e 74 0d 0a 2a 20 20 20 60 46 4f 52 54 52 60 int..* `FORTR`
8390: 3a 20 61 73 73 65 6d 62 6c 65 20 46 4f 52 54 52 : assemble FORTR
83a0: 41 4e 20 74 61 70 65 0d 0a 2a 20 20 20 60 52 45 AN tape..* `RE
83b0: 54 52 4e 60 3a 20 72 65 74 75 72 6e 20 66 72 6f TRN`: return fro
83c0: 6d 20 65 78 74 65 72 6e 61 6c 20 73 75 62 72 6f m external subro
83d0: 75 74 69 6e 65 0d 0a 0d 0a 49 66 20 79 6f 75 20 utine....If you
83e0: 73 65 65 20 61 6e 79 20 6f 66 20 74 68 65 20 61 see any of the a
83f0: 62 6f 76 65 20 70 73 65 75 64 6f 2d 6f 70 73 20 bove pseudo-ops
8400: 69 6e 20 61 20 62 69 74 20 6f 66 20 63 6f 64 65 in a bit of code
8410: 20 74 68 61 74 20 6f 74 68 65 72 77 69 73 65 20 that otherwise
8420: 61 64 68 65 72 65 73 20 74 6f 20 74 68 65 20 50 adheres to the P
8430: 41 4c 2d 49 49 49 20 62 61 73 65 20 73 79 6e 74 AL-III base synt
8440: 61 78 2c 20 69 74 27 73 20 70 72 6f 62 61 62 6c ax, it's probabl
8450: 79 20 53 41 42 52 20 63 6f 64 65 2e 0d 0a 0d 0a y SABR code.....
8460: 4d 6f 72 65 20 66 65 61 74 75 72 65 73 20 65 78 More features ex
8470: 69 73 74 20 69 6e 20 53 41 42 52 20 77 68 69 63 ist in SABR whic
8480: 68 20 61 72 65 20 6e 6f 74 20 63 6f 6e 73 65 71 h are not conseq
8490: 75 65 6e 74 20 74 6f 20 61 6e 79 20 6f 66 20 74 uent to any of t
84a0: 68 65 20 61 62 6f 76 65 20 64 65 73 69 67 6e 20 he above design
84b0: 63 6f 6e 73 74 72 61 69 6e 74 73 3a 0d 0a 0d 0a constraints:....
84c0: 2a 20 20 20 60 41 43 48 60 2c 20 60 41 43 4d 60 * `ACH`, `ACM`
84d0: 2c 20 60 41 43 4c 60 3a 20 61 64 64 72 65 73 73 , `ACL`: address
84e0: 20 73 75 62 2d 77 6f 72 64 73 20 69 6e 20 61 20 sub-words in a
84f0: 6d 75 6c 74 69 2d 77 6f 72 64 20 76 61 6c 75 65 multi-word value
8500: 0d 0a 2a 20 20 20 60 44 60 20 70 72 65 66 69 78 ..* `D` prefix
8510: 20 6f 6e 20 6e 75 6d 65 72 69 63 20 63 6f 6e 73 on numeric cons
8520: 74 61 6e 74 73 20 63 61 75 73 65 20 64 65 63 69 tants cause deci
8530: 6d 61 6c 20 69 6e 74 65 72 70 72 65 74 61 74 69 mal interpretati
8540: 6f 6e 20 77 68 65 72 65 20 60 4f 43 54 41 4c 60 on where `OCTAL`
8550: 20 69 73 20 6f 74 68 65 72 77 69 73 65 20 69 6e is otherwise in
8560: 20 65 66 66 65 63 74 0d 0a 2a 20 20 20 60 4b 60 effect..* `K`
8570: 20 70 72 65 66 69 78 20 66 6f 72 20 6f 63 74 61 prefix for octa
8580: 6c 2d 69 6e 2d 64 65 63 69 6d 61 6c 2d 63 6f 6e l-in-decimal-con
8590: 74 65 78 74 20 66 6c 69 70 20 63 61 73 65 0d 0a text flip case..
85a0: 2a 20 20 20 60 49 46 60 3a 20 63 6f 6e 64 69 74 * `IF`: condit
85b0: 69 6f 6e 61 6c 6c 79 20 73 6b 69 70 20 61 73 73 ionally skip ass
85c0: 65 6d 62 6c 69 6e 67 20 73 6f 6d 65 20 6e 75 6d embling some num
85d0: 62 65 72 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f ber of the follo
85e0: 77 69 6e 67 20 69 6e 73 74 72 75 63 74 69 6f 6e wing instruction
85f0: 73 0d 0a 0d 0a 46 69 6e 61 6c 6c 79 2c 20 74 68 s....Finally, th
8600: 65 72 65 20 61 72 65 20 73 6f 6d 65 20 74 68 69 ere are some thi
8610: 6e 67 73 20 77 68 69 63 68 20 61 72 65 20 64 69 ngs which are di
8620: 66 66 65 72 65 6e 74 20 6f 72 20 6d 69 73 73 69 fferent or missi
8630: 6e 67 20 69 6e 20 53 41 42 52 20 61 73 20 63 6f ng in SABR as co
8640: 6d 70 61 72 65 64 20 74 6f 20 50 41 4c 38 3a 0d mpared to PAL8:.
8650: 0a 0d 0a 2a 20 20 20 60 42 4c 4f 43 4b 60 3a 20 ...* `BLOCK`:
8660: 73 61 6d 65 20 61 73 20 60 5a 42 4c 4f 43 4b 60 same as `ZBLOCK`
8670: 20 69 6e 20 50 41 4c 38 20 61 6e 64 20 50 41 4c in PAL8 and PAL
8680: 2d 44 0d 0a 2a 20 20 20 60 49 46 60 20 6e 6f 74 -D..* `IF` not
8690: 20 61 73 20 66 6c 65 78 69 62 6c 65 20 61 73 20 as flexible as
86a0: 60 49 46 44 45 46 60 2c 20 60 49 46 4e 44 45 46 `IFDEF`, `IFNDEF
86b0: 60 2c 20 60 49 46 5a 45 52 4f 60 20 61 6e 64 20 `, `IFZERO` and
86c0: 60 49 46 4e 5a 52 4f 60 0d 0a 2a 20 20 20 20 4d `IFNZRO`..* M
86d0: 69 73 73 69 6e 67 20 70 73 65 75 64 6f 2d 6f 70 issing pseudo-op
86e0: 73 3a 0d 0a 20 20 20 20 20 2a 20 20 20 60 44 45 s:.. * `DE
86f0: 56 49 43 45 60 20 61 6e 64 20 60 46 49 4c 45 4e VICE` and `FILEN
8700: 41 4d 45 60 3a 20 6e 6f 74 20 6e 65 65 64 65 64 AME`: not needed
8710: 2c 20 63 61 6c 6c 20 74 68 72 75 20 46 4f 52 54 , call thru FORT
8720: 52 41 4e 20 49 49 20 6c 69 62 72 61 72 79 20 69 RAN II library i
8730: 6e 73 74 65 61 64 20 6f 66 20 64 69 72 65 63 74 nstead of direct
8740: 20 74 6f 20 4f 53 2f 38 20 55 53 52 0d 0a 20 20 to OS/8 USR..
8750: 20 20 20 2a 20 20 20 60 44 54 4f 52 47 60 2c 20 * `DTORG`,
8760: 60 45 4a 45 43 54 60 2c 20 60 58 4c 49 53 54 60 `EJECT`, `XLIST`
8770: 2c 20 60 4e 4f 50 55 4e 43 48 60 2c 20 61 6e 64 , `NOPUNCH`, and
8780: 20 60 45 4e 50 55 4e 43 48 60 20 6f 75 74 70 75 `ENPUNCH` outpu
8790: 74 20 63 6f 6e 74 72 6f 6c 73 0d 0a 20 20 20 20 t controls..
87a0: 20 2a 20 20 20 60 52 45 4c 4f 43 60 3a 20 6e 6f * `RELOC`: no
87b0: 74 20 6e 65 65 64 65 64 2c 20 53 41 42 52 20 6f t needed, SABR o
87c0: 75 74 70 75 74 20 69 73 20 72 65 6c 6f 63 61 74 utput is relocat
87d0: 61 62 6c 65 20 62 79 20 64 65 66 61 75 6c 74 0d able by default.
87e0: 0a 0d 0a 41 20 70 72 6f 67 72 61 6d 6d 65 72 20 ...A programmer
87f0: 6d 61 79 20 75 73 65 20 53 41 42 52 20 6f 6e 65 may use SABR one
8800: 20 6f 66 20 74 68 72 65 65 20 77 61 79 73 3a 0d of three ways:.
8810: 0a 0d 0a 31 2e 20 20 49 6d 70 6c 69 63 69 74 6c ...1. Implicitl
8820: 79 20 61 73 20 74 68 65 20 62 61 63 6b 2d 65 6e y as the back-en
8830: 64 20 6f 66 20 74 68 65 20 4f 53 2f 38 20 46 4f d of the OS/8 FO
8840: 52 54 52 41 4e 20 49 49 20 63 6f 6d 70 69 6c 65 RTRAN II compile
8850: 72 0d 0a 32 2e 20 20 45 78 70 6c 69 63 69 74 6c r..2. Explicitl
8860: 79 20 76 69 61 20 69 6e 6c 69 6e 65 20 61 73 73 y via inline ass
8870: 65 6d 62 6c 79 20 63 6f 64 65 20 69 6e 20 61 20 embly code in a
8880: 46 4f 52 54 52 41 4e 20 49 49 20 70 72 6f 67 72 FORTRAN II progr
8890: 61 6d 0d 0a 33 2e 20 20 44 69 72 65 63 74 6c 79 am..3. Directly
88a0: 20 61 73 20 61 20 73 74 61 6e 64 61 6c 6f 6e 65 as a standalone
88b0: 20 61 73 73 65 6d 62 6c 65 72 2e 0d 0a 0d 0a 54 assembler.....T
88c0: 68 65 20 74 68 69 72 64 20 6f 70 74 69 6f 6e 20 he third option
88d0: 73 74 69 6c 6c 20 64 65 70 65 6e 64 73 20 75 70 still depends up
88e0: 6f 6e 20 46 4f 52 54 52 41 4e 20 49 49 20 62 65 on FORTRAN II be
88f0: 63 61 75 73 65 20 53 41 42 52 20 77 72 69 74 65 cause SABR write
8900: 73 20 69 74 73 20 60 2a 2e 52 4c 60 20 6f 75 74 s its `*.RL` out
8910: 70 75 74 20 66 69 6c 65 73 20 77 69 74 68 20 74 put files with t
8920: 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 he assumption th
8930: 61 74 20 74 68 65 79 20 77 69 6c 6c 20 62 65 20 at they will be
8940: 6c 69 6e 6b 65 64 20 74 6f 20 74 68 65 20 46 4f linked to the FO
8950: 52 54 52 41 4e 20 49 49 20 72 75 6e 74 69 6d 65 RTRAN II runtime
8960: 20 61 6e 64 20 6c 69 62 72 61 72 69 65 73 20 62 and libraries b
8970: 79 20 74 68 65 20 4f 53 2f 38 20 60 4c 4f 41 44 y the OS/8 `LOAD
8980: 45 52 60 20 70 72 6f 67 72 61 6d 2c 20 73 6f 20 ER` program, so
8990: 74 68 65 20 67 65 6e 65 72 61 74 65 64 20 63 6f the generated co
89a0: 64 65 20 6d 61 6b 65 73 20 75 73 65 20 6f 66 20 de makes use of
89b0: 74 68 6f 73 65 20 66 61 63 69 6c 69 74 69 65 73 those facilities
89c0: 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 53 41 42 . This means SAB
89d0: 52 20 70 72 6f 67 72 61 6d 73 20 63 61 6e 20 61 R programs can a
89e0: 6c 77 61 79 73 20 63 61 6c 6c 20 61 6e 79 20 46 lways call any F
89f0: 4f 52 54 52 41 4e 20 49 49 20 6c 69 62 72 61 72 ORTRAN II librar
8a00: 79 20 72 6f 75 74 69 6e 65 20 77 69 74 68 6f 75 y routine withou
8a10: 74 20 73 70 65 63 69 61 6c 20 65 66 66 6f 72 74 t special effort
8a20: 2c 20 73 69 6e 63 65 20 69 74 20 69 73 20 61 6c , since it is al
8a30: 77 61 79 73 20 67 6f 69 6e 67 20 74 6f 20 62 65 ways going to be
8a40: 20 6c 69 6e 6b 65 64 20 74 6f 20 69 74 20 62 79 linked to it by
8a50: 20 60 4c 4f 41 44 45 52 60 2e 0d 0a 0d 0a 5b 49 `LOADER`.....[I
8a60: 61 6e 20 53 63 68 6f 66 69 65 6c 64 27 73 20 43 an Schofield's C
8a70: 43 38 20 63 6f 6d 70 69 6c 65 72 5d 5b 63 63 38 C8 compiler][cc8
8a80: 5d 20 63 6f 6d 70 69 6c 65 72 20 6f 70 65 72 61 ] compiler opera
8a90: 74 65 73 20 6c 69 6b 65 20 74 68 65 20 4f 53 2f tes like the OS/
8aa0: 38 20 46 4f 52 54 52 41 4e 20 49 49 20 63 6f 6d 8 FORTRAN II com
8ab0: 70 69 6c 65 72 2c 20 65 6d 69 74 74 69 6e 67 20 piler, emitting
8ac0: 53 41 42 52 20 6f 75 74 70 75 74 20 61 6e 64 20 SABR output and
8ad0: 64 65 70 65 6e 64 69 6e 67 20 75 70 6f 6e 20 74 depending upon t
8ae0: 68 65 20 46 4f 52 54 52 41 4e 20 49 49 20 6c 69 he FORTRAN II li
8af0: 62 72 61 72 79 20 61 6e 64 20 72 75 6e 74 69 6d brary and runtim
8b00: 65 2e 20 49 6e 6c 69 6e 65 20 61 73 73 65 6d 62 e. Inline assemb
8b10: 6c 79 20 76 69 61 20 60 23 61 73 6d 60 20 69 73 ly via `#asm` is
8b20: 20 73 65 6e 74 20 61 73 2d 69 73 20 74 6f 20 53 sent as-is to S
8b30: 41 42 52 2e 0d 0a 0d 0a 5b 63 63 38 5d 3a 20 2f ABR.....[cc8]: /
8b40: 64 6f 63 2f 74 72 75 6e 6b 2f 73 72 63 2f 63 63 doc/trunk/src/cc
8b50: 38 2f 52 45 41 44 4d 45 2e 6d 64 0d 0a 5b 6d 6d 8/README.md..[mm
8b60: 38 5d 3a 20 68 74 74 70 73 3a 2f 2f 74 61 6e 67 8]: https://tang
8b70: 65 6e 74 73 6f 66 74 2e 63 6f 6d 2f 70 69 64 70 entsoft.com/pidp
8b80: 38 69 2f 77 69 6b 69 3f 6e 61 6d 65 3d 50 44 50 8i/wiki?name=PDP
8b90: 2d 38 2b 4d 65 6d 6f 72 79 2b 41 64 64 72 65 73 -8+Memory+Addres
8ba0: 73 69 6e 67 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 sing......## <a
8bb0: 69 64 3d 22 6d 61 63 72 65 6c 22 20 6e 61 6d 65 id="macrel" name
8bc0: 3d 22 6d 61 63 72 65 6c 2d 32 22 3e 3c 2f 61 3e ="macrel-2"></a>
8bd0: 4d 41 43 52 45 4c 0d 0a 0d 0a 7c 20 49 6e 74 72 MACREL....| Intr
8be0: 6f 64 75 63 65 64 20 7c 20 31 39 37 37 20 28 76 oduced | 1977 (v
8bf0: 31 29 2c 20 31 39 37 39 20 28 76 32 29 0d 0a 7c 1), 1979 (v2)..|
8c00: 20 4d 61 6e 75 61 6c 20 7c 20 5b 74 65 78 74 2c Manual | [text,
8c10: 20 33 38 34 20 6b 42 5d 28 68 74 74 70 3a 2f 2f 384 kB](http://
8c20: 76 61 6e 64 65 72 6d 61 72 6b 2e 63 68 2f 70 64 vandermark.ch/pd
8c30: 70 38 2f 75 70 6c 6f 61 64 73 2f 50 44 50 38 2f p8/uploads/PDP8/
8c40: 50 44 50 38 2e 4d 61 6e 75 61 6c 73 2f 41 41 2d PDP8.Manuals/AA-
8c50: 4a 30 37 33 41 2d 54 41 2e 74 78 74 29 0d 0a 7c J073A-TA.txt)..|
8c60: 20 44 65 6c 69 76 65 72 79 20 7c 20 44 45 43 74 Delivery | DECt
8c70: 61 70 65 20 66 6f 72 20 4f 53 2f 38 0d 0a 0d 0a ape for OS/8....
8c80: 41 6c 74 68 6f 75 67 68 20 74 68 69 73 20 69 73 Although this is
8c90: 20 74 65 63 68 6e 69 63 61 6c 6c 79 20 61 6e 6f technically ano
8ca0: 74 68 65 72 20 4f 53 2f 38 20 61 73 73 65 6d 62 ther OS/8 assemb
8cb0: 6c 65 72 2c 20 69 74 73 20 6c 61 74 65 20 69 6e ler, its late in
8cc0: 74 72 6f 64 75 63 74 69 6f 6e 2c 20 73 65 70 61 troduction, sepa
8cd0: 72 61 74 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 rate documentati
8ce0: 6f 6e 2c 20 61 6e 64 20 73 65 70 61 72 61 74 65 on, and separate
8cf0: 20 64 69 73 74 72 69 62 75 74 69 6f 6e 20 66 72 distribution fr
8d00: 6f 6d 20 4f 53 2f 38 20 70 72 6f 70 65 72 20 72 om OS/8 proper r
8d10: 65 71 75 69 72 65 20 74 68 61 74 20 77 65 20 63 equire that we c
8d20: 6f 6e 73 69 64 65 72 20 69 74 20 73 65 70 61 72 onsider it separ
8d30: 61 74 65 6c 79 2e 0d 0a 0d 0a 41 73 69 64 65 20 ately.....Aside
8d40: 66 72 6f 6d 20 4d 41 43 52 4f 2d 38 2c 20 6e 6f from MACRO-8, no
8d50: 6e 65 20 6f 66 20 74 68 65 20 61 73 73 65 6d 62 ne of the assemb
8d60: 6c 65 72 73 20 61 62 6f 76 65 20 73 75 70 70 6f lers above suppo
8d70: 72 74 20 6d 61 63 72 6f 73 2c 20 61 20 76 65 72 rt macros, a ver
8d80: 79 20 68 65 6c 70 66 75 6c 20 66 65 61 74 75 72 y helpful featur
8d90: 65 20 69 6e 20 61 73 73 65 6d 62 6c 79 20 6c 61 e in assembly la
8da0: 6e 67 75 61 67 65 20 70 72 6f 67 72 61 6d 6d 69 nguage programmi
8db0: 6e 67 2e 20 4d 41 43 52 45 4c 20 77 61 73 20 69 ng. MACREL was i
8dc0: 6e 74 65 6e 64 65 64 20 74 6f 20 62 65 20 44 45 ntended to be DE
8dd0: 43 27 73 20 6f 66 66 65 72 65 64 20 73 6f 6c 75 C's offered solu
8de0: 74 69 6f 6e 20 74 6f 20 74 68 65 20 77 61 6e 74 tion to the want
8df0: 20 6f 66 20 61 20 6d 61 63 72 6f 20 61 73 73 65 of a macro asse
8e00: 6d 62 6c 65 72 20 66 6f 72 20 74 68 65 20 50 44 mbler for the PD
8e10: 50 2d 38 20 69 6e 20 74 68 65 20 64 69 73 6b 2d P-8 in the disk-
8e20: 62 61 73 65 64 20 6f 70 65 72 61 74 69 6e 67 20 based operating
8e30: 73 79 73 74 65 6d 20 65 72 61 2e 0d 0a 0d 0a 55 system era.....U
8e40: 6e 66 6f 72 74 75 6e 61 74 65 6c 79 2c 20 69 74 nfortunately, it
8e50: 20 6e 65 76 65 72 20 61 63 68 69 65 76 65 64 20 never achieved
8e60: 77 69 64 65 73 70 72 65 61 64 20 75 73 65 20 6f widespread use o
8e70: 75 74 73 69 64 65 20 6f 66 20 44 45 43 2e 0d 0a utside of DEC...
8e80: 0d 0a 2a 2a 49 4e 43 4f 4d 50 4c 45 54 45 2a 2a ..**INCOMPLETE**
8e90: 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 ......## <a id="
8ea0: 73 6d 61 6c 22 20 6e 61 6d 65 3d 22 73 6d 61 6c smal" name="smal
8eb0: 38 22 3e 3c 2f 61 3e 53 4d 41 4c 38 0d 0a 0d 0a 8"></a>SMAL8....
8ec0: 7c 20 2a 2a 49 6e 74 72 6f 64 75 63 65 64 2a 2a | **Introduced**
8ed0: 20 7c 20 31 39 38 30 2c 20 32 30 31 32 0d 0a 7c | 1980, 2012..|
8ee0: 20 2a 2a 4d 61 6e 75 61 6c 2a 2a 20 7c 20 5b 53 **Manual** | [S
8ef0: 4d 41 4c 33 32 5d 5b 73 6d 61 6c 33 32 5d 2c 20 MAL32][smal32],
8f00: 5b 53 4d 41 4c 38 5d 5b 73 6d 61 6c 38 5d 0d 0a [SMAL8][smal8]..
8f10: 7c 20 2a 2a 44 65 6c 69 76 65 72 79 2a 2a 20 7c | **Delivery** |
8f20: 20 49 6e 74 65 72 6e 65 74 2c 20 73 61 6d 65 20 Internet, same
8f30: 6c 69 6e 6b 73 20 61 73 20 61 62 6f 76 65 0d 0a links as above..
8f40: 0d 0a 53 4d 41 4c 20 69 73 20 61 20 73 65 72 69 ..SMAL is a seri
8f50: 65 73 20 6f 66 20 63 72 6f 73 73 2d 61 73 73 65 es of cross-asse
8f60: 6d 62 6c 65 72 73 20 69 6e 69 74 69 61 6c 6c 79 mblers initially
8f70: 20 63 72 65 61 74 65 64 20 62 79 20 5b 44 6f 75 created by [Dou
8f80: 67 6c 61 73 20 57 2e 20 4a 6f 6e 65 73 5d 5b 64 glas W. Jones][d
8f90: 77 6a 5d 2e 20 48 65 20 77 72 6f 74 65 20 74 68 wj]. He wrote th
8fa0: 65 20 69 6e 69 74 69 61 6c 20 76 65 72 73 69 6f e initial versio
8fb0: 6e 73 20 69 6e 20 50 61 73 63 61 6c 20 62 75 74 ns in Pascal but
8fc0: 20 6c 61 74 65 72 20 70 6f 72 74 65 64 20 69 74 later ported it
8fd0: 20 74 6f 20 43 2e 20 53 6f 6d 65 20 76 65 72 73 to C. Some vers
8fe0: 69 6f 6e 73 20 6f 66 20 53 4d 41 4c 20 e2 80 94 ions of SMAL —
8ff0: 20 73 75 63 68 20 61 73 20 74 68 65 20 53 4d 41 such as the SMA
9000: 4c 33 32 20 76 65 72 73 69 6f 6e 20 6c 69 6e 6b L32 version link
9010: 65 64 20 61 62 6f 76 65 20 66 6f 72 20 69 74 73 ed above for its
9020: 20 77 6f 6e 64 65 72 66 75 6c 20 6d 61 6e 75 61 wonderful manua
9030: 6c 20 e2 80 94 20 61 72 65 20 6d 61 63 68 69 6e l — are machin
9040: 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 2c 20 6d e-independent, m
9050: 65 61 6e 69 6e 67 20 74 68 61 74 20 69 74 20 70 eaning that it p
9060: 72 6f 76 69 64 65 73 20 6f 6e 6c 79 20 74 68 65 rovides only the
9070: 20 73 6b 65 6c 65 74 6f 6e 20 6f 66 20 74 68 65 skeleton of the
9080: 20 61 73 73 65 6d 62 6c 65 72 2c 20 77 68 69 63 assembler, whic
9090: 68 20 69 73 20 6e 6f 74 20 61 62 6c 65 20 74 6f h is not able to
90a0: 20 67 65 6e 65 72 61 74 65 20 63 6f 64 65 20 66 generate code f
90b0: 6f 72 20 61 6e 79 20 70 61 72 74 69 63 75 6c 61 or any particula
90c0: 72 20 6d 61 63 68 69 6e 65 2e 20 4f 74 68 65 72 r machine. Other
90d0: 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 53 4d 41 versions of SMA
90e0: 4c 20 77 65 72 65 20 74 61 72 67 65 74 65 64 20 L were targeted
90f0: 61 74 20 73 70 65 63 69 66 69 63 20 6d 61 63 68 at specific mach
9100: 69 6e 65 73 2c 20 6d 6f 73 74 6c 79 20 38 2d 62 ines, mostly 8-b
9110: 69 74 20 6d 69 63 72 6f 63 6f 6e 74 72 6f 6c 6c it microcontroll
9120: 65 72 73 2e 20 4f 64 64 6c 79 20 65 6e 6f 75 67 ers. Oddly enoug
9130: 68 2c 20 44 72 2e 20 4a 6f 6e 65 73 20 64 69 64 h, Dr. Jones did
9140: 20 6e 6f 74 20 62 61 73 65 20 68 69 73 20 60 70 not base his `p
9150: 61 6c 2e 63 60 20 50 44 50 2d 38 20 63 72 6f 73 al.c` PDP-8 cros
9160: 73 2d 61 73 73 65 6d 62 6c 65 72 20 75 70 6f 6e s-assembler upon
9170: 20 53 4d 41 4c 2e 20 28 53 65 65 20 5b 70 61 6c SMAL. (See [pal
9180: 62 61 72 74 5d 28 23 70 61 6c 62 61 72 74 29 20 bart](#palbart)
9190: 62 65 6c 6f 77 20 66 6f 72 20 6d 6f 72 65 20 6f below for more o
91a0: 6e 20 74 68 61 74 20 74 68 72 65 61 64 20 6f 66 n that thread of
91b0: 20 68 69 73 74 6f 72 79 2e 29 0d 0a 0d 0a 56 69 history.)....Vi
91c0: 6e 63 65 6e 74 20 53 6c 79 6e 67 73 74 61 64 20 ncent Slyngstad
91d0: 74 6f 6f 6b 20 75 70 20 74 68 65 20 63 68 61 6c took up the chal
91e0: 6c 65 6e 67 65 20 6f 66 20 74 61 72 67 65 74 69 lenge of targeti
91f0: 6e 67 20 53 4d 41 4c 20 61 74 20 74 68 65 20 50 ng SMAL at the P
9200: 44 50 2d 38 2c 20 70 72 6f 64 75 63 69 6e 67 20 DP-8, producing
9210: 5b 53 4d 41 4c 38 5d 5b 73 6d 61 6c 38 5d 2c 20 [SMAL8][smal8],
9220: 6f 66 66 65 72 69 6e 67 20 69 74 20 61 73 20 70 offering it as p
9230: 61 72 74 20 6f 66 20 68 69 73 20 5b 43 20 63 6f art of his [C co
9240: 6d 70 69 6c 65 72 20 73 79 73 74 65 6d 20 66 6f mpiler system fo
9250: 72 20 74 68 65 20 50 44 50 2d 38 5d 28 68 74 74 r the PDP-8](htt
9260: 70 3a 2f 2f 73 6f 2d 6d 75 63 68 2d 73 74 75 66 p://so-much-stuf
9270: 66 2e 63 6f 6d 2f 70 64 70 38 2f 43 2f 43 2e 70 f.com/pdp8/C/C.p
9280: 68 70 29 2e 0d 0a 0d 0a 53 6f 6d 65 20 6f 66 20 hp).....Some of
9290: 74 68 65 20 64 69 66 66 65 72 65 6e 63 65 73 20 the differences
92a0: 6c 69 73 74 65 64 20 62 65 6c 6f 77 20 6d 65 61 listed below mea
92b0: 6e 20 74 68 61 74 20 61 6c 74 68 6f 75 67 68 20 n that although
92c0: 74 68 65 20 62 61 73 69 63 20 73 79 6e 74 61 78 the basic syntax
92d0: 20 6f 66 20 53 4d 41 4c 38 20 69 73 20 73 6f 6c of SMAL8 is sol
92e0: 69 64 6c 79 20 69 6e 20 74 68 65 20 5b 50 41 4c idly in the [PAL
92f0: 2d 49 49 49 5d 28 23 70 61 6c 2d 69 69 69 29 20 -III](#pal-iii)
9300: 66 61 6d 69 6c 79 2c 20 53 4d 41 4c 38 20 69 73 family, SMAL8 is
9310: 20 6c 69 6b 65 6c 79 20 74 6f 20 61 73 73 65 6d likely to assem
9320: 62 6c 65 20 6f 6e 6c 79 20 72 65 6c 61 74 69 76 ble only relativ
9330: 65 6c 79 20 73 69 6d 70 6c 65 20 50 41 4c 20 70 ely simple PAL p
9340: 72 6f 67 72 61 6d 73 20 61 73 2d 69 73 2e 20 54 rograms as-is. T
9350: 68 65 20 6d 6f 73 74 20 63 72 69 74 69 63 61 6c he most critical
9360: 20 64 69 66 66 65 72 65 6e 63 65 73 20 61 72 65 differences are
9370: 20 74 68 65 20 6c 6f 73 73 20 6f 66 20 69 6e 6c the loss of inl
9380: 69 6e 65 20 6c 69 74 65 72 61 6c 73 20 61 6e 64 ine literals and
9390: 20 74 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 the difference
93a0: 69 6e 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 61 in conditional a
93b0: 73 73 65 6d 62 6c 79 2e 20 4e 65 77 20 63 6f 64 ssembly. New cod
93c0: 65 20 77 6f 75 6c 64 20 73 69 6d 70 6c 79 20 62 e would simply b
93d0: 65 20 77 72 69 74 74 65 6e 20 74 6f 20 61 76 6f e written to avo
93e0: 69 64 20 74 68 65 73 65 20 70 72 6f 62 6c 65 6d id these problem
93f0: 73 2e 0d 0a 0d 0a 49 66 20 79 6f 75 20 72 65 61 s.....If you rea
9400: 64 20 74 68 72 6f 75 67 68 20 74 68 65 20 53 4d d through the SM
9410: 41 4c 33 32 20 6d 61 6e 75 61 6c 20 61 6e 64 20 AL32 manual and
9420: 73 65 65 20 64 69 66 66 65 72 65 6e 63 65 73 20 see differences
9430: 72 65 6c 61 74 69 76 65 20 74 6f 20 50 41 4c 20 relative to PAL
9440: 73 79 6e 74 61 78 20 62 75 74 20 64 6f 6e 27 74 syntax but don't
9450: 20 73 65 65 20 74 68 65 20 64 69 66 66 65 72 65 see the differe
9460: 6e 63 65 20 64 6f 63 75 6d 65 6e 74 65 64 20 62 nce documented b
9470: 65 6c 6f 77 2c 20 63 68 61 6e 63 65 73 20 61 72 elow, chances ar
9480: 65 20 74 68 61 74 20 56 69 6e 63 65 6e 74 20 53 e that Vincent S
9490: 6c 79 6e 67 73 74 61 64 20 66 69 78 65 64 20 74 lyngstad fixed t
94a0: 68 65 73 65 20 64 69 66 66 65 72 65 6e 63 65 73 hese differences
94b0: 20 69 6e 20 53 4d 41 4c 38 2e 20 46 6f 72 20 65 in SMAL8. For e
94c0: 78 61 6d 70 6c 65 2c 20 6c 69 6b 65 20 50 41 4c xample, like PAL
94d0: 38 20 62 75 74 20 75 6e 6c 69 6b 65 20 53 4d 41 8 but unlike SMA
94e0: 4c 33 32 2c 20 53 4d 41 4c 38 20 75 73 65 73 20 L32, SMAL8 uses
94f0: 60 2f 60 20 74 6f 20 69 6e 74 72 6f 64 75 63 65 `/` to introduce
9500: 20 63 6f 6d 6d 65 6e 74 73 2c 20 64 65 66 61 75 comments, defau
9510: 6c 74 73 20 74 6f 20 6f 63 74 61 6c 2c 20 61 6c lts to octal, al
9520: 6c 6f 77 73 20 60 2a 60 20 74 6f 20 73 65 74 20 lows `*` to set
9530: 74 68 65 20 6f 75 74 70 75 74 20 6f 72 69 67 69 the output origi
9540: 6e 2c 20 61 6e 64 20 75 73 65 73 20 74 68 65 20 n, and uses the
9550: 60 45 4a 45 43 54 60 20 70 73 65 75 64 6f 2d 6f `EJECT` pseudo-o
9560: 70 20 72 61 74 68 65 72 20 74 68 61 6e 20 60 50 p rather than `P
9570: 41 47 45 60 20 74 6f 20 70 75 74 20 61 20 70 61 AGE` to put a pa
9580: 67 65 20 62 72 65 61 6b 20 69 6e 74 6f 20 74 68 ge break into th
9590: 65 20 6f 75 74 70 75 74 20 6c 69 73 74 69 6e 67 e output listing
95a0: 2e 0d 0a 0d 0a 53 4d 41 4c 38 20 68 61 73 20 6d .....SMAL8 has m
95b0: 61 6e 79 20 66 65 61 74 75 72 65 20 61 64 64 69 any feature addi
95c0: 74 69 6f 6e 73 20 72 65 6c 61 74 69 76 65 20 74 tions relative t
95d0: 6f 20 50 41 4c 38 3a 0d 0a 0d 0a 2a 20 20 20 72 o PAL8:....* r
95e0: 65 6c 6f 63 61 74 61 62 6c 65 20 6f 75 74 70 75 elocatable outpu
95f0: 74 0d 0a 2a 20 20 20 60 4d 41 43 52 4f 60 20 61 t..* `MACRO` a
9600: 6e 64 20 60 45 4e 44 4d 41 43 60 3a 20 4d 41 43 nd `ENDMAC`: MAC
9610: 52 45 4c 2d 6c 69 6b 65 20 6d 61 63 72 6f 20 66 REL-like macro f
9620: 65 61 74 75 72 65 0d 0a 2a 20 20 20 60 43 4f 4d eature..* `COM
9630: 4d 4f 4e 60 2c 20 60 45 58 54 45 52 4e 41 4c 60 MON`, `EXTERNAL`
9640: 2c 20 60 47 4c 4f 42 41 4c 60 3a 20 6d 6f 64 75 , `GLOBAL`: modu
9650: 6c 65 20 61 6e 64 20 6c 69 6e 6b 61 67 65 20 73 le and linkage s
9660: 75 70 70 6f 72 74 0d 0a 2a 20 20 20 60 3c 60 20 upport..* `<`
9670: 61 6e 64 20 60 3e 60 20 63 6f 6d 70 61 72 69 73 and `>` comparis
9680: 6f 6e 20 6f 70 65 72 61 74 6f 72 73 20 69 6e 20 on operators in
9690: 65 78 70 72 65 73 73 69 6f 6e 73 0d 0a 2a 20 20 expressions..*
96a0: 20 60 3c 3c 60 2c 20 60 3e 3e 60 2c 20 61 6e 64 `<<`, `>>`, and
96b0: 20 60 3e 3e 3e 60 20 62 69 74 20 73 68 69 66 74 `>>>` bit shift
96c0: 69 6e 67 20 6f 70 65 72 61 74 6f 72 73 20 69 6e ing operators in
96d0: 20 65 78 70 72 65 73 73 69 6f 6e 73 0d 0a 2a 20 expressions..*
96e0: 20 20 64 6f 75 62 6c 65 20 61 6e 64 20 73 69 6e double and sin
96f0: 67 6c 65 20 71 75 6f 74 65 64 20 73 74 72 69 6e gle quoted strin
9700: 67 73 3b 20 50 41 4c 38 20 73 75 70 70 6f 72 74 gs; PAL8 support
9710: 73 20 6f 6e 6c 79 20 64 6f 75 62 6c 65 2d 71 75 s only double-qu
9720: 6f 74 65 64 20 73 69 6e 67 6c 65 2d 63 68 61 72 oted single-char
9730: 61 63 74 65 72 20 63 6f 6e 73 74 61 6e 74 73 0d acter constants.
9740: 0a 2a 20 20 20 6c 61 62 65 6c 73 20 73 65 70 61 .* labels sepa
9750: 72 61 74 65 64 20 66 72 6f 6d 20 74 68 65 20 63 rated from the c
9760: 6f 64 65 20 62 79 20 65 69 74 68 65 72 20 63 6f ode by either co
9770: 6d 6d 61 20 28 50 41 4c 38 20 73 74 79 6c 65 29 mma (PAL8 style)
9780: 20 6f 72 20 63 6f 6c 6f 6e 20 28 53 4d 41 4c 33 or colon (SMAL3
9790: 32 20 73 74 79 6c 65 29 0d 0a 2a 20 20 20 61 72 2 style)..* ar
97a0: 62 69 74 72 61 72 79 20 72 61 64 69 63 65 73 20 bitrary radices
97b0: 69 6e 20 6e 75 6d 65 72 69 63 20 63 6f 6e 73 74 in numeric const
97c0: 61 6e 74 73 20 75 73 69 6e 67 20 60 72 23 6e 60 ants using `r#n`
97d0: 20 73 79 6e 74 61 78 2c 20 77 68 69 63 68 20 67 syntax, which g
97e0: 69 76 65 73 20 60 6e 60 20 62 61 73 65 20 60 72 ives `n` base `r
97f0: 60 0d 0a 2a 20 20 20 74 68 65 20 26 62 72 76 62 `..* the &brvb
9800: 61 72 3b 20 6f 70 65 72 61 74 6f 72 20 69 73 20 ar; operator is
9810: 61 6c 6c 6f 77 65 64 20 61 73 20 61 6e 20 61 6c allowed as an al
9820: 69 61 73 20 66 6f 72 20 50 41 4c 38 27 73 20 60 ias for PAL8's `
9830: 21 60 20 66 6f 72 6d 20 6f 66 20 42 6f 6f 6c 65 !` form of Boole
9840: 61 6e 20 4f 52 0d 0a 2a 20 20 20 65 6e 64 20 61 an OR..* end a
9850: 73 73 65 6d 62 6c 79 20 77 69 74 68 20 65 69 74 ssembly with eit
9860: 68 65 72 20 60 24 60 20 20 28 50 41 4c 38 20 73 her `$` (PAL8 s
9870: 74 79 6c 65 29 20 6f 72 20 60 45 4e 44 60 20 28 tyle) or `END` (
9880: 5b 53 41 42 52 5d 28 23 73 61 62 72 29 20 73 74 [SABR](#sabr) st
9890: 79 6c 65 29 0d 0a 2a 20 20 20 60 41 42 53 60 2c yle)..* `ABS`,
98a0: 20 60 44 45 46 60 2c 20 60 46 57 44 60 2c 20 60 `DEF`, `FWD`, `
98b0: 4c 45 4e 60 2c 20 60 52 45 4c 60 2c 20 61 6e 64 LEN`, `REL`, and
98c0: 20 60 54 59 50 60 20 61 73 73 65 6d 62 6c 79 2d `TYP` assembly-
98d0: 74 69 6d 65 20 66 75 6e 63 74 69 6f 6e 73 0d 0a time functions..
98e0: 2a 20 20 20 60 54 49 54 4c 45 60 20 61 6e 64 20 * `TITLE` and
98f0: 60 53 55 42 54 49 54 4c 45 60 20 70 73 65 75 64 `SUBTITLE` pseud
9900: 6f 2d 6f 70 73 20 66 6f 72 20 73 65 74 74 69 6e o-ops for settin
9910: 67 20 6c 69 73 74 69 6e 67 20 70 61 67 65 20 74 g listing page t
9920: 69 74 6c 65 73 0d 0a 2a 20 20 20 60 41 53 43 49 itles..* `ASCI
9930: 49 60 20 70 73 65 75 64 6f 2d 6f 70 3a 20 6c 69 I` pseudo-op: li
9940: 6b 65 20 60 54 45 58 54 60 20 62 75 74 20 73 74 ke `TEXT` but st
9950: 6f 72 65 73 20 72 65 61 6c 20 75 6e 70 61 63 6b ores real unpack
9960: 65 64 20 41 53 43 49 49 0d 0a 2a 20 20 20 6d 61 ed ASCII..* ma
9970: 6e 79 20 6d 6f 72 65 20 70 73 65 75 64 6f 2d 69 ny more pseudo-i
9980: 6e 73 74 72 75 63 74 69 6f 6e 73 20 64 65 66 69 nstructions defi
9990: 6e 65 64 3a 20 44 46 33 32 2c 20 44 45 43 74 61 ned: DF32, DECta
99a0: 70 65 2c 20 65 74 63 2e 0d 0a 0d 0a 53 6f 6d 65 pe, etc.....Some
99b0: 20 74 68 69 6e 67 73 20 61 72 65 20 73 69 6d 70 things are simp
99c0: 6c 79 20 64 69 66 66 65 72 65 6e 74 20 69 6e 20 ly different in
99d0: 53 4d 41 4c 38 20 61 73 20 63 6f 6d 70 61 72 65 SMAL8 as compare
99e0: 64 20 74 6f 20 50 41 4c 38 3a 0d 0a 0d 0a 2a 20 d to PAL8:....*
99f0: 20 20 70 6f 77 65 72 66 75 6c 20 65 78 70 72 65 powerful expre
9a00: 73 73 69 6f 6e 73 20 69 6e 20 53 4d 41 4c 20 61 ssions in SMAL a
9a10: 6c 6c 6f 77 20 6d 6f 64 65 72 6e 20 60 49 46 60 llow modern `IF`
9a20: 2c 20 60 45 4c 53 45 60 2c 20 60 45 4c 53 45 49 , `ELSE`, `ELSEI
9a30: 46 60 20 61 6e 64 20 60 45 4e 44 49 46 60 20 66 F` and `ENDIF` f
9a40: 6f 72 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 61 or conditional a
9a50: 73 73 65 6d 62 6c 79 0d 0a 2a 20 20 20 60 50 41 ssembly..* `PA
9a60: 47 45 60 20 74 61 6b 65 73 20 6e 6f 20 61 72 67 GE` takes no arg
9a70: 75 6d 65 6e 74 2c 20 61 73 20 69 6e 20 5b 53 41 ument, as in [SA
9a80: 42 52 5d 28 23 73 61 62 72 29 0d 0a 0d 0a 54 68 BR](#sabr)....Th
9a90: 65 72 65 20 61 72 65 20 61 20 66 65 77 20 66 65 ere are a few fe
9aa0: 61 74 75 72 65 73 20 72 65 6d 6f 76 65 64 20 72 atures removed r
9ab0: 65 6c 61 74 69 76 65 20 74 6f 20 50 41 4c 38 3a elative to PAL8:
9ac0: 0d 0a 0d 0a 2a 20 20 20 6d 75 6c 74 69 70 6c 69 ....* multipli
9ad0: 63 61 74 69 6f 6e 20 69 73 20 6e 6f 74 20 61 6c cation is not al
9ae0: 6c 6f 77 65 64 20 69 6e 20 65 78 70 72 65 73 73 lowed in express
9af0: 69 6f 6e 73 3b 20 60 2a 60 20 77 61 73 20 67 69 ions; `*` was gi
9b00: 76 65 6e 20 74 68 65 20 50 41 4c 38 20 6d 65 61 ven the PAL8 mea
9b10: 6e 69 6e 67 2c 20 61 6e 64 20 60 5e 60 20 69 73 ning, and `^` is
9b20: 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 not implemented
9b30: 0d 0a 2a 20 20 20 64 69 76 69 73 69 6f 6e 20 69 ..* division i
9b40: 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 69 6e s not allowed in
9b50: 20 65 78 70 72 65 73 73 69 6f 6e 73 3b 20 60 2f expressions; `/
9b60: 60 20 77 61 73 20 67 69 76 65 6e 20 74 68 65 20 ` was given the
9b70: 50 41 4c 38 20 6d 65 61 6e 69 6e 67 2c 20 61 6e PAL8 meaning, an
9b80: 64 20 60 25 60 20 69 73 20 6e 6f 74 20 69 6d 70 d `%` is not imp
9b90: 6c 65 6d 65 6e 74 65 64 0d 0a 2a 20 20 20 6e 65 lemented..* ne
9ba0: 69 74 68 65 72 20 74 68 65 20 60 28 4e 29 60 20 ither the `(N)`
9bb0: 6e 6f 72 20 60 5b 4e 5d 60 20 73 79 6e 74 61 78 nor `[N]` syntax
9bc0: 65 73 20 66 6f 72 20 69 6e 6c 69 6e 65 20 6c 69 es for inline li
9bd0: 74 65 72 61 6c 73 20 77 6f 72 6b 3b 20 70 61 72 terals work; par
9be0: 65 6e 73 20 75 73 65 64 20 66 6f 72 20 67 72 6f ens used for gro
9bf0: 75 70 73 20 61 6e 64 20 6c 69 73 74 73 20 69 6e ups and lists in
9c00: 73 74 65 61 64 0d 0a 2a 20 20 20 73 6f 6d 65 20 stead..* some
9c10: 49 4f 54 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 IOT instructions
9c20: 20 50 41 4c 38 20 6b 6e 6f 77 73 20 64 6f 20 6e PAL8 knows do n
9c30: 6f 74 20 68 61 76 65 20 70 72 65 64 65 66 69 6e ot have predefin
9c40: 65 64 20 73 79 6d 62 6f 6c 73 3a 20 60 4b 49 45 ed symbols: `KIE
9c50: 60 2c 20 60 52 50 45 60 2c 20 65 74 63 2e 0d 0a `, `RPE`, etc...
9c60: 0d 0a 54 68 65 20 64 61 74 61 20 73 74 6f 72 61 ..The data stora
9c70: 67 65 20 73 70 65 63 69 66 69 65 72 20 66 65 61 ge specifier fea
9c80: 74 75 72 65 20 6f 66 20 53 4d 41 4c 33 32 20 77 ture of SMAL32 w
9c90: 61 73 20 72 65 6d 6f 76 65 64 20 69 6e 20 53 4d as removed in SM
9ca0: 41 4c 38 2c 20 73 69 6e 63 65 20 69 74 20 64 6f AL8, since it do
9cb0: 65 73 6e 27 74 20 6d 61 6b 65 20 6d 75 63 68 20 esn't make much
9cc0: 73 65 6e 73 65 20 69 6e 20 74 68 65 20 31 32 2d sense in the 12-
9cd0: 62 69 74 20 77 6f 72 6c 64 20 6f 66 20 74 68 65 bit world of the
9ce0: 20 50 44 50 2d 38 2e 20 28 54 68 61 74 20 69 73 PDP-8. (That is
9cf0: 2c 20 74 68 65 20 62 79 74 65 20 28 60 42 60 29 , the byte (`B`)
9d00: 2c 20 68 61 6c 66 77 6f 72 64 20 28 60 48 60 29 , halfword (`H`)
9d10: 2c 20 74 68 72 65 65 77 6f 72 64 20 28 60 54 60 , threeword (`T`
9d20: 29 2c 20 61 6e 64 20 66 75 6c 6c 77 6f 72 64 20 ), and fullword
9d30: 28 60 57 60 29 20 70 73 65 75 64 6f 2d 6f 70 73 (`W`) pseudo-ops
9d40: 2e 29 20 55 73 65 20 60 44 41 54 41 60 20 69 6e .) Use `DATA` in
9d50: 73 74 65 61 64 2e 0d 0a 0d 0a 5b 64 77 6a 5d 3a stead.....[dwj]:
9d60: 20 68 74 74 70 3a 2f 2f 68 6f 6d 65 70 61 67 65 http://homepage
9d70: 2e 64 69 76 6d 73 2e 75 69 6f 77 61 2e 65 64 75 .divms.uiowa.edu
9d80: 2f 7e 6a 6f 6e 65 73 2f 0d 0a 5b 73 6d 61 6c 38 /~jones/..[smal8
9d90: 5d 3a 20 68 74 74 70 3a 2f 2f 73 6f 2d 6d 75 63 ]: http://so-muc
9da0: 68 2d 73 74 75 66 66 2e 63 6f 6d 2f 70 64 70 38 h-stuff.com/pdp8
9db0: 2f 43 2f 41 73 73 65 6d 62 6c 65 72 2e 70 68 70 /C/Assembler.php
9dc0: 0d 0a 5b 73 6d 61 6c 33 32 5d 3a 20 68 74 74 70 ..[smal32]: http
9dd0: 3a 2f 2f 68 6f 6d 65 70 61 67 65 2e 64 69 76 6d ://homepage.divm
9de0: 73 2e 75 69 6f 77 61 2e 65 64 75 2f 7e 6a 6f 6e s.uiowa.edu/~jon
9df0: 65 73 2f 63 72 6f 73 73 2f 73 6d 61 6c 33 32 2f es/cross/smal32/
9e00: 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 ......## <a id="
9e10: 70 61 6c 62 61 72 74 22 3e 3c 2f 61 3e 70 61 6c palbart"></a>pal
9e20: 62 61 72 74 0d 0a 0d 0a 7c 20 2a 2a 49 6e 74 72 bart....| **Intr
9e30: 6f 64 75 63 65 64 2a 2a 20 7c 20 31 39 39 36 0d oduced** | 1996.
9e40: 0a 7c 20 2a 2a 4d 61 6e 75 61 6c 2a 2a 20 7c 20 .| **Manual** |
9e50: 5b 6d 61 6e 20 70 61 67 65 5d 28 68 74 74 70 3a [man page](http:
9e60: 2f 2f 6d 61 6e 70 61 67 65 73 2e 75 62 75 6e 74 //manpages.ubunt
9e70: 75 2e 63 6f 6d 2f 6d 61 6e 70 61 67 65 73 2f 61 u.com/manpages/a
9e80: 72 74 66 75 6c 2f 6d 61 6e 31 2f 70 61 6c 62 61 rtful/man1/palba
9e90: 72 74 2e 31 2e 68 74 6d 6c 29 0d 0a 7c 20 2a 2a rt.1.html)..| **
9ea0: 44 65 6c 69 76 65 72 79 2a 2a 20 7c 20 49 6e 74 Delivery** | Int
9eb0: 65 72 6e 65 74 2c 20 50 69 44 50 2d 38 2f 49 20 ernet, PiDP-8/I
9ec0: 70 72 6f 6a 65 63 74 0d 0a 0d 0a 60 70 61 6c 62 project....`palb
9ed0: 61 72 74 60 20 69 73 20 61 20 70 6f 70 75 6c 61 art` is a popula
9ee0: 72 20 66 6f 72 6b 20 6f 66 20 74 68 65 20 60 70 r fork of the `p
9ef0: 61 6c 2e 63 60 20 61 73 73 65 6d 62 6c 65 72 20 al.c` assembler
9f00: 62 79 20 5b 44 6f 75 67 6c 61 73 20 57 2e 20 4a by [Douglas W. J
9f10: 6f 6e 65 73 5d 28 68 74 74 70 3a 2f 2f 68 6f 6d ones](http://hom
9f20: 65 70 61 67 65 2e 64 69 76 6d 73 2e 75 69 6f 77 epage.divms.uiow
9f30: 61 2e 65 64 75 2f 7e 6a 6f 6e 65 73 2f 29 20 61 a.edu/~jones/) a
9f40: 6e 64 20 52 69 63 68 20 43 6f 6f 6e 2c 20 6f 72 nd Rich Coon, or
9f50: 69 67 69 6e 61 6c 6c 79 20 73 70 75 6e 20 6f 66 iginally spun of
9f60: 66 20 62 79 20 47 61 72 79 20 41 2e 20 4d 65 73 f by Gary A. Mes
9f70: 73 65 6e 62 72 69 6e 6b 20 e2 80 94 20 61 6e 64 senbrink — and
9f80: 20 6c 61 74 65 72 20 65 6e 68 61 6e 63 65 64 20 later enhanced
9f90: 62 79 20 73 65 76 65 72 61 6c 20 6f 74 68 65 72 by several other
9fa0: 73 20 e2 80 94 20 74 6f 20 73 75 70 70 6f 72 74 s — to support
9fb0: 20 74 68 65 20 66 6c 65 65 74 20 6f 66 20 50 44 the fleet of PD
9fc0: 50 2d 38 2f 65 20 63 6f 6d 70 75 74 65 72 73 20 P-8/e computers
9fd0: 69 6e 20 74 68 65 20 5b 42 61 79 20 41 72 65 61 in the [Bay Area
9fe0: 20 52 61 70 69 64 20 54 72 61 6e 73 69 74 5d 28 Rapid Transit](
9ff0: 68 74 74 70 73 3a 2f 2f 65 6e 2e 77 69 6b 69 70 https://en.wikip
a000: 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 42 61 edia.org/wiki/Ba
a010: 79 5f 41 72 65 61 5f 52 61 70 69 64 5f 54 72 61 y_Area_Rapid_Tra
a020: 6e 73 69 74 29 20 73 79 73 74 65 6d 3b 20 74 68 nsit) system; th
a030: 75 73 20 74 68 65 20 6e 61 6d 65 2e 0d 0a 0d 0a us the name.....
a040: 54 68 65 20 50 69 44 50 2d 38 2f 49 20 73 6f 66 The PiDP-8/I sof
a050: 74 77 61 72 65 20 64 69 73 74 72 69 62 75 74 69 tware distributi
a060: 6f 6e 20 69 6e 63 6c 75 64 65 73 20 61 20 76 65 on includes a ve
a070: 72 73 69 6f 6e 20 63 61 6c 6c 69 6e 67 20 69 74 rsion calling it
a080: 73 65 6c 66 20 22 70 61 6c 2d 32 2e 31 33 2c 20 self "pal-2.13,
a090: 30 33 20 4d 61 79 20 32 30 31 35 2e 22 20 0d 0a 03 May 2015." ..
a0a0: 0d 0a 49 66 20 79 6f 75 20 70 6c 61 63 65 20 61 ..If you place a
a0b0: 20 60 2a 2e 70 61 6c 60 20 66 69 6c 65 20 69 6e `*.pal` file in
a0c0: 20 65 69 74 68 65 72 20 74 68 65 20 60 73 72 63 either the `src
a0d0: 2f 61 73 6d 60 20 6f 72 20 60 65 78 61 6d 70 6c /asm` or `exampl
a0e0: 65 73 60 20 73 75 62 64 69 72 65 63 74 6f 72 69 es` subdirectori
a0f0: 65 73 20 6f 66 20 74 68 65 20 73 6f 66 74 77 61 es of the softwa
a100: 72 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2c re distribution,
a110: 20 74 68 65 6e 20 74 79 70 65 20 60 6d 61 6b 65 then type `make
a120: 60 2c 20 74 68 65 20 62 75 69 6c 64 20 73 79 73 `, the build sys
a130: 74 65 6d 20 77 69 6c 6c 20 66 69 6e 64 20 79 6f tem will find yo
a140: 75 72 20 66 69 6c 65 20 61 6e 64 20 67 65 6e 65 ur file and gene
a150: 72 61 74 65 20 73 65 76 65 72 61 6c 20 6f 75 74 rate several out
a160: 70 75 74 20 66 69 6c 65 73 20 6e 61 6d 65 64 20 put files named
a170: 61 66 74 65 72 20 69 74 3a 0d 0a 0d 0a 2a 20 20 after it:....*
a180: 20 2a 2a 3c 63 6f 64 65 3e 6f 62 6a 2f 2a 2e 6c **<code>obj/*.l
a190: 73 74 3c 2f 63 6f 64 65 3e 2a 2a 20 e2 80 94 20 st</code>** —
a1a0: 74 68 65 20 61 73 73 65 6d 62 6c 65 72 27 73 20 the assembler's
a1b0: 74 65 78 74 20 6c 69 73 74 69 6e 67 20 6f 75 74 text listing out
a1c0: 70 75 74 2c 20 67 69 76 69 6e 67 20 74 68 65 20 put, giving the
a1d0: 61 73 73 65 6d 62 6c 65 64 20 6d 61 63 68 69 6e assembled machin
a1e0: 65 20 63 6f 64 65 20 61 6c 6f 6e 67 73 69 64 65 e code alongside
a1f0: 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 the source code
a200: 2c 20 70 6c 75 73 20 61 6e 79 20 65 72 72 6f 72 , plus any error
a210: 20 6d 65 73 73 61 67 65 73 0d 0a 2a 20 20 20 2a messages..* *
a220: 2a 3c 63 6f 64 65 3e 62 69 6e 2f 2a 2e 70 74 3c *<code>bin/*.pt<
a230: 2f 63 6f 64 65 3e 2a 2a 20 e2 80 94 20 74 68 65 /code>** — the
a240: 20 6d 61 63 68 69 6e 65 20 63 6f 64 65 20 6f 75 machine code ou
a250: 74 70 75 74 20 69 6e 20 52 49 4d 20 70 61 70 65 tput in RIM pape
a260: 72 20 74 61 70 65 20 66 6f 72 6d 61 74 2c 20 73 r tape format, s
a270: 75 69 74 61 62 6c 65 20 66 6f 72 20 6c 6f 61 64 uitable for load
a280: 69 6e 67 20 69 6e 74 6f 20 53 49 4d 48 27 73 20 ing into SIMH's
a290: 50 44 50 2d 38 20 73 69 6d 75 6c 61 74 6f 72 0d PDP-8 simulator.
a2a0: 0a 2a 20 20 20 2a 2a 3c 63 6f 64 65 3e 62 6f 6f .* **<code>boo
a2b0: 74 2f 2a 2e 73 63 72 69 70 74 3c 2f 63 6f 64 65 t/*.script</code
a2c0: 3e 2a 2a 20 e2 80 94 20 61 20 53 49 4d 48 20 69 >** — a SIMH i
a2d0: 6e 69 74 20 73 63 72 69 70 74 20 74 68 61 74 20 nit script that
a2e0: 64 65 70 6f 73 69 74 73 20 74 68 65 20 6d 61 63 deposits the mac
a2f0: 68 69 6e 65 20 63 6f 64 65 20 69 6e 74 6f 20 74 hine code into t
a300: 68 65 20 50 44 50 2d 38 20 73 69 6d 75 6c 61 74 he PDP-8 simulat
a310: 6f 72 27 73 20 63 6f 72 65 20 6d 65 6d 6f 72 79 or's core memory
a320: 20 61 6e 64 20 73 74 61 72 74 73 20 69 74 20 72 and starts it r
a330: 75 6e 6e 69 6e 67 3b 20 70 61 73 73 20 74 68 65 unning; pass the
a340: 20 66 69 6c 65 20 6e 61 6d 65 20 74 6f 20 60 62 file name to `b
a350: 69 6e 2f 70 69 64 70 38 69 2d 73 69 6d 60 0d 0a in/pidp8i-sim`..
a360: 0d 0a 54 68 69 73 20 6d 61 6b 65 73 20 66 6f 72 ..This makes for
a370: 20 61 20 76 65 72 79 20 73 6d 6f 6f 74 68 20 63 a very smooth c
a380: 6f 64 65 2d 62 75 69 6c 64 2d 72 75 6e 2d 64 65 ode-build-run-de
a390: 62 75 67 20 63 79 63 6c 65 3a 0d 0a 0d 0a 31 2e bug cycle:....1.
a3a0: 20 20 45 64 69 74 20 60 65 78 61 6d 70 6c 65 73 Edit `examples
a3b0: 2f 6d 79 70 72 67 2e 70 61 6c 60 0d 0a 32 2e 20 /myprg.pal`..2.
a3c0: 20 52 75 6e 20 60 6d 61 6b 65 60 0d 0a 33 2e 20 Run `make`..3.
a3d0: 20 52 75 6e 20 60 62 69 6e 2f 70 69 64 70 38 69 Run `bin/pidp8i
a3e0: 2d 73 69 6d 20 62 6f 6f 74 2f 6d 79 70 72 6f 67 -sim boot/myprog
a3f0: 2e 73 63 72 69 70 74 60 0d 0a 34 2e 20 20 44 65 .script`..4. De
a400: 62 75 67 3b 20 69 66 20 73 74 69 6c 6c 20 62 75 bug; if still bu
a410: 67 67 79 2c 20 67 6f 74 6f 20 73 74 65 70 20 31 ggy, goto step 1
a420: 2e 0d 0a 0d 0a 54 68 65 72 65 20 61 72 65 20 6d .....There are m
a430: 61 6e 79 20 64 69 66 66 65 72 65 6e 74 20 76 65 any different ve
a440: 72 73 69 6f 6e 73 20 6f 66 20 60 70 61 6c 62 61 rsions of `palba
a450: 72 74 60 20 66 6c 6f 61 74 69 6e 67 20 61 72 6f rt` floating aro
a460: 75 6e 64 20 6f 6e 20 74 68 65 20 49 6e 74 65 72 und on the Inter
a470: 6e 65 74 2c 20 61 6e 64 20 65 61 72 6c 69 65 72 net, and earlier
a480: 20 76 65 72 73 69 6f 6e 73 20 68 61 76 65 20 62 versions have b
a490: 75 67 73 20 6f 72 20 66 65 61 74 75 72 65 73 20 ugs or features
a4a0: 74 68 61 74 20 70 72 65 76 65 6e 74 20 69 74 20 that prevent it
a4b0: 66 72 6f 6d 20 62 65 69 6e 67 20 63 6f 6d 70 6c from being compl
a4c0: 65 74 65 6c 79 20 63 6f 6d 70 61 74 69 62 6c 65 etely compatible
a4d0: 20 77 69 74 68 20 74 68 65 20 50 41 4c 20 66 61 with the PAL fa
a4e0: 6d 69 6c 79 20 61 73 73 65 6d 62 6c 65 72 73 20 mily assemblers
a4f0: 61 62 6f 76 65 2e 20 54 68 65 20 6d 6f 73 74 20 above. The most
a500: 6c 69 6b 65 6c 79 20 74 6f 20 61 66 66 65 63 74 likely to affect
a510: 20 65 78 69 73 74 69 6e 67 20 70 72 6f 67 72 61 existing progra
a520: 6d 73 20 69 73 20 74 68 61 74 20 73 6f 6d 65 20 ms is that some
a530: 76 65 72 73 69 6f 6e 73 20 6f 66 20 60 70 61 6c versions of `pal
a540: 62 61 72 74 60 20 64 6f 20 6e 6f 74 20 63 68 6f bart` do not cho
a550: 70 20 73 79 6d 62 6f 6c 73 20 6f 66 66 20 61 74 p symbols off at
a560: 20 36 20 63 68 61 72 61 63 74 65 72 73 2e 20 53 6 characters. S
a570: 6f 6d 65 20 63 6f 64 65 20 64 65 70 65 6e 64 73 ome code depends
a580: 20 6f 6e 20 74 68 69 73 20 68 61 70 70 65 6e 69 on this happeni
a590: 6e 67 3b 20 66 6f 72 20 65 78 61 6d 70 6c 65 2c ng; for example,
a5a0: 20 74 68 65 20 61 73 73 65 6d 62 6c 65 64 20 63 the assembled c
a5b0: 6f 64 65 20 6d 61 79 20 72 65 66 65 72 20 74 6f ode may refer to
a5c0: 20 61 20 6c 61 62 65 6c 20 77 69 74 68 20 37 2b a label with 7+
a5d0: 20 63 68 61 72 61 63 74 65 72 73 20 69 6e 20 6f characters in o
a5e0: 6e 65 20 6c 6f 63 61 74 69 6f 6e 20 61 6e 64 20 ne location and
a5f0: 77 69 74 68 20 36 20 69 6e 20 61 6e 6f 74 68 65 with 6 in anothe
a600: 72 20 6c 6f 63 61 74 69 6f 6e 2c 20 61 6e 64 20 r location, and
a610: 65 78 70 65 63 74 20 74 68 65 20 61 73 73 65 6d expect the assem
a620: 62 6c 65 72 20 74 6f 20 72 65 66 65 72 20 74 6f bler to refer to
a630: 20 74 68 65 20 73 61 6d 65 20 6c 6f 63 61 74 69 the same locati
a640: 6f 6e 20 69 6e 20 62 6f 74 68 20 70 6c 61 63 65 on in both place
a650: 73 2e 20 54 68 65 20 76 65 72 73 69 6f 6e 20 6f s. The version o
a660: 66 20 60 70 61 6c 62 61 72 74 60 20 74 68 61 74 f `palbart` that
a670: 20 77 65 20 73 68 69 70 20 77 69 74 68 20 74 68 we ship with th
a680: 65 20 50 69 44 50 2d 38 2f 49 20 73 6f 66 74 77 e PiDP-8/I softw
a690: 61 72 65 20 64 69 73 74 72 69 62 75 74 69 6f 6e are distribution
a6a0: 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 74 does not have t
a6b0: 68 69 73 20 69 6e 63 6f 6d 70 61 74 69 62 69 6c his incompatibil
a6c0: 69 74 79 2e 20 49 66 20 79 6f 75 20 6b 6e 6f 77 ity. If you know
a6d0: 20 6f 66 20 61 6e 20 69 6e 63 6f 6d 70 61 74 69 of an incompati
a6e0: 62 69 6c 69 74 79 20 72 65 6c 61 74 69 76 65 20 bility relative
a6f0: 74 6f 20 50 41 4c 38 20 69 6e 20 70 61 72 74 69 to PAL8 in parti
a700: 63 75 6c 61 72 2c 20 70 6c 65 61 73 65 20 66 69 cular, please fi
a710: 6c 65 20 5b 61 20 62 75 67 20 72 65 70 6f 72 74 le [a bug report
a720: 20 74 69 63 6b 65 74 5d 5b 74 6b 74 5d 2e 0d 0a ticket][tkt]...
a730: 0d 0a 2a 2a 49 4e 43 4f 4d 50 4c 45 54 45 2a 2a ..**INCOMPLETE**
a740: 0d 0a 0d 0a 5b 74 6b 74 5d 3a 20 68 74 74 70 73 ....[tkt]: https
a750: 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63 ://tangentsoft.c
a760: 6f 6d 2f 70 69 64 70 38 69 2f 74 6b 74 6e 65 77 om/pidp8i/tktnew
a770: 0d 0a 0d 0a 0d 0a 23 23 20 3c 61 20 69 64 3d 22 ......## <a id="
a780: 70 64 70 6e 61 73 6d 22 3e 3c 2f 61 3e 70 64 70 pdpnasm"></a>pdp
a790: 6e 61 73 6d 0d 0a 0d 0a 7c 20 2a 2a 49 6e 74 72 nasm....| **Intr
a7a0: 6f 64 75 63 65 64 2a 2a 20 7c 20 32 30 30 36 0d oduced** | 2006.
a7b0: 0a 7c 20 2a 2a 4d 61 6e 75 61 6c 2a 2a 20 7c 20 .| **Manual** |
a7c0: 73 65 65 20 69 74 73 20 5b 68 6f 6d 65 20 70 61 see its [home pa
a7d0: 67 65 5d 5b 70 64 70 6e 61 73 6d 5d 0d 0a 7c 20 ge][pdpnasm]..|
a7e0: 2a 2a 44 65 6c 69 76 65 72 79 2a 2a 20 7c 20 5b **Delivery** | [
a7f0: 49 6e 74 65 72 6e 65 74 5d 5b 70 64 70 6e 61 73 Internet][pdpnas
a800: 6d 5d 0d 0a 0d 0a 54 68 69 73 20 69 73 20 61 20 m]....This is a
a810: 50 44 50 2d 38 20 61 73 73 65 6d 62 6c 65 72 20 PDP-8 assembler
a820: 61 63 63 65 70 74 69 6e 67 20 74 68 65 20 50 41 accepting the PA
a830: 4c 2d 49 49 49 20 73 79 6e 74 61 78 20 66 6f 72 L-III syntax for
a840: 20 55 6e 69 78 20 74 79 70 65 20 73 79 73 74 65 Unix type syste
a850: 6d 73 2e 20 0d 0a 0d 0a 49 20 61 6d 20 6c 69 73 ms. ....I am lis
a860: 74 69 6e 67 20 69 74 20 68 65 72 65 20 61 6c 6f ting it here alo
a870: 6e 67 20 77 69 74 68 20 60 70 61 6c 62 61 72 74 ng with `palbart
a880: 60 20 62 65 63 61 75 73 65 20 74 68 65 72 65 20 ` because there
a890: 61 72 65 20 5b 6b 6e 6f 77 6e 20 77 65 61 6b 6e are [known weakn
a8a0: 65 73 73 65 73 20 69 6e 20 60 70 61 6c 62 61 72 esses in `palbar
a8b0: 74 60 5d 28 2f 72 70 74 76 69 65 77 3f 72 6e 3d t`](/rptview?rn=
a8c0: 34 29 2e 20 49 66 20 79 6f 75 20 6b 6e 6f 77 20 4). If you know
a8d0: 6f 66 20 6d 6f 72 65 2c 20 70 6c 65 61 73 65 20 of more, please
a8e0: 5b 66 69 6c 65 20 74 68 65 6d 5d 28 2f 74 6b 74 [file them](/tkt
a8f0: 6e 65 77 29 2e 20 60 70 61 6c 62 61 72 74 60 20 new). `palbart`
a900: 63 75 72 72 65 6e 74 6c 79 20 68 61 73 20 6e 6f currently has no
a910: 20 63 65 6e 74 72 61 6c 20 64 65 76 65 6c 6f 70 central develop
a920: 6d 65 6e 74 20 68 6f 6d 65 2c 20 73 6f 20 69 74 ment home, so it
a930: 20 69 73 20 70 6f 73 73 69 62 6c 65 20 74 68 61 is possible tha
a940: 74 20 74 68 65 20 50 69 44 50 2d 38 2f 49 20 70 t the PiDP-8/I p
a950: 72 6f 6a 65 63 74 20 77 69 6c 6c 20 65 6e 64 20 roject will end
a960: 75 70 20 68 6f 73 74 69 6e 67 20 61 6e 20 69 6d up hosting an im
a970: 70 72 6f 76 65 64 20 76 65 72 73 69 6f 6e 2e 0d proved version..
a980: 0a 0d 0a 4d 65 61 6e 77 68 69 6c 65 2c 20 69 74 ...Meanwhile, it
a990: 20 73 65 65 6d 73 20 6c 69 6b 65 20 61 20 67 6f seems like a go
a9a0: 6f 64 20 69 64 65 61 20 74 6f 20 6d 65 20 74 6f od idea to me to
a9b0: 20 68 61 76 65 20 61 20 73 65 63 6f 6e 64 20 6f have a second o
a9c0: 70 74 69 6f 6e 20 61 74 20 68 61 6e 64 20 77 68 ption at hand wh
a9d0: 65 6e 20 63 72 6f 73 73 2d 63 6f 6d 70 69 6c 69 en cross-compili
a9e0: 6e 67 20 63 6f 64 65 20 6f 6e 20 61 20 50 4f 53 ng code on a POS
a9f0: 49 58 20 74 79 70 65 20 70 6c 61 74 66 6f 72 6d IX type platform
aa00: 20 66 6f 72 20 61 20 50 44 50 2d 38 2e 20 0d 0a for a PDP-8. ..
aa10: 0d 0a 5b 70 64 70 6e 61 73 6d 5d 3a 20 68 74 74 ..[pdpnasm]: htt
aa20: 70 3a 2f 2f 70 65 6f 70 6c 65 2e 63 73 61 69 6c p://people.csail
aa30: 2e 6d 69 74 2e 65 64 75 2f 65 62 61 6b 6b 65 2f .mit.edu/ebakke/
aa40: 70 64 70 38 2f 0d 0a 0d 0a 2a 2a 49 4e 43 4f 4d pdp8/....**INCOM
aa50: 50 4c 45 54 45 2a 2a 0d 0a 0d 0a 0d 0a 23 23 20 PLETE**......##
aa60: 4c 69 63 65 6e 73 65 0d 0a 0d 0a 43 6f 70 79 72 License....Copyr
aa70: 69 67 68 74 20 c2 a9 20 32 30 31 37 2d 32 30 31 ight © 2017-201
aa80: 38 20 62 79 20 57 61 72 72 65 6e 20 59 6f 75 6e 8 by Warren Youn
aa90: 67 2e 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 g. This document
aaa0: 20 69 73 20 6c 69 63 65 6e 73 65 64 20 75 6e 64 is licensed und
aab0: 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 er the terms of
aac0: 5b 74 68 65 20 53 49 4d 48 20 6c 69 63 65 6e 73 [the SIMH licens
aad0: 65 5d 5b 73 6c 5d 2e 0d 0a 0d 0a 5b 73 6c 5d 3a e][sl].....[sl]:
aae0: 20 68 74 74 70 73 3a 2f 2f 74 61 6e 67 65 6e 74 https://tangent
aaf0: 73 6f 66 74 2e 63 6f 6d 2f 70 69 64 70 38 69 2f soft.com/pidp8i/
ab00: 64 6f 63 2f 74 72 75 6e 6b 2f 53 49 4d 48 2d 4c doc/trunk/SIMH-L
ab10: 49 43 45 4e 53 45 2e 6d 64 0a 5a 20 63 63 61 32 ICENSE.md.Z cca2
ab20: 35 33 39 33 37 32 39 62 65 35 61 62 30 33 66 63 5393729be5ab03fc
ab30: 34 64 36 61 39 37 35 32 31 39 64 64 0a 4d6a975219dd.