Subject:
|
Re: Pattern in RCX opcodes.
|
Newsgroups:
|
lugnet.robotics
|
Date:
|
Sun, 20 Dec 1998 21:04:21 GMT
|
Viewed:
|
1420 times
|
| |
| |
Vadim Strizhevsky <lego-robotics@crynwr.com> wrote:
> Did anyone notice that the last hex digit of the RCX opcodes uniquely (well
> almost) identifies number of bytes that the opcode takes as arguments?
>
> 0,6 -> void
> 1,7 -> 1 byte
> 2 -> 2 bytes.
> 3 -> 3 bytes.
> 4 -> 4 bytes.
> 5 -> 5 bytes
>
> I think the only exceptions are 0x95 and 0x45, but I might have missed
> something.
>
> This is probably from the ream of neat-but-useless information, but being a
> number theory fan I couldn't help but notice it. It definately looks "by
> design", so I wonder if this is somehow used in firmware or ROM?
This is certainly used by the ROM.
I believe Paul Haas was the first to notice this, see the comment on my web
page, http://graphics.stanford.edu/~kekoa/rcx/#Rom:
Other notes
Paul Haas was right about messages being grouped and parsed by lower 3 bits
And lower, in the RXI handler:
receive length remaining (efc0) = current receive byte (efc1) & 07
if (receive length remaining (efc0) > 5)
receive length remaining (efc0) -= 6
Good eyes, though.
0x45 is a special case, it is handled explicitly by the RXI code.
0x95 is never sent over the network, and is a hack. It, along with 0x85
test and branch near, is parsed as 5 bytes:
byte opsrc1
byte src2
short arg1
byte art2
Then the byte or short offset that follows is special cased in the code at
9c90. Specifically, the code looks at the program counter to find the
offset, if needed, and adjusts the program counter according to whether or
not the branch is taken.
-Kekoa
|
|
Message is in Reply To:
| | Pattern in RCX opcodes.
|
| Did anyone notice that the last hex digit of the RCX opcodes uniquely (well almost) identifies number of bytes that the opcode takes as arguments? 0,6 -> void 1,7 -> 1 byte 2 -> 2 bytes. 3 -> 3 bytes. 4 -> 4 bytes. 5 -> 5 bytes I think the only (...) (26 years ago, 20-Dec-98, to lugnet.robotics)
|
2 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|