From: "Patrick R. Gili" <pg...@ix.netcom.com>
Subject: Inside RCX
Date: 1998/09/06
Message-ID: <6suflv$s2v@sjx-ixn4.ix.netcom.com>#1/1
X-Deja-AN: 388444226
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Organization: ICGNetcom
X-NETCOM-Date: Sun Sep 06 10:10:23 AM PDT 1998
Newsgroups: rec.toys.lego

Ahh, holiday weekends! I finally have a chance to sit down and really
start playing with my RCX.

After installing the software and going through the entire guided
setup (boring), I decided to really advance. So, I pulled out my
tools and carefully pulled the RCX apart.

I have some notes for anyone that wants to open up their RCX. This
task is non-trivial, as the battery holder is "clipped" to the PCB.

You can bend the clips back to release the battery holder. However,
this can damage the PCB and the clips. Or,...

Find yourself a very small flathead screwdriver, a jeweller's screw-
driver is preferable for this task. Carefully lift one side of the battery
holder and look for two "slots". Now gently insert the screwdriver into
these slots and "pop" the PCB off the clips holding it to the front cover.
You probably want to repeat this process on the other side of the
battery holder. The clips holding the PCB to the front cover are actually
the connectors between the PCB and the "port pads". Hint: keep the
front cover facing down; otherwise, when you remove the PCB the
buttons and "port pads" will fall out.

Now you have the battery holder and PCB--notice the power clips
holding the battery holder to the PCB. If you want to remove the PCB,
you can do this by gently rotating the PCB counterclockwise so as to
slide it out from underneath the power clips.

You can reassemble the RCX by following this process in reverse.
You might want to bend the power clips down a little with a small
pair of pliers before reattaching the PCB to the battery holder. This
ensures that the power clips contact the pads on the PCB.

From: "Todd Ogasawara" <Todd...@msn.com>
Subject: Re: Inside RCX
Date: 1998/09/06
Message-ID: <6suqfn$f11$1@news-2.news.gte.net>#1/1
X-Deja-AN: 388487120
References: <6suflv$s2v@sjx-ixn4.ix.netcom.com>
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Organization: gte.net
X-Auth: C21C91150E8184C611918491
Newsgroups: rec.toys.lego

If you have some digital photos of the inside of the RCX, I'll be happy to
put them on my mini personal Mindstorms web site.

I would open up my RCX myself... but you know what they say about
programmers with screwdrivers :-)...todd

>Ahh, holiday weekends! I finally have a chance to sit down and really
>start playing with my RCX.
>
>After installing the software and going through the entire guided
>setup (boring), I decided to really advance. So, I pulled out my
>tools and carefully pulled the RCX apart.
>
>I have some notes for anyone that wants to open up their RCX. This
>task is non-trivial, as the battery holder is "clipped" to the PCB.
>
>You can bend the clips back to release the battery holder. However,
>this can damage the PCB and the clips. Or,...
>
>Find yourself a very small flathead screwdriver, a jeweller's screw-
>driver is preferable for this task. Carefully lift one side of the battery
>holder and look for two "slots". Now gently insert the screwdriver into
>these slots and "pop" the PCB off the clips holding it to the front cover.
>You probably want to repeat this process on the other side of the
>battery holder. The clips holding the PCB to the front cover are actually
>the connectors between the PCB and the "port pads". Hint: keep the
>front cover facing down; otherwise, when you remove the PCB the
>buttons and "port pads" will fall out.
>
>Now you have the battery holder and PCB--notice the power clips
>holding the battery holder to the PCB. If you want to remove the PCB,
>you can do this by gently rotating the PCB counterclockwise so as to
>slide it out from underneath the power clips.
>
>You can reassemble the RCX by following this process in reverse.
>You might want to bend the power clips down a little with a small
>pair of pliers before reattaching the PCB to the battery holder. This
>ensures that the power clips contact the pads on the PCB.
>
>
>

From: "Patrick R. Gili" <pg...@ix.netcom.com>
Subject: Re: Inside RCX
Date: 1998/09/07
Message-ID: <6t16os$gi7@sjx-ixn4.ix.netcom.com>#1/1
X-Deja-AN: 388763240
References: <6suflv$s2v@sjx-ixn4.ix.netcom.com> 
<6suqfn$f11$1@news-2.news.gte.net>
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Organization: ICGNetcom
X-NETCOM-Date: Mon Sep 07 10:56:44 AM PDT 1998
Newsgroups: rec.toys.lego

I have some pictures, but they suck. I don't know much about photography,
and can't seem to prepare the lighting correctly. I have a Sony DCS-F1
digital camera, which supports up a 640x480 mode of resolution.

What I would like to do, is take my RCX apart again, and this time take
pictures along the way. Perhaps someone can give me advice on how
to take good up-close pictures.

I have a Mindstorms web-site as well. However, Lego really does intend
someone to use these for pictures of their Mindstorms models. I don't
know how Lego would feel about me putting these kind of pictures up
there. Rather, I am going to put FrontPage 98 on my system and put
something of my own together. I do believe that Netcom (my ISP) gives
us 10 MB of space for serving our own web-page(s). I can also use
GeoCities or Tripod. Do these services limit you to 10 MB as well?
I'm wondering how far 10 MB will go. Pictures take up so much space,
unless you compress the crap out of them. I know I am not prepared
to pay someone to host my web-pages.

