Hardware Hobbyists vs. Emulator Enthusiasts vs Replica Recreators

Roger Holmes roger.holmes at microspot.co.uk
Sat Jun 20 16:50:44 CDT 2009


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.




More information about the cctalk mailing list