Click for site map

EMIDEC software

Background

An Emidec program consists of a number of "stages". Each stage contains up to 64 instructions, each held in a 36-bit word. Any instruction is identified by its stage number and the instruction number within the stage - thus, R200 is the first instruction in stage 2.

When the program is started, it loads up the first stage; after that, the loading of subsequent stages must be done by the program itself.

Structure of an instruction...

  • Instruction code - 0-31       CLICK HERE to view full instruction set
     
  • a-address - an absolute address (eg 256) or a relative address (eg variable C 2 or instruction R 23); the contents of the a-addressed register are usually taken as a source (eg in a simple arithmetic function like adding 1 to 10 ... the a-address would be the address of the register containing 1).
     
  • b-address - an absolute address (eg 256) or a relative address (eg variable C 2 or instruction R 23); the b-addressed register is usually taken as the result (eg in a simple arithmetic function like adding 1 to 10 ... the b-address would be the address of the register initially containing 10 but after the instruction containing 11).
     
  • c1-address - only used in a few instructions, to give further parameters for the required action
     
  • c2-address - only used in a few instructions, to give further parameters for the required action
     
  • modifier - 0-7 ... indicates which of the special registers 1-7 is to be used to modify this instruction; the contents of the specified register are added to this instruction... thus, if the a-address of modifier register 7 has a value of 1, and this instruction has a 7 entered in the modifier portion, the 1 is added to the stated a-address of this instruction, changing its address...
    1  12   7       [set a value of 1 in the a-address of register 7]
    7 256 512     7 [add the contents of register 256 + 1 (ie register 257) to register 512]
    Register 0 is ALWAYS zero, so a modifier of 0 adds nothing to the instruction.
     
    The modifier function is often used in much the same way as a subscript, but can also be used to modify any part of the instruction - even the instruction code itself! Very powerful... and potentially confusing.
Special registers

0 permanent value of 0
1-7 modifiers
8-9 used by multiply/divide instructions
10 result of a collate instruction
11 permanent value of 1
12 permanent value of 1 in the a-address
13 permanent value of 1 in the b-address
14 permanent value of 1 in the c-address
15 permanent value of 16 in the c-address (ie 1 in digit 35)
16 console register - can have its value set by the program or set by the switches on the console

The coding sheet     CLICK HERE for more on coding sheets

"Synthesis"

The "synthesis" program was what would later become known as a "compiler". A program in punch card form would be fed into the synthesis program, and converted into a binary version for running in the machine.

The 92 and 93 cards would first tell the synthesis program where the relative locations were for program stages (R and S addresses) and data sections (A, B, C etc). Armed with this information, the relative addresses could be turned into absolute decimal addresses and then converted to binary for storage.

So, the paper coded instruction "7 11 A0" (add 1 to register A0) would be converted to say "7 11 32" (assuming that a previous "92 A 32" instruction had told the synthesis program that section A starts at register 32), and then to a binary representation in a 36-bit word... 000000000000100000000000101100111000

The instructions from the coding sheet were punched (3 instructions per card) in this format...

1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
_  7  _  _  _  _  1  1  A  _  _  _  _  0  _  _  _  _  _  _
func  a-address.......  b-address.......  c1-add.. c2add mod

Inside the Emidec, the instruction was stored in this format...

35           28                  18                   8         3     0
 
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 1 0 0 0
       |       |                   |                   |         |
 C2-add  C1-add      b-address           a-address      function   mod

Flowcharts

View templatesOf course, all programs had to be fully documented with flowcharts - we had special A3 plain-paper pads for flowcharts, which were then stored, folded in two, in the program folder. We were issued with flowchart templates (didn't we have similar things for chemistry diagrams at school???).
CLICK HERE to view flowchart templates

Back to TOP