Todd Ogasawara wrote in message <6suqfn$f11$1...@news-2.news.gte.net>...
>If you have some digital photos of the inside of the RCX, I'll be happy to
>put them on my mini personal Mindstorms web site.
>
>I would open up my RCX myself... but you know what they say about
>programmers with screwdrivers :-)...todd
>
>>Ahh, holiday weekends! I finally have a chance to sit down and really
>>start playing with my RCX.
>>
>>After installing the software and going through the entire guided
>>setup (boring), I decided to really advance. So, I pulled out my
>>tools and carefully pulled the RCX apart.
>>
>>I have some notes for anyone that wants to open up their RCX. This
>>task is non-trivial, as the battery holder is "clipped" to the PCB.
>>
>>You can bend the clips back to release the battery holder. However,
>>this can damage the PCB and the clips. Or,...
>>
>>Find yourself a very small flathead screwdriver, a jeweller's screw-
>>driver is preferable for this task. Carefully lift one side of the battery
>>holder and look for two "slots". Now gently insert the screwdriver into
>>these slots and "pop" the PCB off the clips holding it to the front cover.
>>You probably want to repeat this process on the other side of the
>>battery holder. The clips holding the PCB to the front cover are actually
>>the connectors between the PCB and the "port pads". Hint: keep the
>>front cover facing down; otherwise, when you remove the PCB the
>>buttons and "port pads" will fall out.
>>
>>Now you have the battery holder and PCB--notice the power clips
>>holding the battery holder to the PCB. If you want to remove the PCB,
>>you can do this by gently rotating the PCB counterclockwise so as to
>>slide it out from underneath the power clips.
>>
>>You can reassemble the RCX by following this process in reverse.
>>You might want to bend the power clips down a little with a small
>>pair of pliers before reattaching the PCB to the battery holder. This
>>ensures that the power clips contact the pads on the PCB.
>>
>>
>>
>
>

From: ke...@pixel.Stanford.EDU (Kekoa Proudfoot)
Subject: Re: Inside RCX
Date: 1998/09/07
Message-ID: <6t17h7$feq@pixel.Stanford.EDU>#1/1
X-Deja-AN: 388763244
References: <6suflv$s2v@sjx-ixn4.ix.netcom.com> 
<6suqfn$f11$1@news-2.news.gte.net> <6t16os$gi7@sjx-ixn4.ix.netcom.com>
Organization: Stanford University, CA 94305, USA
Newsgroups: rec.toys.lego

Patrick R. Gili <pg...@ix.netcom.com> wrote:
> I have some pictures, but they suck. I don't know much about photography,
> and can't seem to prepare the lighting correctly. I have a Sony DCS-F1
> digital camera, which supports up a 640x480 mode of resolution.

I made some pictures and scans sometime last weekend and put the on the
web.  See:

http://www-graphics.stanford.edu/~kekoa/rcx/

Also, you might be interested in visiting the following site if you haven't
already done so:

http://www.crynwr.com/lego-robotics/

-Kekoa

From: "Patrick R. Gili" <pg...@ix.netcom.com>
Subject: Re: Inside RCX
Date: 1998/09/07
Message-ID: <6t1ad9$io0@sjx-ixn4.ix.netcom.com>#1/1
X-Deja-AN: 388780424
References: <6suflv$s2v@sjx-ixn4.ix.netcom.com> 
<6suqfn$f11$1@news-2.news.gte.net> <6t16os$gi7@sjx-ixn4.ix.netcom.com> 
<6t17h7$feq@pixel.Stanford.EDU>
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Organization: ICGNetcom
X-NETCOM-Date: Mon Sep 07 11:58:49 AM PDT 1998
Newsgroups: rec.toys.lego

Yes, I saw these pictures and became disappointed when I could not
read the markings on the chips. This caused a sudden need to tear
the thing open myself.

You identified the three chips on the right side of the "bottom" of the PCB
as latches, the chips marked ELEX 10402B. Who makes these chips?

In addition, there is a rather large component stuck between two components
that look like LEDs. I had one theory that the two LED-like components were
the IR transmitter and receiver, leaving me with the question, "What is that
rather large thing between them pointing out through the 'lens'?" I have
another
theory that the two LED-like components are transmitter, and the big
component
between them is an IR-receiver.

I believe that the F3055L in the lower-left corner is a 5V voltage
regulator.
If this is so, then this sucks. A linear voltage regulator has about a 50%
efficiency
rating--which means are our half of our battery juice is being thrown away
(well,
that which is being drawn by the circuitry, or that which is not being drawn
by the
motors).

It also looks like the running the H8/3294 at 16 MHz. The little device
mounted
above it looks like a 16 MHz crystal. This means that the board is operating
at
5V, since the spec says that the H8 can only be run at 16 MHz if it is
running
at 5V.

It looks like the RAM chip is a 32Kx8 bit RAM. The H8/3294 has 1K of RAM and
32K of ROM. There are no other memory devices on the PCB. Thus, the firmware
must reside in RAM, leaving little room for our programs when all is said
and done.

