PiDP-8/I Software

Hex Artifact Content
Log In

Artifact 96b1dccb6809371b8676154c08e490041f253c8b:

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&times;
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&nbsp
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.