The microbot runs a slightly customised version of the 20X2 firmware that...
The significance of this statement has just dawned on me ...
By
firmware, I assumed we were still talking about that originally loaded Basic program - but we're not are we? - we're literally talking about the Picaxe
firmware, I believe...
I want to understand the BOT120 board, because I intend to transplant it into my long-dormant
CYBOT 
so I've been studying and testing the motor driver section. I could see no correlation between the logic levels of [
b4:b7] and what the motors were doing. Even weirder, I could see no correlation between what I was setting the pins to and
what they were actually being set to! Now I know why!
(I started looking at this aspect, because it seemed clear that the motor driver transistors would self-destruct

, if either (
b.4 and
b.5) or (
b.6 and
b.7) were set low at the same time. I entered the schematic into a circuit emulator and it agreed with me - yet it wasn't happening in practice...
It appears that pin settings for [
b4:b7] are intercepted and massaged into values that make sense to the driver board (and keep the magic smoke in)).
If anyone is interested, here is a list of the Port Pin settings and their actions. "Set pins" is what the code sets the pins to, "Read pins" is what they are
actually set to - confirmed via a subsequent 'read' and a voltmeter. (Some of this, is no doubt the influence of the external 'pull-up' resistors).
Code:
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 0 0 0 0 --- 0000 NOTHING
Read pins 1 1 1 1 --- 0000
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 0 0 0 1 --- 0000 LEFT-FORWARDS
Read pins 1 1 1 0 --- 0000
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 0 0 1 0 --- 0000 LEFT-BACKWARDS
Read pins 1 1 0 1 --- 0001
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 0 0 1 1 --- 0000 NOTHING
Read pins 1 1 1 1 --- 0001
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 0 1 0 0 --- 0000 RIGHT-FORWARDS
Read pins 1 0 1 1 --- 0000
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 0 1 0 1 --- 0000 BOTH-FORWARDS
Read pins 1 0 1 0 --- 0000
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 0 1 1 0 --- 0000 LEFT-BACKWARDS + RIGHT-FORWARDS
Read pins 1 0 0 1 --- 0001
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 0 1 1 1 --- 0000 RIGHT-FORWARDS
Read pins 1 0 1 1 --- 0001
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 1 0 0 0 --- 0000 RIGHT-BACKWARDS
Read pins 0 1 1 1 --- 0001
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 1 0 0 1 --- 0000 RIGHT_BACKWARDS + LEFT-FORWARDS
Read pins 0 1 1 0 --- 0001
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 1 0 1 0 --- 0000 BOTH-BACKWARDS
Read pins 0 1 0 1 --- 0001
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 1 0 1 1 --- 0000 RIGHT-BACKWARDS
Read pins 0 1 1 1 --- 0001
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 1 1 0 0 --- 0000 NOTHING
Read pins 1 1 1 1 --- 0001
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 1 1 0 1 --- 0000 LEFT - FORWARDS
Read pins 1 1 1 0 --- 0000
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 1 1 1 0 --- 0000 LEFT - BACKWARDS
Read pins 1 1 0 1 --- 0001
b.7 b.6 b.5 b.4 [b3:b0]
Set pins 1 1 1 1 --- 0000 NOTHING
Read pins 1 1 1 1 --- 0001