On the "bottom" you will note some rather large capacitors on the right side
of
the PCB--six in all. Given the small number of components and the
lower-power
nature of most of them, these capacitors are probably enought to provide the
memory with power when changing batteries. Has anyone successfully changed
their batteries yet without having to re-download the firmware again?

I think the component under the LCD is a display controller. Does anyone
think
that the display is custom? I mean it could be rip-off from a stop watch
assembly.
You know, the little man running can indicate that the stopwatch is running.



Kekoa Proudfoot wrote in message <6t17h7$f...@pixel.Stanford.EDU>...
>Patrick R. Gili <pg...@ix.netcom.com> wrote:
>> I have some pictures, but they suck. I don't know much about photography,
>> and can't seem to prepare the lighting correctly. I have a Sony DCS-F1
>> digital camera, which supports up a 640x480 mode of resolution.
>
>I made some pictures and scans sometime last weekend and put the on the
>web.  See:
>
>http://www-graphics.stanford.edu/~kekoa/rcx/
>
>Also, you might be interested in visiting the following site if you haven't
>already done so:
>
>http://www.crynwr.com/lego-robotics/
>
>-Kekoa
>

From: "Ralph Hempel" <CanTh...@StopSpam.com>
Subject: Re: Inside RCX and RCX alone....
Date: 1998/09/07
Message-ID: <905201786.234702@Virginia>#1/1
X-Deja-AN: 388814168
Cache-Post-Path: Virginia!unk...@ts2-cp02.bmts.com
References: <6suflv$s2v@sjx-ixn4.ix.netcom.com> 
<6suqfn$f11$1@news-2.news.gte.net> <6t16os$gi7@sjx-ixn4.ix.netcom.com> 
<6t17h7$feq@pixel.Stanford.EDU> <6t1ad9$io0@sjx-ixn4.ix.netcom.com>
Organization: Bruce Municipal Telephone System
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Newsgroups: rec.toys.lego

NOTE. I'm an embedded elecronics engineer, but I do not have an RCX. I'm
just going by the pictures on Kekoa's excellent site...

>I believe that the F3055L in the lower-left corner is a 5V voltage
>regulator.

This is actually a 3055 logic level MOSFET. It's used for power switching
and may be used as part of a switching voltage regulator - much more
efficient
than a linear unit.

The caps are there to (probably) level out the spikes generated when
switching
motors for PWM. They may also probably provide some "backup" during
recharge.

The display is probably custom. It's hard to get exactly what you need
off the shelf.

Some of you may remember me as an engineer taht wanted to make a more
"packaged" version of a controller, then RCX was announced and I shelved
the plans. If you can get a huge pox ful of parts, plus motors, sensors,
and a controller for $200, you can NEVER make it for that yourself.

Having a huge whack of Technic and motors already, how long before S@H
offers
replacement RCXs and sensors.

Question? Can someone out there with a real RCX please ask LEGO for a
replacement? I'd just like to see the customer service response...

--

Cheers,

Ralph Hempel - P.Eng

------------------------------------------------------
The train stops at the train station,
The bus stops at the bus station,
So why am I sitting at a work station?
------------------------------------------------------
Reply to:      rhempel at bmts dot com
------------------------------------------------------

From: "Patrick R. Gili" <pg...@ix.netcom.com>
Subject: Re: Inside RCX and RCX alone....
Date: 1998/09/07
Message-ID: <6t1p8q$ivn@sjx-ixn9.ix.netcom.com>#1/1
X-Deja-AN: 388850037
References: <6suflv$s2v@sjx-ixn4.ix.netcom.com> 
<6suqfn$f11$1@news-2.news.gte.net> <6t16os$gi7@sjx-ixn4.ix.netcom.com> 
<6t17h7$feq@pixel.Stanford.EDU> <6t1ad9$io0@sjx-ixn4.ix.netcom.com> 
<905201786.234702@Virginia>
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Organization: ICGNetcom
X-NETCOM-Date: Mon Sep 07  4:12:26 PM PDT 1998
Newsgroups: rec.toys.lego

Wow! This is great information. I searched high and low for data on some
of the parts in the RCX. Unfortunately, it goes rather slowly with 28.8K
modem.
I wish our town had cable modem.

It is nice to know that Lego is trying to make the best of our batteries by
using
a switched power supply. Why wouldn't they have just used an off-the-shelf
DC-to-DC converter? They have become so inexpensive over the past three
years.

On the subject of the caps. I believe some of them might be to provide
non-volatility between battery changes. I tried taking my batteries out
and putting them back today, and the firmware did not have to be
reloaded. This is trick we used at one company I worked for--using a
big cap to provide a "battery" to non-volatile memory. It was a pain
though, because we spent too much time trying to reduce the load
on the battery using all kinds of special circuitry to isolate the memory
that wanted to make non-volatile.

Any clue on the ELEX 10402B's. Kekoa claims these things are
latches. Who manufacturered these?

Lego does not use the full capabilities of the H8--there are left over
I/O ports. I wonder how hard it would be to expand the number of ports
the RCX supports. Unfortunately, this would undoubtedly require a
modification to firmware. It probably wouldn't be worth it.

Thanks for the information Ralph.
Patrick Gili


