In all cases, Cte must be a decimal value or an expression that can be evaluated immediately. A_mode can be:

Form

Description

[Rn +/-Cte]

Value of rn + or - constant

[Rn +/-Rm]

Value of rn + or – value of rm

[Rn +/-Rm LSL Cte]

Value of rn + or – value of rm shifted left

[Rn +/-Rm < Cte]

 

[Rn +/-Rm LSR Cte]

Value of rn + or – value of rm shifted right

[Rn +/-Rm > Cte]

 

[Rn +/-Rm ASR Cte]

Value of rn + or – value of rm shifted arithmetically right

[Rn +/-Rm >> Cte]

 

[Rn +/-Rm ROR Cte]

Value of rn + or – value of rm rotated right

[Rn +/-Rm >>> Cte]

 

[Rn +/-Cte]!

Value of rn + or – constant

 

Rn is updated with that value

[Rn +/-Rm]!

Value of rn + or – value of rm

 

Rn is updated with that value

[Rn +/-Rm LSL Cte]!

Value of rn + or – value of rm shifted left

[Rn +/-Rm < Cte]!

Rn is updated with that value

[Rn +/-Rm LSR Cte]!

Value of rn + or – value of rm shifted right

[Rn +/-Rm > Cte]!

Rn is updated with that value

[Rn +/-Rm ASR Cte]!

Value of rn + or – value of rm shifted arithmetically right

[Rn +/-Rm >> Cte]!

Rn is updated with that value

[Rn +/-Rm ROR Cte]!

Value of rn + or – value of rm rotated right

[Rn +/-Rm >>> Cte]!

Rn is updated with that value

[Rn] +/-Cte

The value used is the value of rn, but rn is then updated with Value of rn + or –

 

constant

[Rn] +/-Rm

The value used is the value of rn, but rn is then updated with Value of rn + or –

 

value of rm

[Rn] +/-Rm LSL Cte

The value used is the value of rn, but rn is then updated with Value of rn + or –

[Rn] +/-Rm < Cte

value of rm shifted left

[Rn] +/-Rm LSR Cte

The value used is the value of rn, but rn is then updated with Value of rn + or –

[Rn] +/-Rm > Cte

value of rm shifted right

[Rn] +/-Rm ASR Cte

The value used is the value of rn, but rn is then updated with Value of rn + or –

[Rn] +/-Rm >> Cte

value of rm shifted arithmetically right

[Rn] +/-Rm ROR Cte

Value of rn + or – value of rm rotated right

[Rn] +/-Rm >>> Cte

Rn is updated with that value

ARMSAT instruction

When using the ARMSAT instruction, the Saturn pc is in register r0 and the address chipset structure that contains the state of the Saturn CPU is in r1.

That structure has the following elements at the following offsets:

Offset Element

0P_U32 read_map[256+1]; read_map[x] points on the 2Kb of Saturn address space at Saturn address x<<12

1028

P_U32 write_map[256+1]; read_map[x] points on the 2Kb of Saturn address space

 

at Saturn address x<<12 for write purpose (write_map[x]=0 if x points on some non

 

readable memory)

2056

enum ModulePriority top_map[256+1]; // Type of block on top, to know if new

 

configured block takes over

2316

REG A;

2324

REG B;

The Development Library 6-33