RE: I,Robot Mathbox Question...

From: Jess Askey <jess_at_askey.org>
Date: Tue Feb 18 2014 - 23:10:53 EST

I guess that I might not have clarified enough actually... so this isn't the 6809 code, this is the code that is put into the mathbox. The mathbox is a custom bit-slice state machine processor made for rotating matrices and doing fast 3D math so the 6809 doesn't need to do it. Variants of it are used in Battlezone, Red Baron, Tempest and Star Wars although they are all a bit different.

>From talking to John M. He gave me a rundown of how the Mathbox is tested by the 6809 and program ROM and from his I,Robot page, it is stated that the 'black hole' message is produced from a general mathbox error. So it seems that perhaps in my case, since my Mathbox self test is passing (no timeouts and correct Y,P and R functions results) that my mathbox is seemingly good, although I still get the 'black hole' message when in attract mode and any 3D rendering is supposed to be happening.

So, the crux of where Im at is that there must be something internal to the Mathbox that is broken and is returning bad data to crash the 6809 CPU or put it into an error state. Typically, I see the 'Black Hole' message when some mathbox PROM's are acting finicky due to temperature, generally a PCB will boot with the 'Black Hole' message when cold but as the PROM's warm up, the mathbox starts working and all is fine. Along those same lines, when the CPU is cold, if you boot into self test, you will get mathbox errors until those PROM's warm up again. In my case, I have tested all my PROM's and replaced all my temperature sensitive ones so I have a solid set.

So, back to the binary example given... those 2-byte commands are 16-bit mathbox instructions and I was trying to correlate to the MAME I,Robot source that emulates these functions so I could potentially follow them and see if there was a way to determine which mathbox instruction might be causing the problem.

There is also the chance that my issue is somewhere else in the Program or the video processor side (although my video PCB is known good on other CPU PCB's), so the issue is definitely on the CPU PCB of the two-board set.

I suppose it might be faster to just run-and-gun replace TTL in the mathbox tho at this point. :) But where is the fun in that!!

Anyone else feel free to jump in here!! I will just keep responding to my own posts otherwise. :) :) Ha!

PS- Duncan are you out there?

From: owner-vectorlist@vectorlist.org [mailto:owner-vectorlist@vectorlist.org] On Behalf Of Jimmy Ipock
Sent: Tuesday, February 18, 2014 8:41 PM
To: vectorlist@vectorlist.org
Subject: Re: VECTOR: I,Robot Mathbox Question...

If anyone has an interest in disassembling the code provided above, a reference to the CPU mnemonics may be found here...

http://www.lomont.org/Software/Misc/CoCo/Lomont_6809.pdf

On Tue, Feb 18, 2014 at 9:06 PM, Matthew Rossiter <matt@rossiters.com<mailto:matt@rossiters.com>> wrote:
I'll sometimes take the risk of looking stupid just for the sake of clarification. :). I figured it might also jog a response from others.

Sent from my iPhone

On Feb 18, 2014, at 4:28 PM, Jess Askey <jess@askey.org<mailto:jess@askey.org>> wrote:
Binary sequence: That listing of 2-byte words that was in the original email... this one...

9000
8000
0B40
00E0
0000
FF00
00EE
0590
3FC2

Now, granted, I think there may be a JSR in there to a more complex location (I think there might be, however there may not be)... either way, that little snippet of binary there, should basically YAW rotate 5 degrees some sort of matrix and just a hunch, that matrix may exist at offset 0B40 (in MBOX RAM @ 2B40 then) and perhaps it may be writing the result to MBOX RAM at offset 0590?

Im just trying to figure out how this set of instructions translates into a YAW 5 degrees.

My end game is just like yours... I have a PCB set with infinite 'Black Hole' messages and all ROM's, RAM's, PROM', BitSlicers test good (PROM sockets seem fine too).... But the Mathbox passes self test just fine.

I emailed John M*nfreda for some CPU disassembly advice and haven't heard back but not everyone has time to dig into this stuff so deep, so I understand. It probably isn't all the easy to answer the question I posed of 'what causes the Black Hole message'... exactly that is. ;-)

jess

From: owner-vectorlist@vectorlist.org<mailto:owner-vectorlist@vectorlist.org> [mailto:owner-vectorlist@vectorlist.org] On Behalf Of Matthew Rossiter
Sent: Tuesday, February 18, 2014 3:14 PM
To: vectorlist@vectorlist.org<mailto:vectorlist@vectorlist.org>
Subject: Re: VECTOR: I,Robot Mathbox Question...

Well, I'd like to give this thread a "bump" because I too would like to understand how to diagnose an I'Robot mathbox issue. I get the "black hole" error message. While I know the general area of circuitry where the fault is, I get lost in all the loops. Unfortunately I'm not code-savy enough to provide a good answer to your question. I do have a dumb question though, which binary sequence are you referring to?

Matt

Are you basically
On 2/8/2014 9:54 PM, Jess Askey wrote:
Im sending this to vectorlist since rasterlist doesn't have any Mathboxes except I,Robot and Im not sure who subscribes where. I know everyone that might know the answer to this is here tho. Apologies....

Im attempting to understand the I,Robot mathbox instructions using the MAME Source and the Memory Window of MAME so I can fix an I,Robot PCB with a bad mathbox issue. Im in the process of getting MAME compiling so I can set DISASSEMBLE_MB_ROM = 1 to examine more.
The MAME source is here... http://mamedev.org/source/src/mame/machine/irobot.c.html

Upon boot, the CPU does some basic tests (thank you Frito) of Pitch, Roll and Yaw rotations of 5 degrees and checks the result. If the number matches the predetermined value stored in ROM, then the test passes. If not, the Self Test shows the various 'Y Bad Data' or 'X Bad Data' etc.

The CPU puts this code into the Mathbox RAM for the YAW_5_DEGREES test (the first test)

9000
8000
0B40
00E0
0000
FF00
00EE
0590
3FC2

I have been trying to map instruction set to the Mathbox instructions in the MAME source above, which only consists of ADD, SUBTRACTS, OR, AND, XOR and some inverted variants.

Caveat: I got a C in Linear Algebra, so Im not that smart. :)

Since the mathbox is doing rotations/translations and from what I read in Jed's nice write-ups like this one (http://www.jmargolin.com/uvmath/uvmath.htm)
There needs to be some multiplication/division... I see the shifts in the DESTX Defines, which Im guessing covers that?

Can anyone help me understand how the MAME source commands relate to this binary sequence?

Thank you! Jess

---------------------------------------------------------------------------
** Unsubscribe, subscribe, or view the archives at http://www.vectorlist.org
** Please direct other questions, comments, or problems to chris@westnet.com
Received on Tue Feb 18 23:11:18 2014

This archive was generated by hypermail 2.1.8 : Wed Feb 19 2014 - 21:50:01 EST