Ralph Hempel wrote in message <905201786.234702@Virginia>...
>NOTE. I'm an embedded elecronics engineer, but I do not have an RCX. I'm
>just going by the pictures on Kekoa's excellent site...
>
>>I believe that the F3055L in the lower-left corner is a 5V voltage
>>regulator.
>
>This is actually a 3055 logic level MOSFET. It's used for power switching
>and may be used as part of a switching voltage regulator - much more
>efficient
>than a linear unit.
>
>The caps are there to (probably) level out the spikes generated when
>switching
>motors for PWM. They may also probably provide some "backup" during
>recharge.
>
>The display is probably custom. It's hard to get exactly what you need
>off the shelf.
>
>Some of you may remember me as an engineer taht wanted to make a more
>"packaged" version of a controller, then RCX was announced and I shelved
>the plans. If you can get a huge pox ful of parts, plus motors, sensors,
>and a controller for $200, you can NEVER make it for that yourself.
>
>Having a huge whack of Technic and motors already, how long before S@H
>offers
>replacement RCXs and sensors.
>
>Question? Can someone out there with a real RCX please ask LEGO for a
>replacement? I'd just like to see the customer service response...
>
>--
>
>Cheers,
>
>Ralph Hempel - P.Eng
>
>------------------------------------------------------
>The train stops at the train station,
>The bus stops at the bus station,
>So why am I sitting at a work station?
>------------------------------------------------------
>Reply to:      rhempel at bmts dot com
>------------------------------------------------------
>
>
>

From: ke...@pixel.Stanford.EDU (Kekoa Proudfoot)
Subject: Re: Inside RCX
Date: 1998/09/07
Message-ID: <6t1qdk$ha1@pixel.Stanford.EDU>#1/1
X-Deja-AN: 388856163
References: <6suflv$s2v@sjx-ixn4.ix.netcom.com> 
<6t16os$gi7@sjx-ixn4.ix.netcom.com> <6t17h7$feq@pixel.Stanford.EDU> 
<6t1ad9$io0@sjx-ixn4.ix.netcom.com>
Organization: Stanford University, CA 94305, USA
Newsgroups: rec.toys.lego

Patrick R. Gili <pg...@ix.netcom.com> wrote:
> Yes, I saw these pictures and became disappointed when I could not
> read the markings on the chips. This caused a sudden need to tear
> the thing open myself.

My apologies for the unreadable ingraved markings that didn't scan well.

Let's see, you made a lot of interesting comments.  For starters, I looked
up all the chip numbers at:

http://www.hitex.com/chipdir/chipdir.htm

I may have misidentified several of the chips.

Regarding the large component between the two components that look like
LEDs - the large component is the IR receiver and the two LEDs are simply
LEDs, IR of course.  I verified this by looking at the PC base transceiver,
which uses the same components as the RCX, with a small video camera whose
lens was obscured by the IR filter from the RCX.  Both LEDs light up during
a transmit, therefore the other element must be the receiver.

By the way, the insides of the PC transceiver are also somewhat neat to
look at; I took more pictures and put the along with the others at:

http://graphics.stanford.edu/~kekoa/rcx

As for the microcontroller, mine is labelled with a 3292, not a 3294.
Also, I couldn't find any information on the 32XX series; if anyone has a
spec, I'd like a pointer to where to get one for myself.

I agree that the capacitors are probably used for powering the board during
a battery change, I think 32K of is plenty considering the language we get
to program in, and I'm pretty sure the chip under the LCD is a standard LCD
controller.  If I remember correctly, the part number on that chip was an
easy find.

-Kekoa

From: "Ralph Hempel" <CanTh...@StopSpam.com>
Subject: Re: Inside RCX and RCX alone....
Date: 1998/09/07
Message-ID: <905221697.863603@Virginia>#1/1
X-Deja-AN: 388891299
Cache-Post-Path: Virginia!unk...@ts2-ap59.bmts.com
References: <6suflv$s2v@sjx-ixn4.ix.netcom.com> 
<6suqfn$f11$1@news-2.news.gte.net> <6t16os$gi7@sjx-ixn4.ix.netcom.com> 
<6t17h7$feq@pixel.Stanford.EDU> <6t1ad9$io0@sjx-ixn4.ix.netcom.com> 
<905201786.234702@Virginia> <6t1p8q$ivn@sjx-ixn9.ix.netcom.com>
Organization: Bruce Municipal Telephone System
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Newsgroups: rec.toys.lego

Patrick R. Gili wrote in message <6t1p8q$i...@sjx-ixn9.ix.netcom.com>...

>It is nice to know that Lego is trying to make the best of our batteries by
>using
>a switched power supply. Why wouldn't they have just used an off-the-shelf
>DC-to-DC converter? They have become so inexpensive over the past three
>years

Off the shelf DC-DC is expensive. In the world of consumer
electronics, you NEVER add cost (even pennies) without a very
good reason.

The 3055 is a great general purpose MOSFET switch. You can use it
to drive a motor, do power supply switching, or even for the
IR transmitter.

Without one of these darned things in front of me, I'm working
blind. Donations anyone? I'll buy fried units eventually if you keep
taking them apart :-)

The real beauty of Mindstorms is NOT the controller. It's the
visual programming paradigm of being able to "draw" the flowchart
and compile it and download it. Sort of reminds me of the mindshift
of using the $1 background debug port on Motorola controllers instead
of a $6000 in circuit emulator.

