On 18 Jun 2009, at 20:06, cctalk-request at
classiccmp.org wrote:
From: Ray Arachelian <ray at arachelian.com>
I now plan to publish my emulator on the web,
along with original
software which non programmers can run on it. I am very unsure of how
many people will be interested in such a thing. I need to get the
physical machine running to retrieve said software from unique ten
track mag tapes and from standard 80 column cards, though I could
probably get the latter read elsewhere, I don't want to have to
transport about 150,000 card somewhere to have them read, probably at
great cost.
Hey, I'd happily play with it. I probably won't get very deep
into
it,
but I would like to interact with it and see what it was like. (Which
mainframe btw?)
The ICT 1301 dating from 1962. It is possibly unique in not having a
program counter. Of course there is a way to get the next pair of
instructions or a double length instruction. If you think of it as a
three instruction pipeline which (in normal operation) always contain
an instruction to do the instruction fetch that gives you the idea.
The fetch instruction is an absolute jump, so contains the address.
After execution it re-enters the pipeline with one added. There can of
course be more than one absolute jump in the pipeline, it can even be
all jumps, and the jump instruction can be used to jump to a
subroutine which saves some of the pipeline in memory as its first
instruction.
Hopefully you'll add various things to make the
experience more
authentic, such as sounds and pictures/animation of actual tapes,
punch
cards, etc. (As much as possible.)
Yes that would be nice.
You've done a wonderful thing by letting people
look inside a large
machine. Hopefully you'll get the chance to do it again and get to
see
lots of smiles on the little kiddies faces.
Thanks. Not so much smiles as wide eyed amazement.
For micro
computers I agree, not quite sure this applies to
mainframes. I guess it depends on how you define software. If a
single
instruction is software then I suppose so. At the lowest level
debugging I can set an instruction into control register one, set the
machine to single cycle and watch the lights on the console as I send
single clock pulses through the hardware every time I press a button.
Sorry,
that's still running software. Microcode is still software
My machine has no microcode its all hard wired logic. Confusingly
there are two instructions, the multiply and the block move which
proceed in small steps in what the manuals micro instructions but
there is no memory of any sort they are read from, no micro
instruction set, just logic which decides if the multiplier, or word
count has reached zero and if a (decimal) digit is more or less than
five to decide to subtract or add the multiplier.
You can hold a programming class. Maybe provide
actual documentation
ahead of time so they know what to expect and can have an idea of what
sort of programs that they can execute, maybe provide some samples for
them to start with and tweak as they go along.
For ordinary visitors we don't have contact beforehand. We could
possibly have days in the same way as preserved steam railways have
days when they sell people the experience of being a steam engine
driver, under strict supervision of course. Car racing tracks have
days when you are taught the safety rules and the allowed to drive
around the track in a fast car accompanied by a professional racing
driver. This costs a lot of money of course. For computers maybe
something could be done on the web for free with emulation. This could
be worldwide all year around. Any local people could arrange to come
and run their programs on the real hardware in the warmer months.
If you can get actual
terminals to the mainframe, once they're done using the emulator, you
could fire up the real thing and let them play with that for a short
time. Maybe if you're worried about the cost of the electricity, you
could charge a bit of cash for that purpose and let them know what the
cost is for.
Forget terminals, the machine never had them. A very small number of
them had the optional teleprinter but I have never seen one. I could
hook up a teletype, Flexowriter or a Creed but there is no operating
system to use it with. There are 400 words of protected drum storage
to hold a punched card bootstrap and a few utilities.
I don't think several hundred visitors a day would
write code, they
might just want to see it in action, but maybe a few dozen would
like to
get deeper.
Maybe I could ask people this year if they would like to do that. Too
soon for this year anyway, 12th July is too soon to do anything much.
Sure, there will be much better 3D modeling software
out there by that
time, but I imagine many would want to go back and see what it was
like
in the day and experience that for themselves.
Hmm, I suppose I am falling into the same trap as the people who
scrapped the mainframes, assuming that because things are no longer
useful they have no reason to exist.
Myself, I have two little ones, they're not quite
old enough to
understand computers yet, though I've given them one to play with -
right now they just use it to watch videos or listen to kids'
audiobooks
on. Rarely they play games on them. But when they're about 9 or so I
imagine I can show them a lot more and let them play with the machines
I've collected over the years and maybe they can play with the ROM
BASIC
and code a bit. :-) Something I'm looking forward to.
Yes, before they become teenagers and have no patience.
One aspect of
emulators I have not yet explored is, well hold on a
second and I'll explain. When looking through the 1301's
documentation, circuit diagrams and instruction set, I am very
tempted
to add improvement which could have been done by the designer, but
for
some reason, either budgetary or lack of knowledge (some software
techniques had not been invented yet). In an emulator I could add
indexing or indirect addressing, or immediate mode data, or relative
mode, or branch on NOT some condition without having to modify the
actual hardware. I could then try programming the machine in that
configuration and see how it affected the program size and ease of
programming.
It would be even more fun if the emulator was done at logic gate
level
and even more so if mated to an interactive 3D model of the hardware
where you could open the cover, insert emulated scope probes and look
at the signals. You could even emulate random logic failures for
educational reasons, though to do so as a game would probably be a
step too far for me, though programming the emulator to do it WOULD
be
fun.
Right, a logic simulator could be used to model this, and later you
could change the emulator around to match the proposed change. Gate
level emulation is very difficult. Not so much difficult to write,
but
its going to require a lot of processing power, and the timing aspects
will be very hard to get right.
Fortunately I have a very slow machine to model, the faster
instruction takes 12 microseconds. There are about 4000 PCBs, 1000 of
which are JK flip-flops. The other 3000 have at most 4 And gates on
each, plus wire-or so I would guess about 15,000 gates and 1000 flip-
flops. I have scanned the 'Address Book' which lists all the
interconnections in the machine. I want to OCR it and then write a
program which generates C code to recursively process all changes in
logic level for that clock cycle and then latch the data into the flip-
flops at the end of the clock pulse. As there are so few logic levels
which change on each clock cycle I would think that could be done in
real time, after all a modern machine has a clock speed about 2000
times greater my 1301's 1MHz clock.
It has been done in the past, mainly to help designers
test out their
designs, but they typically run several thousand times slower than the
actual machine.
Presumably someone designing a new computer would be designing
something faster than what already exists so the simulation would be
often be running on a slower machine in the first place.
I remember there was something, possibly Java or such
on that page,
but
it's long gone now. Unfortunately it wasn't something one could
download. That's one of the things that utterly sucks about the web.
You can archive it, but things that depend on a back end server
can't be
replicated without having what runs there (or a simulation thereof.)
It's sad that it wasn't released publicly.
Now we have been appointed as the '1301 working group' of the CCS, the
other half of the team gets a seat on the CCS committee (I'm too busy
earning a living to keep going up to London every few months) so
perhaps he can see if that is a possibility.
Most of Colossus was just circuitry, not much to
program there, but
you
could code simulations of those circuits and provide code that does
similar enough things. (At least what little I know if it comes from
the book.)
I think you need a knowledge of basic cryptography to make much sense
of what the plug-able 'menus' do, knowledge I don't have.
Roger Holmes.