Hi Roger,
thank you very much for your email and the time you spent in listing
the Elliott's assembler language! So you are one of the experts in
this field!
On Fri, 9 Mar 2007, Roger Holmes wrote:
Erik, well done with the reverse engineering.
Thanks.
Then I looked at the pictures, and saw it was made by
my old
employers, Marconi Avionics who took over Elliott Brothers, and
continued to make 920 series machines. I think there were 12 bit
versions made by one of the divisions, though I am surprised they
were still making them in the 1980s.
Yes, the unit was made after 1986 I think. One
quy in the
rec.aviation.military claimed, that the box might be from
early tornados as I mentioned in my original posting. I do
not know how long development of such an aircraft takes but
the first take-off was in 1974 I think, so this would match
the design of this box wuite well - what do you think?
One part of Elliott Brothers became GEC Computers
(based in
Borehamwood).
Yes, that matches - the core memory module already has the
label GEC. So this is (as I suspected) older than the CPU and
taken maybe from a different design?!
One of your labels is from Airborne Displays Division
based at the
same Rochester site as I worked. This was also part of Marconi
Avionics, and the company later changed its name to GEC Avionics. I
worked on compilers, linkers and other utility software for the 18
bit 920s before moving on to the Zilog Z8001.
Hey, than you are a valuable expert
on these - do you have
got any source of intormation about the 920s?
Erik, could you tell me if the instruction code is
anything like this:
0 Load B (indexing) register and the Q register (shift extension)
RIGHT
1 Add to accumulator
RIGHT
2 Negate and add to accumulator
RIGHT
3 Store the Q register
RIGHT
4 Load accumulator
RIGHT
5 Store accumulator
RIGHT
6 And to accumulator
RIGHT
7 Jump if zero
RIGHT
8 Jump
RIGHT
9 Jump if negative
RIGHT - all three jumps are relative ones
10 Increment
RIGHT
11 Store program counter (for function return)
SIMILAR - This stores PC and then does a
table jump
12 Multiply
RIGHT, unsigned multiplication
13 Divide
HMMM, the command takes very long but the results are
very strange. I thought it might be some type of
random number generation by an irreducible polynomal,
but it is definitively not Divide. Maybe here is something
different or wrong with the microcode.
14 Shift
In PART: Here exist many subgroups of commands including
shift left/right. Also the Q as you call it can be transferred
to Accu and vice versa. There als is a MTA (MoveToAccu as I call it)
which is a two-word instruction (most others are one-word) and
transfers the word following this command into Accu. About
16 bit patterns have (at least to me now) the same meaning in
this segment.
15 Input/Output and special (like interrupt return)
Yes, in part as well. Commands for sending and receiving
via the serial links I found here.
16 to 31, as above but indexed by B register.
NOPE - The box is 12-bit and does not have got this block.
EVERYTHING is done via the index register I as I called it.
So
#######
# # # ##### ###### # # ##
# # # # # # # # # #
##### # # # # ##### #### # #
# # # ##### # # # ######
# # # # # # # # # #
####### #### # # ###### # # # #
the box is a 12-bit version of the Elliot series of Computer.
Lot of work for rediscovering the instruction set of the 920
Elliot...
Roger, do you have got any detailed information on these
you are willing to share with me! I am familar with the above
mentioned instruction set, but some details are still open and
perhaps studying the Elliot would help to solve the remaining
problems??!?!?!!
In early versions of the 920, the B and Q registers
were the same
register and it and the program counter were held in memory. There
In this box the registers are stored in "batteries" of 74xxx flip
flops on the processor boards.
were four levels of interrupt and a set of these
registers for each,
held in location 0 to 7. The high end of memory held a paper tape
bootstrap, in later versions, this was just copied into core when the
machine was initialised.
Interesting. The Programmer Electronic Control starts
execution
at 0x0a0 after reset. But of course the application was different
and the operation software was completely loaded via the big plug
boefore operation.
If this indeed a military machine, you can be sure the
memory was
erase by flipping every bit backwards and forwards several hundred
times to remove any trace magnetism before it was released from the RAF.
Yes you
are probably right. I thought just in case there are some
fragements inside it would have been interesting to study them
in order to learn about the instruction set.
I am sure the unit supports interrupts (one for each serial
port (panavia link I think) and maybe there is an additional
for the timer. This timer has a reload register and
thus can be programmed to arbitrary intervals (12bit, running
at 2MHz). But up to now I was not able to read or write it
nor occured an interrupt. Here studying the Elliot would
really be inspiring - I am very sure that they reused the
know how here as well...
Roger, thank you very much for your posting and the valuable
input...
Best regards,
Erik.