For too long, embedded products have been done by engineers
for engineers. Witness programming the VCR. With on-screen
programming it's easier than ever, we're just too damn lazy
to do it.

--

Cheers,

Ralph Hempel - P.Eng

------------------------------------------------------
The train stops at the train station,
The bus stops at the bus station,
So why am I sitting at a work station?
------------------------------------------------------
Reply to:      rhempel at bmts dot com
------------------------------------------------------

From: ke...@pixel.Stanford.EDU (Kekoa Proudfoot)
Subject: Re: Inside RCX and RCX alone....
Date: 1998/09/08
Message-ID: <6t3cg3$lfk@pixel.Stanford.EDU>#1/1
X-Deja-AN: 389030253
References: <6suflv$s2v@sjx-ixn4.ix.netcom.com> 
<905201786.234702@Virginia> <6t1p8q$ivn@sjx-ixn9.ix.netcom.com> 
<905221697.863603@Virginia>
Organization: Stanford University, CA 94305, USA
Newsgroups: rec.toys.lego

Ralph Hempel <CanTh...@StopSpam.com> wrote:
> The real beauty of Mindstorms is NOT the controller. It's the
> visual programming paradigm of being able to "draw" the flowchart
> and compile it and download it.

Personally, I would be much happier programming the controller in C.

Not that I'm trying to say that Lego Logo is a bad thing - it certainly
seems like a good way to introduce someone to programming, since a program
written in Lego Logo is very easy to understand - but the language itself
is quite limiting.  In Lego Logo, variables are implicit, arrays don't
exist, control structures are overly simple, moving visual elements around
is slow, and (gasp) the size of a stack of commands is limited.  Perhaps
this encourages better code organization through the use of My Commands
stacks, but it seems painful at times.

If I had a kid, though, I would definitely start them with something simple
and work up from there, and Mindstorms (not C!) would make an excellent
starting point.  Not only is it easy to learn - there are practical things
you can do right from the start - note the how the tutorial is structured.
The system encourages creativity and can be a lot of fun.

-Kekoa

