The IPUSHANDBISNE operation is a single operation having
the effect of an IPUSHNE operation followed by an SANDBIS
operation. Explicitly, the logical operations are as
follows:
Stack before IPUSHANDBISNE:
High Condition |
Low Condition |
|
 |
A |
B |
Top |
C |
D |
Next |
 |
Stack after IPUSHANDBISNE:
 |
Bank Selector |
Stack Item |
High Condition |
Low Condition |
 |
If Bs3 = 1 (low) |
Top |
([Rs0].L != [Rs1].L) & A |
([Rs0].L != [Rs1].L) & B |
|
Next 1 |
A |
B |
|
Next 2 |
C |
D |
 |
If Bs3 = 2 (high) |
Top |
([Rs0].H != [Rs1].H) & A |
([Rs0].H != [Rs1].H) & B |
|
Next 1 |
A |
B |
|
Next 2 |
C |
D |
 |
If Bs3 = 3 (vector) |
Top |
([Rs0].H != [Rs1].H) & A |
([Rs0].L != [Rs1].L) & B |
|
Next 1 |
A |
B |
|
Next 2 |
C |
D |
 |
Note: [Rs].X denotes the data on bank X of register R and A, B, C, D take the values TRUE or FALSE.
Takes 5 cycles to execute.
Example: IPUSHANDBISNE 0xFF 3 0xA 0xB
STKC FLW IOC AGU ASEL BS5 P5 BS4 C4 P4 MPC BS3 C3 P3 P2 P1 P0
--------------------------------------------------------------------
- - - - - 0 00 0 0 00 IXOR 0 0 00 00 0B 0A
- - - - - 0 00 0 0 00 - 0 0 00 00 00 00
- - - - - 0 00 0 0 00 - 0 0 00 00 00 00
- - - - - 0 00 0 0 00 - 3 0 FF 00 00 00
PA2NE - - - - 0 00 0 0 00 - 0 0 00 00 00 00
No exceptions.
!! Initial conditions:
!! Content of register 0xA:
!! [0xA].H = 0xFFFFFFFFFFFFFFFF
!! [0xA].L = 0xDDDDDDDDDDDDDDDD
!! Content of register 0xB:
!! [0xB].H = 0xFFFFFFFFFFFFFFFF
!! [0xB].L = 0xEEEEEEEEEEEEEEEE
!! Top of the stack is:
!! H = A, L = B
IPUSHANDBISNE 255 3 0xA 0xB !! Pushes: High = FALSE & a Low = TRUE & b
IPUSHANDBISNE 255 2 0xA 0xB !! Pushes: High = FALSE & a Low = FALSE & b
IPUSHANDBISNE 255 1 0xA 0xb !! Pushes: High = TRUE & a Low = TRUE & b