cortexelf-v1: Add bit flipping array generator
authorKeith Packard <keithp@keithp.com>
Mon, 3 Apr 2017 03:33:49 +0000 (20:33 -0700)
committerKeith Packard <keithp@keithp.com>
Mon, 3 Apr 2017 03:33:49 +0000 (20:33 -0700)
Someone hooked up the data lines between the systems backwards, so we
get to swizzle the bits in software.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/cortexelf-v1/Makefile
src/cortexelf-v1/ao_flip_bits.5c [new file with mode: 0644]

index b491c2e420b30953482a741560833597eb45366d..77598ddace24dcc4c4aa4d30c347518d0308b513 100644 (file)
@@ -28,9 +28,9 @@ INC = \
        ao_lisp.h \
        ao_lisp_const.h \
        ao_lisp_os.h \
+       ao_flip_bits.h \
        Makefile
 
-
 #PROFILE=ao_profile.c
 #PROFILE_DEF=-DAO_PROFILE=1
 
@@ -123,7 +123,10 @@ distclean: clean
 
 clean::
        rm -f *.o $(PROGNAME)-*.elf $(PROGNAME)-*.ihx
-       rm -f ao_product.h
+       rm -f ao_product.h ao_flip_bits.h
+
+ao_flip_bits.h: ao_flip_bits.5c
+       nickle ao_flip_bits.5c > $@
 
 include ../lisp/Makefile-lisp
 
diff --git a/src/cortexelf-v1/ao_flip_bits.5c b/src/cortexelf-v1/ao_flip_bits.5c
new file mode 100644 (file)
index 0000000..2690089
--- /dev/null
@@ -0,0 +1,19 @@
+#!/usr/bin/nickle
+
+int flip_bits(int a)
+{
+       int result = 0;
+       for (int pos = 0; pos < 8; pos++)
+               if ((a & (1 << pos)) != 0)
+                       result |= (1 << (7 - pos));
+       return result;
+}
+
+printf ("static uint8_t ao_flip_bits[256] = {\n");
+
+for (int i = 0; i < 256; i++) {
+       printf (" 0x%02x,", flip_bits(i));
+       if ((i & 0xf) == 0xf)
+               printf("\n");
+}
+printf("};\n");