From: "Richard and Debora Everett" <eve...@oz.net>
Subject: Re: Inside the RCX
Date: 1998/09/11
Message-ID: <35fa142f.0@news.oz.net>#1/1
X-Deja-AN: 390356905
Organization: Sense Networking Seattle (http://www.oz.net)
Newsgroups: rec.toys.lego
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4

The RCX has a Hitachi H8  family processor

There seems to be 32K or so of "program space", which I guess is shared by
the firmware bootstrap downloaded from the mindstorms Windows software.
There must be some sort of bios in the H8 rom (eprom?).  I think the
possiblity of at least limited hacking exists, since there is that firmware
download...

Has anyone else started working on the lower level interfaces?

By the way, don't you think it is pretty impressive that lego can send power
to the light sensor led, reguardless of polarity, and get a signal back from
the phototransistor, all on two wires?  I have heard there are quite a few
components inside that little blue block, and it seems quite an engineering
feat.

Rick

Here is some info on the H8:

H8/3292, H8/3294, H8/3296, H8/3297
The H8/3297 family is the first family of devices offered in the next
generation of 0.8um H8/300's. These devices offer higher performance than
the standard H8/300's and a higher level of peripheral integration. The
H8/3297 family are upwardly compatible with the existing H8/329 family of
devices, offering the user enhancements in both performance and
functionality. Its features include:-

16 KBytes to 60 KBytes ROM/PROM/EPROM
512 Bytes to 2 KBytes RAM
16 bit counter/timer - 1 channel
8 bit counter/timer - 2 channels
Watchdog/Interval Timer - 1 channel
10 bit A/D converter - 8 channels
Async/sync serial port - 1 channel
43 Input/Output lines
8 input only lines
64 pin package

From: ke...@candela.Stanford.EDU (Kekoa Proudfoot)
Subject: Re: Inside the RCX
Date: 1998/09/12
Message-ID: <6tddl4$17vk@candela.Stanford.EDU>#1/1
X-Deja-AN: 390379370
References: <35fa142f.0@news.oz.net>
Organization: Stanford University, CA 94305, USA
Newsgroups: rec.toys.lego

Richard and Debora Everett <eve...@oz.net> wrote:
> The RCX has a Hitachi H8  family processor
> 
> There seems to be 32K or so of "program space", which I guess is shared by
> the firmware bootstrap downloaded from the mindstorms Windows software.
> There must be some sort of bios in the H8 rom (eprom?).  I think the
> possiblity of at least limited hacking exists, since there is that firmware
> download...
> 
> Has anyone else started working on the lower level interfaces?

How low is lower level?  At some point, I imagine someone will disassemble
the firmware, regardless of whether or not the software license agreement
allows it.  Knowledge gained from the disassembly will allow people to get
as low level as the H8 itself.

But before that happens, there's the serial protocol/internal byte code to
figure out.  Most of that work is almost done.  See:

http://graphics.stanford.edu/~kekoa/rcx/

-Kekoa

From: "Patrick R. Gili" <pg...@ix.netcom.com>
Subject: Re: Inside the RCX
Date: 1998/09/12
Message-ID: <6tdtpa$53j@dfw-ixnews10.ix.netcom.com>#1/1
X-Deja-AN: 390419574
References: <35fa142f.0@news.oz.net>
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Organization: ICGNetcom
X-NETCOM-Date: Sat Sep 12  8:43:06 AM CDT 1998
Newsgroups: rec.toys.lego

I would love to reverse engineer the PCB, it would give us tremendous
insight as to how to develop sensors. Much of the circuit can be deduced
from the parts, as the circuit contains few parts (ignoring all the caps,
many of which are for decoupling. However, the rest of the circuit would
have to be ohmed out, which places your RCX at tremendous risk.

First, there is the risk of static. This can be avoided through the use of
an antistatic wrist-strap and an antistatic pad on which to do the work.
However, one would also have to properly ground the instrument you
use to ohm out the circuit.

Second, the process of ohming out a circuit requires probes to come
into contact with components. You always run the risk of scratching etch,
even breaking it.

As for reverse engineering the firmware--this is a HUGE job. First,
I would think that you would want to find a way to disassemble the
firmware resident in the H8's ROM before anything. I agree that one
could probably gleen something about the "BIOS" from the firmware
that is downloaded to the RCX; however, to really gain an real good
understanding, you need to disassemble the "BIOS". So how do you
do this, especially without destroying the RCX?

Reverse engineering the downloaded firmware can't be that difficult.
All you have to do is find the file, dump it, figure out its encoding,
and run it through a disassembler. BTW, does anyone out there have
an H8 disassembler? If not, it can't be that difficult to conjure one up,
as the thing as so few instructions.

Developing our own sensors could be problematic, as the firmware
does a lot of work for us. Unless you developed sensors that behaved
just like one of the currently available sensors, you'd have big job
ahead of you.

From: ke...@pixel.Stanford.EDU (Kekoa Proudfoot)
Subject: Re: Inside the RCX
Date: 1998/09/12
Message-ID: <6teo3e$o8m@pixel.Stanford.EDU>#1/1
X-Deja-AN: 390516814
References: <35fa142f.0@news.oz.net> <6tdtpa$53j@dfw-ixnews10.ix.netcom.com>
Organization: Stanford University, CA 94305, USA
Newsgroups: rec.toys.lego

Patrick R. Gili <pg...@ix.netcom.com> wrote:
> As for reverse engineering the firmware--this is a HUGE job. First,
> I would think that you would want to find a way to disassemble the
> firmware resident in the H8's ROM before anything. I agree that one
> could probably gleen something about the "BIOS" from the firmware
> that is downloaded to the RCX; however, to really gain an real good
> understanding, you need to disassemble the "BIOS". So how do you
> do this, especially without destroying the RCX?
> 
> Reverse engineering the downloaded firmware can't be that difficult.
> All you have to do is find the file, dump it, figure out its encoding,
> and run it through a disassembler. BTW, does anyone out there have
> an H8 disassembler? If not, it can't be that difficult to conjure one up,
> as the thing as so few instructions.

I think the most feasible way to reverse engineer the firmware and the ROM
code would be to 1) figure out where the ROM code makes calls into the
firmware, 2) replace the firmware with code to capture a ROM image, 3)
transmit the ROM image over the IR link to be processed offline.  Once the
ROM image has been obtained and analyzed, it will be possible to determine
how much flexibility the system has with regards to major modifications.

Step 1 sounds the hardest, because it requires in-depth knowledge about the
firmware code and a good amount of trial and error.  Step 2 will require a
bit of care, since it's not clear how the ROM code, which probably drives
the RCX at a very low level, interacts with the firmware, which might not
have complete control over the processor and its memories.  Step 3 will
probably not be too difficult; it will require some knowledge about how the
firmware interacts with the ROM code with regards to the IR link.  My guess
is that by the time anyone gets to step 3, steps 1 and 2 will have made
that final step a cinch.

By the way, the firmware file is Firm/Firm0309.lgo.  Someone pointed out
that it's in Motorola S-record format, which means that it shouldn't be too
difficult for someone so-inclined to make an image of the firmware software
that can then be disassembled.

-Kekoa

From: "Ralph Hempel" <CanTh...@StopSpam.com>
Subject: Re: Inside the RCX
Date: 1998/09/14
Message-ID: <905805381.375912@Virginia>#1/1
X-Deja-AN: 391108346
Cache-Post-Path: Virginia!unk...@ts2-ap16.bmts.com
References: <35fa142f.0@news.oz.net> <6tdtpa$53j@dfw-ixnews10.ix.netcom.com>
Organization: Bruce Municipal Telephone System
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Newsgroups: rec.toys.lego

I'm not sure about the H8, but most of the other
little MCUs I work with have a code protection scheme
that prevents reverse engineering of ON-CHIP resources.

I'd think that the better (and less expensive) way to figure
out how the sensors work is by taking apart sensors.

You can get clues by the number of wires. For example, a two
wire sensor is almost always resistive, that is given a constant
voltage to drive the sensor, it changes its impedance on
the line based on input conditions. A switch is a good
example of this as a digital value. A thermistor is another.

A three wire sensor is probably ratiometric. You put a voltage
across the supply terminals, and the third wire tells
you what portion of the range the sensor's value is in. A
trimpot is a good example of this. You might have a distance
sensor that works like this.

