I'll see about getting the CARDIAC stuff scanned, in the mean time I've
"HTMLized" and updated my SIMPLEX doc and put it here:
<http://www.mcmanis.com/chuck/computers/simplex.html>
I've got a bunch of TIL311 displays that I'm using for output (wish I had
Nixie tubes :-{)
--Chuck
At 11:50 PM 8/13/01 -0700, you wrote:
Hi Chuck,
I would LOVE a scan of the booklet, also a scan of the
cpu side would help.
Is SIMPLEX on the web? or is it somthing you were working on
yourself?
====================
Chuck McManis wrote:
I have a CARDIAC, perhaps I could scan the booklet
for you. Or would you
like to build something unique? I have a similar project called SIMPLEX
which is a PDP/CARDIAC/uP inspired instructional computer architecture.
--Chuck
At 03:27 PM 8/12/01 -0700, you wrote:
>I was going to write a simulator for Bell Labs "Cardiac" (cardboard
>slide the slides and move bits be the cpu your self) computer, but all I
>can find is the Instruction Set, none of how the instructions are implemented.
>So, I decieded to write my own...
>Here is the instruction set, I thought it best to consult with you all
>before beginning to code. What
>do you think?
>Opcodes
>0 1 2 3 4 5 6 7
>Z N o1 o2 o3
>=================================================================
>Z N 0 0 1 i r r get copy (indirect) register rr to acx
>Z N 0 1 0 i r r put copy (indirect) acx to register rr
>Z N 0 1 1 o o o Mathop
> 0 0 0 nop
> 0 0 1 add acx + acy ==> acx
> 0 1 0 sub acx - acy ==> acx
> 0 1 1 and acx & acy ==> acx
> 1 0 0 exor acx xor acy ==> acx
> 1 0 1 or acx | acy ==> acx
> 1 1 0 cmp acx cmp acy set Z and N
> 1 1 1 cpz acx cmp 0 set Z and N
>Z N 1 0 0 p p p inp copy port ppp ==> acx
>Z N 1 0 1 p p p out copy acx ==> port ppp
>Z N 1 1 0 i r r swp acx ==> (ind) Rn == > acx
>Z N 1 1 1 0 o o acx op group
> 0 0 0 not r1 <== ! r1
> 0 0 1 shl Shift left
> 0 1 0 shr Shift right
> 0 1 1 inc Increment r1 <== r1 + 1
>Z N 1 1 1 1 o o Jump Group
> 1 0 0 jmp ind [pc] pc <== [pc]
> 1 0 1 jsr ind [pc] R2 <== pc , pc <== [pc]
> 1 1 0 rtn pc <== R2
> 1 1 1 Halt,reset [pc] <== 0
>Zero and Negative flags
>On execution of the cmp and cpz instructions the Z and N flags are
>set, following instructions can test these flags and choose to execute
>or not.
>Z N Meaning
>0 0 Execute if acx was positive on test (acx > 0 / acx > acy)
>0 1 Execute if acx was negative on test (acx < 0 / acx < acy)
>1 0 Execute if acx was zeron on test (acx = 0 / acx = acy)
>1 1 Always execute
>
>Registers
>00 r0 acx 1st operand
>01 r1 acy 2nd operand
>10 r2 ptr Pointer register
>11 r3 pc Program Counter
>
>here is an example of an assembled program....
>Assembly of a simple program
> org $10 ; program starts at 10 10
> get ind pc ; load value1 acy 10 11001111 00010000
> adr value1 11 00011001 00010001
> swp acy 12 11110110 00010010
> get ind pc ; load value2 acx 13 11001111 00010011
> adr value2 14 00011010 00010100
> add ; sum values 15 11011001 00010101
> put ind pc ; store sum 16 11010111 00010110
> adr sum 17 00011011 00010111
> hlt ; end of program 18 11111111 00011000
>value1 byt 19 00011001
>value2 byt 1A 00011010
>sum byt 1B 00011011
>
> end ; end of code
>
>I know, it only has 256 words of 8 bit memory, but isn't this as much as
>some of the early machines?