text: #include <stdlib.h>
  #include <stdio.h>
  #include <string.h>
  #include <stdint.h>
  /*
   * The bitmap mapping for the framebuffer is from top left to right, a strip of 8 vertical
   * bits from each byte, so there is a block of 128 x 8 px on a stride of 128 bytes.
   *
   * The 8 bits from the first byte in the fb are the leftmost vertical strip of 8, then the
   * next byte is the 8 pixels one to the right, until the 127th byte if the vertical strip
   * of 8 on the rhs.
   *
   * +----------------------------------+
   * |0                                 |
   * |1                                 |
   * |2                                 |
   * |3                                 |
   * |4                                 |
   * |5                                 |
   * |6                                 |
   * |7                                 |
   *
   * In this way the fb is more like (8 x vertical (128 x 8))
   *
   */
  
  
  static const uint8_t scan[] = {
  
  #include "pic.h"
  };
  
  /*
   * input byte 0 is like ABCDEFGH, one bit per horizontal pixel for one line
   * on an hstride of 16 bytes
   *
   * output byte 0 =  b0 = byte 0 b0, b1 = byte16 b0, b2 = byte24 b0 etc
   *
   * px(0,0) --> byte0 b0
   * px(0,1) --> byte0 b1
   */
  
  int
  main(void)
  {
  	const uint8_t *p = scan;
  	uint8_t r[1024];
  	int x, y, t = 0;
  
  	memset(&r, 0, sizeof(r));
  
  	while (t < 1024) {
  
  		for (x = 0; x < 128; x++) {
  			for (y = 0; y < 8; y++) {
  				if (p[t + (16 * y) + (x / 8)] & (1 << (7 - (x & 7))))
  					r[t + x] |= 1 << y;
  			}
  		}
  
  		t += 128;
  	}
  
  	for (x = 0; x < 1024; x++) {
  		printf("0x%02X, ", r[x]);
  		if ((x & 0xf) == 0xf)
  			printf("\n");
  	}
  }
  
  