mov r7,r6       ;save r6
mov r6,r5       ;save r5
mov r5,r4       ;save r4
mov r4,r3       ;save r3
mov r3,r2       ;save r2

mov a,p1        ;take a new sample
mov r2,a        ;store it in r2

cpl a           ;complement the last sample
anl a,r7        ;AND sample in r7 to it
anl a,r6        ;AND sample in r6 to it
anl a,r5        ;AND sample in r5 to it
anl a,r4        ;AND sample in r4 to it
anl a,r3        ;AND sample in r3 to it
mov r0,a        ;save the result in r0

orl a,p2        ;r0 OR P2
mov r1,a        ;save the result in r1, we need it later
mov a,r0        ;we need r0 again
anl a,p2        ;r0 AND P2
cpl a           ;complement the result to perform NAND
anl a,r1        ;(NAND result) AND (OR result) to perform EXOR

mov p2,a        ;actualize P2