Is there any serious interest in hacking rotation sensors? I have
one design in my head that is a two or three wire sensor and is about the
size of the fibre optic box.

A two wire sensor is easiest since it can use standard LEGO
interconnects.

--

Cheers,

Ralph Hempel - P.Eng

------------------------------------------------------
The train stops at the train station,
The bus stops at the bus station,
So why am I sitting at a work station?
------------------------------------------------------
Reply to:      rhempel at bmts dot com
------------------------------------------------------

From: ke...@pixel.Stanford.EDU (Kekoa Proudfoot)
Subject: Re: Inside the RCX
Date: 1998/09/14
Message-ID: <6tk5hb$8j6@pixel.Stanford.EDU>#1/1
X-Deja-AN: 391145636
References: <35fa142f.0@news.oz.net> 
<6tdtpa$53j@dfw-ixnews10.ix.netcom.com> <905805381.375912@Virginia>
Organization: Stanford University, CA 94305, USA
Newsgroups: rec.toys.lego

Ralph Hempel <CanTh...@StopSpam.com> wrote:
> I'd think that the better (and less expensive) way to figure out how the
> sensors work is by taking apart sensors.

I agree, but only partly.  You will probably have to destroy the casing of
the sensor to open it.  And at the going rate of a sensor, that's too
expensive for the knowledge I'd gain. (*)

As for the light sensor, I hooked the external leads up to a scope the
other day.  Here are my notes:

   Light sensor sampled approx every 3 ms.  Waveform is high for all of 3
   ms, except for a 0.1 ms period when the sensor is sampled, during which
   period the voltage drops low.  The low point is proportional to the
   value on the sensor.

The sensor probably accumulates charge in a capacitor during the period
when the voltage is high, then, when the RCX drops the voltage low, the
capacitor discharges through an LED and a resistor connected to a
phototransistor.  The voltage across the resistor keeps the low point above
zero, and the RCX/H8 samples the voltage sometime during the 0.1 ms.

At least, something along those lines is how I'd build a light sensor.

Oh, in case you didn't know already, all of the LEGO sensors have exactly
two leads.  At least, the LEGO wire connectors that I have only support two
leads.

-Kekoa

(*) But feel free to send me a LEGO sensor and I will gladly crack it open,
    analyze its contents, and report back to you.

From: ke...@pixel.Stanford.EDU (Kekoa Proudfoot)
Subject: Re: Inside the RCX
Date: 1998/09/14
Message-ID: <6tk7fm$8pa@pixel.Stanford.EDU>#1/1
X-Deja-AN: 391151987
References: <35fa142f.0@news.oz.net> 
<6tdtpa$53j@dfw-ixnews10.ix.netcom.com> <905805381.375912@Virginia>
Organization: Stanford University, CA 94305, USA
Newsgroups: rec.toys.lego

Ralph Hempel <CanTh...@StopSpam.com> wrote:
> I'm not sure about the H8, but most of the other little MCUs I work with
> have a code protection scheme that prevents reverse engineering of
> ON-CHIP resources.

Regarding this point, doesn't the feature you're talking only prevent you
from directly accessing the on-chip memories from the external pins?  I
think the usefulness of this feature is limited once you can write additional
code for the processor.

I'm fairly confident that, if you can write new firmware, you can access
the ROM image - otherwise simple things would be hard to do - like creating
a static data segment in ROM.

-Kekoa

From: "Ralph Hempel" <CanTh...@StopSpam.com>
Subject: Re: Inside the RCX
Date: 1998/09/14
Message-ID: <905821613.920011@Virginia>#1/1
X-Deja-AN: 391189909
Cache-Post-Path: Virginia!unk...@ts2-dp31.bmts.com
References: <35fa142f.0@news.oz.net> <6tdtpa$53j@dfw-ixnews10.ix.netcom.com> 
<905805381.375912@Virginia> <6tk7fm$8pa@pixel.Stanford.EDU>
Organization: Bruce Municipal Telephone System
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Newsgroups: rec.toys.lego

>Regarding this point, doesn't the feature you're talking only prevent you
>from directly accessing the on-chip memories from the external pins?  I
>think the usefulness of this feature is limited once you can write
additional
>code for the processor.
>
>I'm fairly confident that, if you can write new firmware, you can access
>the ROM image - otherwise simple things would be hard to do - like creating
>a static data segment in ROM.
>

That's true. The problem is writing the firmware and getting "hooked"
into the internal workings. More to the point, how can you make sure
that your firmware gets run?

I guess I'm having trouble rationalizing the economics of fiddling
with the RCX when the real (to me) problem is making enough cheap
sensors.

Once again, it's hard to make stuff cheaper than LEGO does, but it
is fun and educational to do so. (Even if you learn, as I have, that it's
usually not worth it :-)

-

Cheers,

Ralph Hempel - P.Eng

------------------------------------------------------
The train stops at the train station,
The bus stops at the bus station,
So why am I sitting at a work station?
------------------------------------------------------
Reply to:      rhempel at bmts dot com
------------------------------------------------------

From: Russell Nelson <nel...@crynwr.com>
Subject: Re: Inside the RCX
Date: 1998/09/15
Message-ID: <m2yarlihxa.fsf@desk.crynwr.com>#1/1
X-Deja-AN: 391357053
References: <35fa142f.0@news.oz.net> 
<6tdtpa$53j@dfw-ixnews10.ix.netcom.com> <905805381.375912@Virginia>
Organization: Crynwr Software
Newsgroups: rec.toys.lego

"Ralph Hempel" <rhe...@bmts.com> writes:

> I'm not sure about the H8, but most of the other
> little MCUs I work with have a code protection scheme
> that prevents reverse engineering of ON-CHIP resources.

Yeah, but you can download code to the RCX, and the processor can read
the code, so there's no protecting the code.

> I'd think that the better (and less expensive) way to figure
> out how the sensors work is by taking apart sensors.

Ugh.  I'd rather probe them with a scope/volt-ohm meter.

> You can get clues by the number of wires. For example, a two
> wire sensor is almost always resistive,

Not at all true.  Dallas Semiconductor has two-wire devices which have
digital electronics.  You can daisy-chain hundreds of them on the same
pair of wires.

> A three wire sensor is probably ratiometric.

Besides the point.  The RCX only has two wire sensors.  Based on what
Kekoa reports about the light sensor, it sounds like the RCX has a way
to source current to the sensor, then turn it off to get a
D/A measurement.

-- 
-russ nelson <rn-...@crynwr.com>  http://crynwr.com/~nelson
Crynwr supports Open Source(tm) Software| PGPok |   Freedom is the primary
521 Pleasant Valley Rd. | +1 315 268 1925 voice |   cause of Peace, Love,
Potsdam, NY 13676-3213  | +1 315 268 9201 FAX   |   Truth and Justice.

From: ke...@pixel.Stanford.EDU (Kekoa Proudfoot)
Subject: Re: Inside the RCX
Date: 1998/09/15
Message-ID: <6tm37v$aua@pixel.Stanford.EDU>#1/1
X-Deja-AN: 391385629
References: <35fa142f.0@news.oz.net> <905805381.375912@Virginia> 
<6tk7fm$8pa@pixel.Stanford.EDU> <905821613.920011@Virginia>
Organization: Stanford University, CA 94305, USA
Newsgroups: rec.toys.lego

Ralph Hempel <CanTh...@StopSpam.com> wrote:
> That's true. The problem is writing the firmware and getting "hooked"
> into the internal workings. More to the point, how can you make sure
> that your firmware gets run?

I don't think that's a problem.  Given about a week, it would be possible
to:

1) disassemble the firmware
2) annotate the disassembly, noting the major functions and entry points
3) make guesses as to what functions are stored in ROM
4) rewrite a portion of the firmware

> I guess I'm having trouble rationalizing the economics of fiddling
> with the RCX when the real (to me) problem is making enough cheap
> sensors.

Even if sensors were dirt cheap, you would only be able to use at most
three them (at any given time).  That seems like a bigger limitation to me,
since once I've sunk the money to get enough sensors, I will still be
limited in what I can create with them.

The reasons I like hacking the RCX include:

  * it's one of the first programmable, consumer, microcontroller products
    - therefore a lot of people are going to have access to one
    - people who haven't had or used a microcontroller before are suddenly
        going to have a chance to program/hack the RCX
    - the RCX become a "standard" microcontroller hacking platform
  * it's in a clean, compact, container
    - sure beats my 68hc11evb!
  * it's made by LEGO

> Once again, it's hard to make stuff cheaper than LEGO does, but it
> is fun and educational to do so. (Even if you learn, as I have, that it's
> usually not worth it :-)

Depends on how you look at it.  Educationally speaking, as an adult, it
might not be worth it.  And whether or not you have fun depends on who you
are.  [If you aren't enjoying your Technic, I'll buy your older sets off of
you...]

-Kekoa

From: ke...@pixel.Stanford.EDU (Kekoa Proudfoot)
Subject: Re: Inside the RCX
Date: 1998/09/15
Message-ID: <6tm3km$b0m@pixel.Stanford.EDU>#1/1
X-Deja-AN: 391391822
References: <35fa142f.0@news.oz.net> <6tk7fm$8pa@pixel.Stanford.EDU> 
<905821613.920011@Virginia> 
<dbaum-1309982359040001@max4k-2-10.chi-tcg.enteract.com>
Organization: Stanford University, CA 94305, USA
Newsgroups: rec.toys.lego

Dave Baum <db...@nospam.com> wrote:
> I looked at the first 20 or so lines of the firmware and it has the "feel"
> of an entry point - that is I'm pretty sure the ROM portion will call the
> start of the RAM firmware at some point during initialization.  This
> wouldn't be too difficult to test with a scope - write a program that
> wiggles one of the GPIO lines in a tight loop, download it as firmware,
> and check the results.

I wouldn't do this.  Instead, I'd disassemble and annotate the entire
firmware, find the "Play system sound" routine, and make that loop on
firmware startup.  There's a lot to be gained from a complete, annotated
disassembly of the firmware, and proving that you can replace it is small
compared to providing a description of the firmware (and ROM routines).

I guess this is just my personal preference.  Surely you could also proceed
by first proving that the firmware can be replaced.

-Kekoa