// Block 0x 0 0 // RTNSXM 0 1 // RTN 0 2 // RTNSC 0 3 // RTNCC 0 4 // SETHEX 0 5 // SETDEC 0 6 // RSTK=C 0 7 // C=RSTK 0 8 // CLRST 0 9 // C=ST 0 A // ST=C 0 B // CSTEX 0 C // P=P+1 0 D // P=P-1 0 E 0 0 // A=A&B P 0 E 1 0 // A=A&B WP 0 E 2 0 // A=A&B XS 0 E 3 0 // A=A&B X 0 E 4 0 // A=A&B S 0 E 5 0 // A=A&B M 0 E 6 0 // A=A&B B 0 E 7 0 // A=A&B W 0 E F 0 // A=A&B A 0 E 0 1 // B=B&C P 0 E 0 2 // C=C&A P 0 E 0 3 // D=D&C P 0 E 0 4 // B=B&A P 0 E 0 5 // C=C&B P 0 E 0 6 // A=A&C P 0 E 0 7 // C=C&D P 0 E 0 8 // A=A!B P 0 E 0 9 // B=B!C P 0 E 0 A // C=C!A P 0 E 0 B // D=D!C P 0 E 0 C // B=B!A P 0 E 0 D // C=C!B P 0 E 0 E // A=A!C P 0 E 0 F // C=C!D P 0 F // RTI // Block 1[012]x saving and exchange with Rn registers 1 0 0 // R0=A (W) 1 0 1 // R1=A (W) 1 0 2 // R2=A (W) 1 0 3 // R3=A (W) 1 0 4 // R4=A (W) 1 0 8 // R0=C (W) 1 0 9 // R1=C (W) 1 0 A // R2=C (W) 1 0 B // R3=C (W) 1 0 C // R4=C (W) 1 1 0 // A=R0 (W) 1 1 1 // A=R1 (W) 1 1 2 // A=R2 (W) 1 1 3 // A=R3 (W) 1 1 4 // A=R4 (W) 1 1 8 // C=R0 (W) 1 1 9 // C=R1 (W) 1 1 A // C=R2 (W) 1 1 B // C=R3 (W) 1 1 C // C=R4 (W) 1 2 0 // AR0EX (W) 1 2 1 // AR1EX (W) 1 2 2 // AR2EX (W) 1 2 3 // AR3EX (W) 1 2 4 // AR4EX (W) 1 2 8 // CR0EX (W) 1 2 9 // CR1EX (W) 1 2 A // CR2EX (W) 1 2 B // CR3EX (W) 1 2 C // CR4EX (W) // block 13x setting up pointer registers 1 3 0 // D0=A (A) 1 3 1 // D1=A (A) 1 3 2 // AD0EX (A) 1 3 3 // AD1EX (A) 1 3 4 // D0=C (A) 1 3 5 // D1=C (A) 1 3 6 // CD0EX (A) 1 3 7 // CD1EX (A) 1 3 8 // D0=AS (4-0) 1 3 9 // D1=AS (4-0) 1 3 A // AD0XS (4-0) 1 3 B // AD0XS (4-0) 1 3 C // D0=CS (4-0) 1 3 D // D1=CS (4-0) 1 3 E // CD0XS (4-0) 1 3 F // CD1XS (4-0) // block 1[45]x[a|x+1] data transfer 1 4 0 // DAT0=A A 1 4 1 // DAT1=A A 1 4 2 // A=DAT0 A 1 4 3 // A=DAT1 A 1 4 4 // DAT0=C A 1 4 5 // DAT1=C A 1 4 6 // C=DAT0 A 1 4 7 // C=DAT1 A 1 4 8 // DAT0=A B 1 4 9 // DAT1=A B 1 4 A // A=DAT0 B 1 4 B // A=DAT1 B 1 4 C // DAT0=C B 1 4 D // DAT1=C B 1 4 E // C=DAT0 B 1 4 F // C=DAT1 B 1 5 0 0 // DAT0=A a 1 5 1 1 // DAT1=A a 1 5 2 2 // A=DAT0 a 1 5 3 3 // A=DAT1 a 1 5 4 4 // DAT0=C a 1 5 5 5 // DAT1=C a 1 5 6 6 // C=DAT0 a 1 5 7 7 // C=DAT1 a 1 5 8 8 // DAT0=A x+1 1 5 9 9 // DAT1=A x+1 1 5 A A // A=DAT0 x+1 1 5 B B // A=DAT1 x+1 1 5 C C // DAT0=C x+1 1 5 D D // DAT1=C x+1 1 5 E E // C=DAT0 x+1 1 5 F F // C=DAT1 x+1 // pointer arithmetic 1 6 2 // D0=D0+ n+1 1 7 8 // D1=D1+ n+1 1 8 A // D0=D0- n+1 1 C F // D1=D1- n+1 // pointer load 1 9 1 2 // D0=(2) 21 1 A 3 4 5 6 // D0=(4) 6543 1 B 7 8 9 A B // D0=(5) BA987 1 D 1 2 // D1=(2) 21 1 E 3 4 5 6 // D1=(4) 6543 1 F 7 8 9 A B // D1=(5) BA987 // load P with immediate value 2 3 // P= 3 // load c with immediate value // start on nibble pointed by p 3 5 0 1 2 3 4 5 3 F 0 1 2 3 4 5 6 7 8 9 A B C D E F F // end