zero  = 1 bit flag
carry = 1 bit flag
a     = 8 bits register
b     = 32 bits register
pc    = 32 bits program counter (in bits)
stk   = 8 bits stack pointer
stack = array of 256 dwords





<md> -> 00 -> [imm]
        01 -> [s+a]
        10 -> [b]
        11 -> [b+a]

<sd> -> 00 -> a
        01 -> b
        10 -> pc
        11 -> <md>





0000 0  -> nop                     nop
0000 1  -> jp     <11 bits>        pc+=(signed)pc++

0001 00 -> ret                     pc=(dword)stack[(byte)stk++]
0001 01 -> ca     <11 bits>        stack[(byte)--stk]=pc / X=*pc++ / pc+=(signed)X
0001 10 -> cstkprca           *    RUN *stack[(byte)a]
0001 11 -> a0?                +    zero=(a==0)1?0;

0010 0  -> mai    <8 bits>         a=*pc++
0010 1  -> mbi    <32 bits>        b=*pc++

0011 00 -> sai    <8 bits>    +    a-=*pc++
0011 01 -> sbai   <8 bits>    +    a-=*pc++ / if(carry)a--
0011 10 -> adai   <8 bits>    +    a+=*pc++
0011 11 -> adcai  <8 bits>    +    a+=*pc++ / if(carry)a++

0100 00 -> xai    <8 bits>    +    a^=*pc++
0100 01 -> oai    <8 bits>    +    a|=*pc++
0100 10 -> aai    <8 bits>    +    a&=*pc++
0100 11 -> na                 +    !a

0101 0  -> jz     <11 bits>        X=*pc++ / if(zero)pc+=(signed)X
0101 1  -> jc     <11 bits>        X=*pc++ / if(carry)pc+=(signed)X

0110 0  -> cai    <8 bits>    +    zero=(a==*pc++)1?0 / carry=(a<*pc++)1?0
0110 1  -> cbi    <32 bits>   +    zero=(b==*pc++)1?0 / carry=(b<*pc++)1?0

0111    -> mbpc                    b=pc

1000    -> mm     <sd> <sd>        X=Y

1001 000-> adm    <sd> <sd>        X+=Y
1001 001-> adcm   <sd> <sd>        X+=Y / if(carry)a++
1001 010-> sm     <sd> <sd>        X-=Y
1001 011-> sbm    <sd> <sd>        X-=Y / if(carry)a--
1001 100-> xm     <sd> <sd>        X^=Y
1001 101-> om     <sd> <sd>        X|=Y
1001 110-> am     <sd> <sd>        X&=Y
1001 111-> nm     <sd>             X=!X

1010 0  -> ps     <sd>             stack[(byte)--stk]=X
1010 1  -> pp     <sd>             stack[(byte)++stk]=X

1011 0  -> sr     <sd>             X=X>>1
1011 1  -> sl     <sd>             X=X<<1

1100
1101
1110
1111

