wisp
 
(Arne Babenhauserheide)
2013-12-27: tinyenc: fix output (uint: %u) and fix algorithm: v1<<4) == ash v1 4

tinyenc: fix output (uint: %u) and fix algorithm: v1<<4) == ash v1 4

diff --git a/examples/tinyenc.c b/examples/tinyenc.c
--- a/examples/tinyenc.c
+++ b/examples/tinyenc.c
@@ -7,12 +7,13 @@ void encrypt (uint32_t* v, uint32_t* k) 
     uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];   /* cache key */
     for (i=0; i < 32; i++) {                       /* basic cycle start */
         sum += delta;
-        printf("v0: %d, v1: %d\n", v0, v1);
+        printf("v0: %u, v1: %u\n", v0, v1);
+        printf("sum: %u, (v1<<4) + k0: %u, (v1 + sum): %u,  (v1>>5) + k1: %u\n", sum, ((v1<<4) + k0), (v1 + sum), ((v1>>5) + k1));
         v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
         v1 += ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);  
     }                                              /* end cycle */
-    printf("v0: %d, v1: %d\n", v0, v1);
-    printf("k0: %d, k1: %d, k2: %d, k3: %d\n", k0, k1, k2, k3);
+    printf("v0: %u, v1: %u\n", v0, v1);
+    printf("k0: %u, k1: %u, k2: %u, k3: %u\n", k0, k1, k2, k3);
     v[0]=v0; v[1]=v1;
 }
  
diff --git a/examples/tinyenc.w b/examples/tinyenc.w
--- a/examples/tinyenc.w
+++ b/examples/tinyenc.w
@@ -13,16 +13,21 @@ define : uint32 number
   modulo number : integer-expt 2 32
 
 define : v0change k0 v1 sum k1
+         format #t "sum: ~A, + k0 : ash v1 4: ~A, + v1 sum: ~A, + k1 : ash v1 -5: ~A\n"
+           . sum
+           uint32 : + k0 : ash v1 4
+           uint32 : + v1 sum
+           uint32 : + k1 : uint32 : ash v1 -5
          logxor
-           uint32 : + k0 : ash v1 -4
+           uint32 : + k0 : ash v1 4
            uint32 : + v1 sum
-           uint32 : + k1 : uint32 : ash v1 5
+           uint32 : + k1 : uint32 : ash v1 -5
 
 define : v1change k2 v0 sum k3
          logxor
-           uint32 : + k2 : ash v0 -4
+           uint32 : + k2 : ash v0 4
            uint32 : + v0 sum
-           uint32 : + k3 : uint32 : ash v0 5
+           uint32 : + k3 : uint32 : ash v0 -5
 
 ; TODO: Define a macro with-split-kv which executes its body with let bindings to k0 k1 k2 k3 v0 and v1
 define-syntax with-split-vk