To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.roboticsOpen lugnet.robotics in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 Robotics / 20965
20964  |  20966
Subject: 
Re: The latest rage in pneumatic computing
Newsgroups: 
lugnet.robotics
Date: 
Sun, 22 Jun 2003 16:04:54 GMT
Original-From: 
Steve Baker <sjbaker1@airmail.net%saynotospam%>
Viewed: 
725 times
  
Kevin L. Clague wrote:

The full adder has three inputs A,B and carry in, and two outputs sum out and
carry out.

SumAB = A XOR B
Sum out = SumAB XOR Carry in
Carry out = (A AND B) OR (SumAB AND Carry in)

You need a total of 2 XOR gates, 2 AND gates and an OR gate.

I wonder if there are savings to be made by building the adder from scratch
rather than out of standard XOR/AND/OR gates.

I'm still thinking about a pneumatic computer......  Gotta buy more pistons and
switches though.

The big remaining issue is storage - both RAM and ROM.

Whilst you can theoretically build this out of flip-flops - and flip-flops out
of standard 2 input logic gates - I can't help feeling that having more than
a few dozen bits of storage would consume Lego's entire production of pneumatics!

If you want to build something that can actually run moderately interesting
programs, you'll need a LOT of ROM and at least a couple of bytes of RAM.

If each bit could be something like an axle pushed through a hole in a beam
with a '1' and a '0' being encoded by the amount of rod sticking out of the hole,
then it would be perfectly feasible to build many hundreds of bytes of storage
using only the Lego that most AFOL's have in their collections.

ROM could be built identically to RAM but with fixed pegs instead of movable axles.

The question is how to address it, read it and write it.

Since we can presumably build a pneumatic 'stepper motor' that would move a long
stack of beams up or down one row for each change to it's input, we could step
through a list of instructions stored in 'push rod' memory quite easily.

With a counter built from a multi-stage pneumatic adder, one could contemplate
building a 'jump' instruction.  You're also going to need some kind of
pneumatic 'shift-register' to hold the results of additions carried out with
your one-bit adder circuit.  (Either that or a LOT of those adder circuits!)

Reading memory would require something like a bank of switches that are flipped
by the push-rods or pegs that are protruding far enough.

Writing RAM memory could be done by pistons forming the output of gates simply
pushing against the movable axles from one side or the other of the memory
cell.

The question becomes one of how 'pure' you'd like to build your pneumatic
computer and whether you consider the use of geartrains and even possibly
electrical motors to be 'cheating'.

It's possible to build a working computer using nothing but a single
fairly simple instruction.  If you are serious about building this beast,
you should certainly read this:

http://www.cs.eku.edu/~styer/oisc.html

It contains six examples of hypothetical single-instruction set computers along
with working simulators and macro instructions to make them 'usable' by mere
mortals.

The most likely one seems to be the first one he describes where each instruction
consists solely of four numbers "A B C D".  Each cycle, the computer fetches
four numbers from the current location in memory and does this:

  Read the number stored at address A
  Subtract from it the literal constant B
  Store the result in the memory at address C
  Then either branch to the instruction at memory location D or continue
    with the instruction in the memory location immediately after this
    one depending on whether the result of the subtraction as negative
    or not.

Or in C code:

   *C = *A - B
   if ( *C < 0 ) goto D

If you can crack the memory storage, reading, writing and addressing
problem, then you only need a subractor and a way to do a jump to some
new instruction.

A, C could well be quite small numbers - perhaps just three bits each.
D needs to be larger in order to cater for programs of a reasonable length
(say at least 6 bits) and B probably needs to be at least 8 bits.

Input and output could be just like the very early computers where humans
could set numbers into RAM just by flipping some switches - and read the
contents of RAM just by looking at it.  However, with that approach, you
need a way to have the computer pause itself when it wants input or when
it needs to show you some output - so adding one more bit of ROM memory
to each location would be useful.

Allowing the user to push/pull the pushrods in RAM memory while the program
is 'paused' serves as an input device, looking at the pushrods at a
particular location serves as an output device.

This would make your instruction ROM be 21 bits wide - and 64 locations
long and your RAM be 8 bits wide and have just 8 locations of storage.
That seems a manageable amount to build using pushrods and long pegs.

So, a computer that simple might well be buildable and capable of running
significant programs.  One classic "The High/Low Game" (for example)
ought to be implementable on a machine with a handful of RAM locations
and maybe 64 instructions of ROM.

---------------------------- Steve Baker -------------------------
HomeEmail: <sjbaker1@airmail.net>    WorkEmail: <sjbaker@link.com>
HomePage : http://www.sjbaker.org
Projects : http://plib.sf.net    http://tuxaqfh.sf.net
            http://tuxkart.sf.net http://prettypoly.sf.net
-----BEGIN GEEK CODE BLOCK-----
GCS d-- s:+ a+ C++++$ UL+++$ P--- L++++$ E--- W+++ N o+ K? w--- !O M- V-- PS++ PE- Y-- PGP-- t+ 5 X R+++ tv b++ DI++ D G+ e++ h--(-) r+++ y++++
-----END GEEK CODE BLOCK-----



Message has 1 Reply:
  Re: The latest rage in pneumatic computing
 
(...) I thought so too, so I designed one. See elsewhere in this thread. (...) Yeah, I thought so too. (...) This is almost exactly what I was envisioning!!! Cool. Glad to know I'm not the only one psychotic enough to come up with a cockamamy idea. (...) (21 years ago, 22-Jun-03, to lugnet.robotics)

9 Messages in This Thread:



Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR