PiDP-8/I Software

Hex Artifact Content
Log In

Artifact 26887a0cd51f23ad36d1c785db4c67b3eb971cf6:

Wiki page [AX08 Emulation] by tangent 2017-08-02 05:15:00.
0000: 44 20 32 30 31 37 2d 30 38 2d 30 32 54 30 35 3a  D 2017-08-02T05:
0010: 31 35 3a 30 30 2e 32 34 30 0a 4c 20 41 58 30 38  15:00.240.L AX08
0020: 5c 73 45 6d 75 6c 61 74 69 6f 6e 0a 4e 20 74 65  \sEmulation.N te
0030: 78 74 2f 78 2d 6d 61 72 6b 64 6f 77 6e 0a 50 20  xt/x-markdown.P 
0040: 35 65 36 66 31 34 36 38 37 62 37 39 61 31 38 61  5e6f14687b79a18a
0050: 31 38 34 32 61 34 33 39 64 66 65 38 36 36 31 63  1842a439dfe8661c
0060: 31 36 34 61 63 38 64 36 0a 55 20 74 61 6e 67 65  164ac8d6.U tange
0070: 6e 74 0a 57 20 34 32 33 38 0a 2a 50 72 6f 70 6f  nt.W 4238.*Propo
0080: 73 61 6c 2a 3a 20 45 6d 75 6c 61 74 65 20 74 68  sal*: Emulate th
0090: 65 20 5b 41 58 30 38 20 50 44 50 2d 38 20 73 65  e [AX08 PDP-8 se
00a0: 72 69 65 73 20 6c 61 62 6f 72 61 74 6f 72 79 20  ries laboratory 
00b0: 70 65 72 69 70 68 65 72 61 6c 5d 28 68 74 74 70  peripheral](http
00c0: 3a 2f 2f 77 77 77 2e 70 64 70 38 2e 6e 65 74 2f  ://www.pdp8.net/
00d0: 61 78 30 38 2f 61 78 30 38 2e 73 68 74 6d 6c 29  ax08/ax08.shtml)
00e0: 20 76 69 61 20 61 20 55 53 42 2d 63 6f 6e 6e 65   via a USB-conne
00f0: 63 74 65 64 20 41 72 64 75 69 6e 6f 0d 0a 0d 0a  cted Arduino....
0100: 54 68 65 20 62 61 73 65 20 6d 6f 64 65 6c 20 41  The base model A
0110: 58 30 38 20 68 61 73 3a 0d 0a 0d 0a 2a 20 20 66  X08 has:....*  f
0120: 6f 75 72 20 39 2d 62 69 74 20 41 44 43 20 69 6e  our 9-bit ADC in
0130: 70 75 74 73 20 77 69 74 68 20 61 20 63 6f 6e 76  puts with a conv
0140: 65 72 73 69 6f 6e 20 74 69 6d 65 20 6f 66 20 31  ersion time of 1
0150: 37 20 c2 b5 73 20 6f 76 65 72 20 61 20 26 70 6c  7 µs over a &pl
0160: 75 73 6d 6e 3b 31 2e 30 32 34 56 20 72 61 6e 67  usmn;1.024V rang
0170: 65 20 77 69 74 68 20 35 30 20 6b ce a9 20 69 6e  e with 50 kΩ in
0180: 70 75 74 20 69 6d 70 65 64 61 6e 63 65 0d 0a 2a  put impedance..*
0190: 20 20 74 68 72 65 65 20 53 63 68 6d 69 74 74 2d    three Schmitt-
01a0: 74 72 69 67 67 65 72 65 64 20 64 69 67 69 74 61  triggered digita
01b0: 6c 20 69 6e 70 75 74 73 20 77 69 74 68 20 30 2e  l inputs with 0.
01c0: 37 56 20 6f 66 20 68 79 73 74 65 72 65 73 69 73  7V of hysteresis
01d0: 0d 0a 2a 20 20 61 6e 20 58 2d 59 20 76 65 63 74  ..*  an X-Y vect
01e0: 6f 72 20 64 69 73 70 6c 61 79 20 6f 75 74 70 75  or display outpu
01f0: 74 0d 0a 0d 0a 54 68 69 73 20 63 61 6e 20 62 65  t....This can be
0200: 20 65 78 70 61 6e 64 65 64 3a 0d 0a 0d 0a 2a 20   expanded:....* 
0210: 20 2b 34 20 61 6e 61 6c 6f 67 20 69 6e 70 75 74   +4 analog input
0220: 73 20 76 69 61 20 4f 70 74 69 6f 6e 20 58 4d 0d  s via Option XM.
0230: 0a 2a 20 20 2b 31 36 20 61 6e 61 6c 6f 67 20 69  .*  +16 analog i
0240: 6e 70 75 74 73 20 76 69 61 20 75 70 20 74 6f 20  nputs via up to 
0250: 66 6f 75 72 20 4f 70 74 69 6f 6e 20 58 43 20 6d  four Option XC m
0260: 6f 64 75 6c 65 73 2c 20 65 61 63 68 20 6f 66 20  odules, each of 
0270: 77 68 69 63 68 20 61 64 64 73 20 34 20 41 44 43  which adds 4 ADC
0280: 20 69 6e 70 75 74 73 3b 20 72 65 71 75 69 72 65   inputs; require
0290: 73 20 4f 70 74 69 6f 6e 20 58 4d 0d 0a 2a 20 20  s Option XM..*  
02a0: 61 20 66 6f 75 72 74 68 20 53 63 68 6d 69 74 74  a fourth Schmitt
02b0: 2d 74 72 69 67 67 65 72 65 64 20 69 6e 70 75 74  -triggered input
02c0: 2c 20 38 20 73 74 72 61 69 67 68 74 20 64 69 67  , 8 straight dig
02d0: 69 74 61 6c 20 69 6e 70 75 74 73 2c 20 33 20 64  ital inputs, 3 d
02e0: 69 67 69 74 61 6c 20 6f 75 74 70 75 74 73 2c 20  igital outputs, 
02f0: 61 6e 64 20 61 6e 20 38 2d 6c 65 76 65 6c 20 5a  and an 8-level Z
0300: 20 6f 75 74 70 75 74 20 66 6f 72 20 74 68 65 20   output for the 
0310: 76 65 63 74 6f 72 20 73 63 6f 70 65 20 74 6f 20  vector scope to 
0320: 63 6f 6e 74 72 6f 6c 20 69 6e 74 65 6e 73 69 74  control intensit
0330: 79 2c 20 61 6c 6c 20 76 69 61 20 4f 70 74 69 6f  y, all via Optio
0340: 6e 20 58 52 0d 0a 0d 0a 41 6e 20 41 72 64 75 69  n XR....An Ardui
0350: 6e 6f 20 55 6e 6f 20 68 61 73 3a 0d 0a 0d 0a 2a  no Uno has:....*
0360: 20 20 73 69 78 20 31 30 2d 62 69 74 20 41 44 43    six 10-bit ADC
0370: 20 69 6e 70 75 74 73 20 77 69 74 68 20 61 20 73   inputs with a s
0380: 74 6f 63 6b 20 63 6f 6e 76 65 72 73 69 6f 6e 20  tock conversion 
0390: 74 69 6d 65 20 6f 66 20 36 35 20 c2 b5 73 20 6f  time of 65 µs o
03a0: 76 65 72 20 61 20 30 2d 35 56 20 72 61 6e 67 65  ver a 0-5V range
03b0: 20 77 69 74 68 20 31 30 30 20 6b ce a9 20 69 6e   with 100 kΩ in
03c0: 70 75 74 20 69 6d 70 65 64 61 6e 63 65 0d 0a 2a  put impedance..*
03d0: 20 20 31 34 20 64 69 67 69 74 61 6c 20 69 6e 70    14 digital inp
03e0: 75 74 73 2c 20 61 6c 6c 20 53 63 68 6d 69 74 74  uts, all Schmitt
03f0: 2d 74 72 69 67 67 65 72 65 64 2c 20 62 75 74 20  -triggered, but 
0400: 6f 6e 6c 79 20 77 69 74 68 20 30 2e 30 35 56 20  only with 0.05V 
0410: 6f 66 20 68 79 73 74 65 72 65 73 69 73 0d 0a 2a  of hysteresis..*
0420: 20 20 36 20 50 57 4d 20 6f 75 74 70 75 74 73 0d    6 PWM outputs.
0430: 0a 0d 0a 54 68 65 73 65 20 64 69 66 66 65 72 65  ...These differe
0440: 6e 63 65 73 20 6d 61 79 20 61 6c 6c 20 62 65 20  nces may all be 
0450: 6f 76 65 72 63 6f 6d 65 2e 0d 0a 0d 0a 54 68 65  overcome.....The
0460: 20 41 72 64 75 69 6e 6f 27 73 20 63 6f 6e 76 65   Arduino's conve
0470: 72 73 69 6f 6e 20 74 69 6d 65 20 5b 6d 61 79 20  rsion time [may 
0480: 62 65 20 72 65 64 75 63 65 64 5d 28 68 74 74 70  be reduced](http
0490: 3a 2f 2f 77 77 77 2e 6d 69 63 72 6f 73 6d 61 72  ://www.microsmar
04a0: 74 2e 63 6f 2e 7a 61 2f 74 65 63 68 6e 69 63 61  t.co.za/technica
04b0: 6c 2f 32 30 31 34 2f 30 33 2f 30 31 2f 61 64 76  l/2014/03/01/adv
04c0: 61 6e 63 65 64 2d 61 72 64 75 69 6e 6f 2d 61 64  anced-arduino-ad
04d0: 63 2f 29 20 74 6f 20 61 70 70 72 6f 78 69 6d 61  c/) to approxima
04e0: 74 65 6c 79 20 32 30 20 c2 b5 73 20 77 69 74 68  tely 20 µs with
04f0: 6f 75 74 20 68 65 72 6f 69 63 20 6d 65 61 73 75  out heroic measu
0500: 72 65 73 2e 20 54 68 69 73 20 69 6d 70 61 63 74  res. This impact
0510: 73 20 61 63 63 75 72 61 63 79 2c 20 62 75 74 20  s accuracy, but 
0520: 77 65 20 77 65 72 65 20 67 6f 69 6e 67 20 74 6f  we were going to
0530: 20 74 68 72 6f 77 20 61 77 61 79 20 74 68 65 20   throw away the 
0540: 4c 53 42 20 61 6e 79 77 61 79 2e 0d 0a 0d 0a 42  LSB anyway.....B
0550: 79 20 64 65 66 61 75 6c 74 2c 20 74 68 65 20 41  y default, the A
0560: 72 64 75 69 6e 6f 27 73 20 41 44 43 20 67 69 76  rduino's ADC giv
0570: 65 73 20 61 20 73 69 6e 67 6c 65 2d 65 6e 64 65  es a single-ende
0580: 64 20 72 65 73 75 6c 74 2c 20 62 75 74 20 69 74  d result, but it
0590: 20 77 65 20 63 61 6e 20 6d 61 74 68 65 6d 61 74   we can mathemat
05a0: 69 63 61 6c 6c 79 20 61 64 6a 75 73 74 20 74 68  ically adjust th
05b0: 65 20 72 65 73 75 6c 74 20 73 6f 20 74 68 61 74  e result so that
05c0: 20 74 68 65 20 35 31 32 20 63 6f 6e 76 65 72 73   the 512 convers
05d0: 69 6f 6e 20 6f 75 74 70 75 74 20 63 6f 64 65 20  ion output code 
05e0: 28 46 53 2f 32 29 20 6d 61 70 73 20 74 6f 20 30  (FS/2) maps to 0
05f0: 30 30 30 20 6f 63 74 61 6c 20 6f 75 74 2e 0d 0a  000 octal out...
0600: 0d 0a 54 68 65 20 41 58 30 38 27 73 20 69 6e 70  ..The AX08's inp
0610: 75 74 20 76 6f 6c 74 61 67 65 20 72 61 6e 67 65  ut voltage range
0620: 20 6f 66 20 26 70 6c 75 73 6d 6e 3b 31 2e 30 32   of ±1.02
0630: 34 56 20 63 61 6e 20 62 65 20 6d 61 70 70 65 64  4V can be mapped
0640: 20 69 6e 74 6f 20 74 68 65 20 41 72 64 75 69 6e   into the Arduin
0650: 6f 27 73 20 69 6e 70 75 74 20 72 61 6e 67 65 20  o's input range 
0660: 69 6e 20 6f 6e 65 20 6f 66 20 74 77 6f 20 77 61  in one of two wa
0670: 79 73 2e 20 45 69 74 68 65 72 20 77 65 20 63 61  ys. Either we ca
0680: 6e 20 73 65 74 20 74 68 65 20 61 6e 61 6c 6f 67  n set the analog
0690: 20 69 6e 70 75 74 20 76 69 72 74 75 61 6c 20 67   input virtual g
06a0: 72 6f 75 6e 64 20 74 6f 20 2b 31 2e 30 32 34 56  round to +1.024V
06b0: 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65   relative to the
06c0: 20 41 72 64 75 69 6e 6f 20 73 79 73 74 65 6d 20   Arduino system 
06d0: 67 72 6f 75 6e 64 20 61 6e 64 20 75 73 65 20 61  ground and use a
06e0: 6e 20 6f 70 2d 61 6d 70 20 74 6f 20 67 61 69 6e  n op-amp to gain
06f0: 20 74 68 65 20 69 6e 70 75 74 20 73 69 67 6e 61   the input signa
0700: 6c 20 75 70 20 62 79 20 61 70 70 72 6f 78 69 6d  l up by approxim
0710: 61 74 65 6c 79 20 32 2e 35 26 74 69 6d 65 73 3b  ately 2.5×
0720: 20 74 6f 20 70 75 74 20 6d 61 70 20 74 68 61 74   to put map that
0730: 20 72 61 6e 67 65 20 74 6f 20 30 2d 35 56 2c 20   range to 0-5V, 
0740: 6f 72 20 77 65 20 63 61 6e 20 5b 73 65 74 20 74  or we can [set t
0750: 68 65 20 41 72 64 75 69 6e 6f 20 61 6e 61 6c 6f  he Arduino analo
0760: 67 20 72 65 66 65 72 65 6e 63 65 5d 28 68 74 74  g reference](htt
0770: 70 73 3a 2f 2f 77 77 77 2e 61 72 64 75 69 6e 6f  ps://www.arduino
0780: 2e 63 63 2f 65 6e 2f 52 65 66 65 72 65 6e 63 65  .cc/en/Reference
0790: 2f 41 6e 61 6c 6f 67 52 65 66 65 72 65 6e 63 65  /AnalogReference
07a0: 29 20 74 6f 20 32 2e 30 34 38 56 2e 20 54 68 65  ) to 2.048V. The
07b0: 20 6c 61 74 74 65 72 20 70 75 73 68 65 73 20 74   latter pushes t
07c0: 68 65 20 69 6e 70 75 74 20 73 69 67 6e 61 6c 20  he input signal 
07d0: 64 6f 77 6e 20 69 6e 74 6f 20 74 68 65 20 6e 6f  down into the no
07e0: 69 73 65 20 66 6c 6f 6f 72 20 61 20 62 69 74 2c  ise floor a bit,
07f0: 20 62 75 74 20 69 73 20 65 61 73 69 65 72 20 74   but is easier t
0800: 6f 20 69 6d 70 6c 65 6d 65 6e 74 2e 20 41 20 70  o implement. A p
0810: 72 6f 67 72 61 6d 6d 61 62 6c 65 20 72 65 66 65  rogrammable refe
0820: 72 65 6e 63 65 20 76 6f 6c 74 61 67 65 20 69 73  rence voltage is
0830: 20 6f 6e 65 20 49 43 20 61 6e 64 20 61 20 66 65   one IC and a fe
0840: 77 20 72 65 73 69 73 74 6f 72 73 2c 20 77 68 65  w resistors, whe
0850: 72 65 61 73 20 74 68 65 20 6f 70 2d 61 6d 70 20  reas the op-amp 
0860: 63 69 72 63 75 69 74 20 70 72 6f 62 61 62 6c 79  circuit probably
0870: 20 72 65 71 75 69 72 65 73 20 74 77 6f 20 6f 70   requires two op
0880: 2d 61 6d 70 73 2c 20 6f 6e 65 20 6f 66 20 77 68  -amps, one of wh
0890: 69 63 68 20 69 6e 63 6c 75 64 65 73 20 74 68 65  ich includes the
08a0: 20 6e 65 67 61 74 69 76 65 20 73 75 70 70 6c 79   negative supply
08b0: 20 70 69 6e 20 69 6e 20 69 74 73 20 69 6e 70 75   pin in its inpu
08c0: 74 20 72 61 6e 67 65 2e 0d 0a 0d 0a 57 65 20 6d  t range.....We m
08d0: 61 79 20 77 61 6e 74 20 74 6f 20 67 6f 20 77 69  ay want to go wi
08e0: 74 68 20 74 68 65 20 6f 70 2d 61 6d 70 20 73 6f  th the op-amp so
08f0: 6c 75 74 69 6f 6e 20 61 6e 79 77 61 79 20 73 69  lution anyway si
0900: 6e 63 65 20 74 68 65 20 72 65 66 65 72 65 6e 63  nce the referenc
0910: 65 20 76 6f 6c 74 61 67 65 20 6f 70 74 69 6f 6e  e voltage option
0920: 20 6d 65 61 6e 73 20 77 65 20 67 65 74 20 74 68   means we get th
0930: 65 20 41 72 64 75 69 6e 6f 27 73 20 69 6e 70 75  e Arduino's inpu
0940: 74 20 69 6d 70 65 64 61 6e 63 65 2c 20 77 68 69  t impedance, whi
0950: 63 68 20 61 70 70 65 61 72 73 20 74 6f 20 62 65  ch appears to be
0960: 20 31 30 30 20 6b ce a9 2c 20 77 68 65 72 65 61   100 kΩ, wherea
0970: 73 20 74 68 65 20 41 58 30 38 20 68 61 64 20 61  s the AX08 had a
0980: 20 35 30 20 6b ce a9 20 69 6e 70 75 74 20 69 6d   50 kΩ input im
0990: 70 65 64 61 6e 63 65 2e 20 49 66 20 74 68 61 74  pedance. If that
09a0: 20 6d 61 74 74 65 72 73 2c 20 77 65 27 6c 6c 20   matters, we'll 
09b0: 6e 65 65 64 20 61 20 62 75 66 66 65 72 69 6e 67  need a buffering
09c0: 20 6c 61 79 65 72 20 74 6f 20 73 65 70 61 72 61   layer to separa
09d0: 74 65 20 74 68 65 20 74 77 6f 20 69 6d 70 65 64  te the two imped
09e0: 61 6e 63 65 73 2e 0d 0a 0d 0a 54 68 65 20 41 72  ances.....The Ar
09f0: 64 75 69 6e 6f 20 64 69 67 69 74 61 6c 20 69 6e  duino digital in
0a00: 70 75 74 73 20 61 72 65 20 69 6e 68 65 72 65 6e  puts are inheren
0a10: 74 6c 79 20 53 63 68 6d 69 74 74 2d 74 72 69 67  tly Schmitt-trig
0a20: 67 65 72 65 64 2c 20 62 75 74 20 74 68 65 20 69  gered, but the i
0a30: 6e 70 75 74 20 61 6e 64 20 68 79 73 74 65 72 65  nput and hystere
0a40: 73 69 73 20 6c 65 76 65 6c 73 20 61 72 65 20 61  sis levels are a
0a50: 6c 6c 20 64 69 66 66 65 72 65 6e 74 2e 20 41 20  ll different. A 
0a60: 63 75 73 74 6f 6d 20 41 72 64 75 69 6e 6f 20 73  custom Arduino s
0a70: 68 69 65 6c 64 20 63 6f 75 6c 64 20 61 64 64 20  hield could add 
0a80: 65 78 74 65 72 6e 61 6c 20 30 2e 37 56 20 53 63  external 0.7V Sc
0a90: 68 6d 69 74 74 20 74 72 69 67 67 65 72 20 49 43  hmitt trigger IC
0aa0: 73 20 77 69 74 68 20 73 75 69 74 61 62 6c 65 20  s with suitable 
0ab0: 69 6e 70 75 74 20 72 61 6e 67 65 73 2e 20 4f 72  input ranges. Or
0ac0: 2c 20 74 68 65 20 75 73 65 72 20 63 6f 75 6c 64  , the user could
0ad0: 20 73 69 6d 70 6c 79 20 64 65 63 69 64 65 20 74   simply decide t
0ae0: 68 61 74 20 61 6c 6c 20 74 68 65 79 20 63 61 72  hat all they car
0af0: 65 20 61 62 6f 75 74 20 69 73 20 74 68 65 20 30  e about is the 0
0b00: 2f 31 20 72 65 73 75 6c 74 20 76 61 6c 75 65 2c  /1 result value,
0b10: 20 61 6e 64 20 77 69 6c 6c 20 75 73 65 20 74 68   and will use th
0b20: 65 20 41 72 64 75 69 6e 6f 27 73 20 67 69 76 65  e Arduino's give
0b30: 6e 20 69 6e 70 75 74 20 63 68 61 72 61 63 74 65  n input characte
0b40: 72 69 73 74 69 63 73 2e 20 45 69 74 68 65 72 20  ristics. Either 
0b50: 77 61 79 2c 20 77 65 20 68 61 76 65 20 65 6e 6f  way, we have eno
0b60: 75 67 68 20 49 2f 4f 20 65 76 65 6e 20 6f 6e 20  ugh I/O even on 
0b70: 61 6e 20 55 6e 6f 20 74 6f 20 65 6d 75 6c 61 74  an Uno to emulat
0b80: 65 20 74 68 65 20 62 61 73 65 20 75 6e 69 74 27  e the base unit'
0b90: 73 20 64 69 67 69 74 61 6c 20 49 2f 4f 2c 20 70  s digital I/O, p
0ba0: 6c 75 73 20 6d 6f 73 74 20 6f 66 20 4f 70 74 69  lus most of Opti
0bb0: 6f 6e 20 58 52 2e 20 0d 0a 0d 0a 4d 6f 76 69 6e  on XR. ....Movin
0bc0: 67 20 75 70 20 74 6f 20 61 6e 20 41 72 64 75 69  g up to an Ardui
0bd0: 6e 6f 20 4d 65 67 61 20 6c 65 74 73 20 75 73 20  no Mega lets us 
0be0: 63 6f 76 65 72 20 74 68 65 20 65 6e 74 69 72 65  cover the entire
0bf0: 74 79 20 6f 66 20 4f 70 74 69 6f 6e 20 58 52 20  ty of Option XR 
0c00: 70 6c 75 73 20 4f 70 74 69 6f 6e 20 58 4d 20 61  plus Option XM a
0c10: 6e 64 20 74 77 6f 20 4f 70 74 69 6f 6e 20 58 43  nd two Option XC
0c20: 20 6d 6f 64 75 6c 65 73 2e 0d 0a 0d 0a 54 68 65   modules.....The
0c30: 20 76 65 63 74 6f 72 20 73 63 6f 70 65 20 64 72   vector scope dr
0c40: 69 76 65 72 20 63 61 6e 20 62 65 20 69 6d 70 6c  iver can be impl
0c50: 65 6d 65 6e 74 65 64 20 62 79 20 75 73 69 6e 67  emented by using
0c60: 20 74 68 65 20 41 72 64 75 69 6e 6f 27 73 20 50   the Arduino's P
0c70: 57 4d 20 6f 75 74 70 75 74 73 20 61 73 20 6c 6f  WM outputs as lo
0c80: 77 2d 66 72 65 71 75 65 6e 63 79 20 44 41 43 73  w-frequency DACs
0c90: 2c 20 77 69 74 68 20 73 6f 6d 65 20 73 69 67 6e  , with some sign
0ca0: 61 6c 20 63 6f 6e 64 69 74 69 6f 6e 69 6e 67 2e  al conditioning.
0cb0: 20 4f 72 2c 20 69 66 20 62 65 74 74 65 72 20 73   Or, if better s
0cc0: 70 65 65 64 20 69 73 20 72 65 71 75 69 72 65 64  peed is required
0cd0: 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 67 65 74   in order to get
0ce0: 20 73 75 69 74 61 62 6c 65 20 64 69 73 70 6c 61   suitable displa
0cf0: 79 20 75 70 64 61 74 65 20 72 61 74 65 73 2c 20  y update rates, 
0d00: 77 65 20 63 6f 75 6c 64 20 61 64 64 20 61 20 72  we could add a r
0d10: 65 61 6c 20 44 41 43 20 63 68 69 70 20 76 69 61  eal DAC chip via
0d20: 20 61 20 63 75 73 74 6f 6d 20 73 68 69 65 6c 64   a custom shield
0d30: 2e 20 54 68 69 73 20 77 69 6c 6c 20 74 61 6b 65  . This will take
0d40: 20 73 65 76 65 72 61 6c 20 6f 66 20 74 68 65 20   several of the 
0d50: 64 69 67 69 74 61 6c 20 6f 75 74 70 75 74 20 70  digital output p
0d60: 69 6e 73 20 66 6f 72 20 49 c2 b2 43 20 6f 72 20  ins for I²C or 
0d70: 53 50 49 2e 0d 0a 0d 0a 41 73 20 66 6f 72 20 22  SPI.....As for "
0d80: 77 68 79 20 55 53 42 22 2c 20 62 65 63 61 75 73  why USB", becaus
0d90: 65 20 69 74 27 73 20 65 61 73 79 2c 20 61 6e 64  e it's easy, and
0da0: 20 74 68 65 20 50 44 50 20 74 6f 20 41 58 30 38   the PDP to AX08
0db0: 20 69 6e 74 65 72 66 61 63 65 20 64 6f 65 73 6e   interface doesn
0dc0: 27 74 20 73 65 65 6d 20 69 6d 70 6f 72 74 61 6e  't seem importan
0dd0: 74 20 74 6f 20 65 6d 75 6c 61 74 65 2e 20 4f 73  t to emulate. Os
0de0: 63 61 72 20 56 65 72 6d 75 65 6c 65 6e 20 70 72  car Vermuelen pr
0df0: 6f 70 6f 73 65 64 20 74 68 61 74 20 77 65 20 75  oposed that we u
0e00: 73 65 20 74 68 65 20 50 69 44 50 2d 38 2f 49 27  se the PiDP-8/I'
0e10: 73 20 65 78 70 61 6e 73 69 6f 6e 20 63 6f 6e 6e  s expansion conn
0e20: 65 63 74 6f 72 2c 20 62 75 74 20 74 68 61 74 20  ector, but that 
0e30: 6a 75 73 74 20 63 6f 6d 70 6c 69 63 61 74 65 73  just complicates
0e40: 20 74 68 69 6e 67 73 2c 20 72 65 71 75 69 72 69   things, requiri
0e50: 6e 67 20 6d 61 6e 79 20 49 2f 4f 20 69 6e 70 75  ng many I/O inpu
0e60: 74 20 69 6e 74 6f 20 74 68 65 20 41 72 64 75 69  t into the Ardui
0e70: 6e 6f 20 70 6c 75 73 20 6d 61 70 70 69 6e 67 20  no plus mapping 
0e80: 69 6e 70 75 74 20 6c 69 6e 65 20 63 68 61 6e 67  input line chang
0e90: 65 73 20 74 6f 20 41 58 30 38 20 63 6f 6d 6d 61  es to AX08 comma
0ea0: 6e 64 73 2e 20 54 68 65 20 73 61 6d 65 20 63 6f  nds. The same co
0eb0: 6d 6d 61 6e 64 73 20 63 6f 75 6c 64 20 62 65 20  mmands could be 
0ec0: 73 65 6e 74 20 6f 76 65 72 20 74 68 65 20 55 53  sent over the US
0ed0: 42 2d 74 6f 2d 73 65 72 69 61 6c 20 69 6e 74 65  B-to-serial inte
0ee0: 72 66 61 63 65 20 6f 66 20 74 68 65 20 41 72 64  rface of the Ard
0ef0: 75 69 6e 6f 20 6a 75 73 74 20 61 73 20 65 61 73  uino just as eas
0f00: 69 6c 79 2e 0d 0a 0d 0a 54 68 65 20 53 69 6d 48  ily.....The SimH
0f10: 20 74 6f 20 41 72 64 75 69 6e 6f 20 6c 69 6e 6b   to Arduino link
0f20: 20 63 61 6e 20 62 65 20 61 73 20 73 69 6d 70 6c   can be as simpl
0f30: 65 20 61 73 20 61 20 73 79 6d 6c 69 6e 6b 20 66  e as a symlink f
0f40: 72 6f 6d 20 60 2f 64 65 76 2f 61 78 30 38 60 20  rom `/dev/ax08` 
0f50: 74 6f 20 60 2f 64 65 76 2f 74 74 79 41 43 4d 30  to `/dev/ttyACM0
0f60: 60 20 6f 72 20 73 69 6d 69 6c 61 72 2e 20 54 68  ` or similar. Th
0f70: 65 20 41 58 30 38 20 63 6f 6d 6d 75 6e 69 63 61  e AX08 communica
0f80: 74 65 73 20 77 69 74 68 20 74 68 65 20 50 44 50  tes with the PDP
0f90: 20 76 69 61 20 73 74 61 6e 64 61 72 64 20 49 4f   via standard IO
0fa0: 54 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 2c 20  T instructions, 
0fb0: 73 6f 20 74 68 65 20 73 69 6d 75 6c 61 74 6f 72  so the simulator
0fc0: 20 6a 75 73 74 20 6e 65 65 64 73 20 74 6f 20 6b   just needs to k
0fd0: 6e 6f 77 20 74 68 61 74 20 77 68 65 6e 20 69 74  now that when it
0fe0: 20 73 65 65 73 20 74 68 65 20 72 65 6c 65 76 61   sees the releva
0ff0: 6e 74 20 73 75 62 2d 69 6e 73 74 72 75 63 74 69  nt sub-instructi
1000: 6f 6e 73 20 74 68 61 74 20 69 74 20 73 68 6f 75  ons that it shou
1010: 6c 64 20 73 65 6e 64 20 73 75 69 74 61 62 6c 65  ld send suitable
1020: 20 63 6f 6d 6d 61 6e 64 73 20 64 6f 77 6e 20 74   commands down t
1030: 68 65 20 60 2f 64 65 76 2f 61 78 30 38 60 20 63  he `/dev/ax08` c
1040: 68 61 6e 6e 65 6c 2e 0d 0a 0d 0a 0d 0a 0d 0a 0d  hannel..........
1050: 0a 23 23 20 4c 69 63 65 6e 73 65 0d 0a 0d 0a 43  .## License....C
1060: 6f 70 79 72 69 67 68 74 20 c2 a9 20 32 30 31 37  opyright © 2017
1070: 20 62 79 20 57 61 72 72 65 6e 20 59 6f 75 6e 67   by Warren Young
1080: 2e 20 54 68 69 73 20 64 6f 63 75 6d 65 6e 74 20  . This document 
1090: 69 73 20 6c 69 63 65 6e 73 65 64 20 75 6e 64 65  is licensed unde
10a0: 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 5b  r the terms of [
10b0: 74 68 65 20 53 49 4d 48 20 6c 69 63 65 6e 73 65  the SIMH license
10c0: 5d 5b 73 6c 5d 2e 0d 0a 0d 0a 5b 73 6c 5d 3a 20  ][sl].....[sl]: 
10d0: 68 74 74 70 73 3a 2f 2f 74 61 6e 67 65 6e 74 73  https://tangents
10e0: 6f 66 74 2e 63 6f 6d 2f 70 69 64 70 38 69 2f 64  oft.com/pidp8i/d
10f0: 6f 63 2f 74 72 75 6e 6b 2f 53 49 4d 48 2d 4c 49  oc/trunk/SIMH-LI
1100: 43 45 4e 53 45 2e 6d 64 0a 5a 20 33 38 65 31 36  CENSE.md.Z 38e16
1110: 66 65 63 32 36 33 33 62 61 30 63 63 35 37 30 65  fec2633ba0cc570e
1120: 61 32 35 37 31 31 62 34 34 35 35 0a              a25711b4455.