Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ASM / GUY - STEP help.

23 views
Skip to first unread message

Gavin Crate

unread,
Oct 15, 2009, 6:04:49 AM10/15/09
to
I was looking through the original check (forerunner of ispy)
assembler source code and came across the STEP instruction. It is
described in the Inmos toolset user guide but it's unclear what it
does or how its used.

http://wotug.ukc.ac.uk/parallel/vendors/inmos/archive-server/checkocc/testt32a.occ

In simple terms what does STEP do?

Gavin

Mike B.

unread,
Oct 15, 2009, 2:51:55 PM10/15/09
to
I've tried to analyze the STEP prefix in the occam test sources a few
years ago. That the text what I have inscribed:

STEP Prefix für OPCODES (GUY)
=========================

STEP PrimaryInstruction (incl. pfix, nfix, opr, …). Operand ignored.
-> ( Opcode & 0xF0 ) + 0x10800
STEP AJW 35 = 0xB0+0x10800 = 0x108B0 = 0x21 0x20 0x28 0x2B 0xF0

STEP SecondaryInstruction
-> Opcode + 0x800
STEP LDDEVID = 0x17C+0x800 = 0x97C = 0x29 0x27 0xFC


IIRC - most of them are type specific and not of general (not even
specific) interest. I think they are a form of single-stepping the
microcode, but maybe I'm totally wrong.

-Mike

Gavin Crate

unread,
Oct 16, 2009, 8:18:16 AM10/16/09
to
On 15 Oct, 19:51, "Mike B." <michael_brues...@yahoo.com> wrote:
>
> IIRC - most of them are type specific and not of general (not even
> specific) interest. I think they are a form of single-stepping the
> microcode, but maybe I'm totally wrong.
>

I’ve done a bit of further digging on the intranet and in the ‘occam-2
language implementation manual’ SW-0044-4 (Inmos Ltd) it discusses -
Inline transputer code insertion. In section 12.1 GUY Construct, it
states:

The STEP form is provided to allow testing of transputer instructions.
It can be replaced by use of the OPR primary instruction so is
obsolete.

Thus it looks simply like it was part of the old GUY syntax to support
the creation of any transputer instruction code. Superseded by ASM
with OPR (i.e. PFIX #n, PFIX #m, OPR #o).

Gavin

Mike B.

unread,
Oct 16, 2009, 9:25:00 AM10/16/09
to
> Thus it looks simply like it was part of the old GUY syntax to support
> the creation of any transputer instruction code. Superseded by ASM
> with OPR (i.e. PFIX #n, PFIX #m, OPR #o).

STEP GT (from from t425a.occ) -- Force NOT ZbusSubLessThan0;

is the same as OPR GT? What should that mean? There is a hidden
preprocessor which replaces GT with 9? This sounds very strange to me.

GT is OPR #9 with MemoryCode #F9
STEP GT is OPR #809 with MemoryCode #28 #20 #F9

OPR >= #800 is:

Step MOVEformWriteCount OPR #AA4 1010 1010 0100
Step MOVEintr OPR #8E2 1000 1110 0010
MOVE OPR #4A 0100 1010

Step WCNTshiftPos OPR #865 1000 0110 0101
Step WCNTtestSign OPR #AE3 1010 1110 0011
WCNT OPR #3F 11 1111

Step DIVloopAdd OPR #929 1001 0010 1001
Step DIVloopSub OPR #92B 1001 0010 1011
DIV OPR #2C 0010 1100

Step MulinitLoop OPR #A89 1010 1000 1001
Step MULshift OPR #909 1001 0000 1001
MUL OPR #53 1010 0011

For me this looks like entrypoints in the microcode steps.

Also the text (also from t425a.occ)

-- cannot force IncOregCarryOut through single stepping,
because
-- Oreg is used to form microword address; this is observable
through
-- move1.hex to move12.hex.
-- If IncOregCarryOut is asserted in a single-stepped
microword, then
-- the Oregister is loaded both from the incrementer and from
the
-- next operand at the same time (ie Gnd and Vdd shorted
through 2 NEs).

confirms my speculation.

STEP WCNTshiftPos is different between first and later generations.

test222a.occ OPR #8E9
test222b.occ OPR #8E9
test414a.occ OPR #8E9
test425a.occ OPR #865
test800a.occ OPR #865
test801a.occ OPR #865

But - It's only speculation. Maybe the result of WCNT and STEP WCNT is
the same, but that’s not the purpose of the STEP - prefix.

-Mike

0 new messages