Subversion Repositories pentevo

Rev

Rev 796 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #include "defs.h"
  2. #include "tables.h"
  3.  
  4. const unsigned char incf[] =
  5. {
  6.         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08
  7.        ,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10
  8.        ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08
  9.        ,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x30
  10.        ,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28
  11.        ,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x30
  12.        ,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28
  13.        ,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x10
  14.        ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08
  15.        ,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10
  16.        ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08
  17.        ,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x30
  18.        ,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28
  19.        ,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x30
  20.        ,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x28
  21.        ,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x94
  22.        ,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88
  23.        ,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x90
  24.        ,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88
  25.        ,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xb0
  26.        ,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8
  27.        ,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xb0
  28.        ,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8
  29.        ,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x90
  30.        ,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88
  31.        ,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x90
  32.        ,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x88
  33.        ,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xb0
  34.        ,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8
  35.        ,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xb0
  36.        ,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa8
  37.        ,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0xa8,0x50
  38. };
  39.  
  40. const unsigned char decf[] =
  41. {
  42.         0xba,0x42,0x02,0x02,0x02,0x02,0x02,0x02
  43.        ,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  44.        ,0x1a,0x02,0x02,0x02,0x02,0x02,0x02,0x02
  45.        ,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  46.        ,0x1a,0x22,0x22,0x22,0x22,0x22,0x22,0x22
  47.        ,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a
  48.        ,0x3a,0x22,0x22,0x22,0x22,0x22,0x22,0x22
  49.        ,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a
  50.        ,0x3a,0x02,0x02,0x02,0x02,0x02,0x02,0x02
  51.        ,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  52.        ,0x1a,0x02,0x02,0x02,0x02,0x02,0x02,0x02
  53.        ,0x02,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a
  54.        ,0x1a,0x22,0x22,0x22,0x22,0x22,0x22,0x22
  55.        ,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a
  56.        ,0x3a,0x22,0x22,0x22,0x22,0x22,0x22,0x22
  57.        ,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a
  58.        ,0x3e,0x82,0x82,0x82,0x82,0x82,0x82,0x82
  59.        ,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a
  60.        ,0x9a,0x82,0x82,0x82,0x82,0x82,0x82,0x82
  61.        ,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a
  62.        ,0x9a,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2
  63.        ,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
  64.        ,0xba,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2
  65.        ,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
  66.        ,0xba,0x82,0x82,0x82,0x82,0x82,0x82,0x82
  67.        ,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a
  68.        ,0x9a,0x82,0x82,0x82,0x82,0x82,0x82,0x82
  69.        ,0x82,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a
  70.        ,0x9a,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2
  71.        ,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
  72.        ,0xba,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2,0xa2
  73.        ,0xa2,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
  74. };
  75.  
  76. unsigned char adcf[0x20000]; // flags for adc and add
  77.  
  78. static void make_adc()
  79. {
  80.    for (unsigned c = 0; c < 2; c++)
  81.       for (unsigned x = 0; x < 0x100; x++)
  82.          for (unsigned y = 0; y < 0x100; y++) {
  83.  
  84.             unsigned res = x+y+c;
  85.             unsigned char fl = 0;
  86.             if (!(res & 0xFF)) fl |= ZF;
  87.             fl |= (res & (F3|F5|SF));
  88.             if (res >= 0x100) fl |= CF;
  89.             if (((x&0x0F)+(y&0x0F)+c) & 0x10) fl |= HF;
  90.             int ri = (signed char)x + (signed char)y + int(c);
  91.             if (ri >= 0x80 || ri <= -0x81) fl |= PV;
  92.  
  93.             adcf[c*0x10000 + x*0x100 + y] = fl;
  94.          }
  95. }
  96.  
  97. unsigned char sbcf[0x20000]; // flags for sub and sbc
  98. unsigned char cpf[0x10000];  // flags for cp
  99. unsigned char cpf8b[0x10000]; // flags for CPD/CPI/CPDR/CPIR
  100.  
  101. static void make_sbc()
  102. {
  103.    for (int c = 0; c < 2; c++)
  104.    for (int x = 0; x < 0x100; x++)
  105.    for (int y = 0; y < 0x100; y++) {
  106.       int res = x - y - c;
  107.       unsigned char fl = res & (F3|F5|SF);
  108.       if (!(res&0xFF)) fl |= ZF;
  109.       if (res & 0x10000) fl |= CF;
  110.       int r = (signed char)x - (signed char)y - c;
  111.       if (r >= 0x80 || r < -0x80) fl |= PV;
  112.       if (((x&0x0F)-(res&0x0F)-c) & 0x10) fl |= HF;
  113.       fl |= NF;
  114.       sbcf[c*0x10000 + x*0x100 + y] = fl;
  115.    }
  116.    for (int i = 0; i < 0x10000; i++) {
  117.       cpf[i] = (sbcf[i] & ~(F3|F5)) | (i & (F3|F5));
  118.       unsigned char tempbyte = u8((i >> 8) - (i & 0xFF) - ((sbcf[i] & HF) >> 4));
  119.       cpf8b[i] = (sbcf[i] & ~(F3|F5|PV|CF)) + (tempbyte & F3) + ((tempbyte << 4) & F5);
  120.    }
  121. }
  122.  
  123. unsigned char log_f[0x100];
  124. static void make_log()
  125. {
  126.    for (int x = 0; x < 0x100; x++) {
  127.       unsigned char fl = x & (F3|F5|SF);
  128.       unsigned char p = PV;
  129.       for (int i = 0x80; i; i /= 2)
  130.          if (x & i) p ^= PV;
  131.       log_f[x] = fl | p;
  132.    }
  133.    log_f[0] |= ZF;
  134. }
  135.  
  136. unsigned char rlcaf[0x100];
  137. unsigned char rrcaf[0x100];
  138. unsigned char rol[0x100];
  139. unsigned char ror[0x100];
  140. const unsigned char rlcf[0x100] = // for rlc r. may be for rlca (0x3B mask)
  141. {
  142.         0x44,0x00,0x00,0x04,0x08,0x0c,0x0c,0x08
  143.        ,0x00,0x04,0x04,0x00,0x0c,0x08,0x08,0x0c
  144.        ,0x20,0x24,0x24,0x20,0x2c,0x28,0x28,0x2c
  145.        ,0x24,0x20,0x20,0x24,0x28,0x2c,0x2c,0x28
  146.        ,0x00,0x04,0x04,0x00,0x0c,0x08,0x08,0x0c
  147.        ,0x04,0x00,0x00,0x04,0x08,0x0c,0x0c,0x08
  148.        ,0x24,0x20,0x20,0x24,0x28,0x2c,0x2c,0x28
  149.        ,0x20,0x24,0x24,0x20,0x2c,0x28,0x28,0x2c
  150.        ,0x80,0x84,0x84,0x80,0x8c,0x88,0x88,0x8c
  151.        ,0x84,0x80,0x80,0x84,0x88,0x8c,0x8c,0x88
  152.        ,0xa4,0xa0,0xa0,0xa4,0xa8,0xac,0xac,0xa8
  153.        ,0xa0,0xa4,0xa4,0xa0,0xac,0xa8,0xa8,0xac
  154.        ,0x84,0x80,0x80,0x84,0x88,0x8c,0x8c,0x88
  155.        ,0x80,0x84,0x84,0x80,0x8c,0x88,0x88,0x8c
  156.        ,0xa0,0xa4,0xa4,0xa0,0xac,0xa8,0xa8,0xac
  157.        ,0xa4,0xa0,0xa0,0xa4,0xa8,0xac,0xac,0xa8
  158.        ,0x01,0x05,0x05,0x01,0x0d,0x09,0x09,0x0d
  159.        ,0x05,0x01,0x01,0x05,0x09,0x0d,0x0d,0x09
  160.        ,0x25,0x21,0x21,0x25,0x29,0x2d,0x2d,0x29
  161.        ,0x21,0x25,0x25,0x21,0x2d,0x29,0x29,0x2d
  162.        ,0x05,0x01,0x01,0x05,0x09,0x0d,0x0d,0x09
  163.        ,0x01,0x05,0x05,0x01,0x0d,0x09,0x09,0x0d
  164.        ,0x21,0x25,0x25,0x21,0x2d,0x29,0x29,0x2d
  165.        ,0x25,0x21,0x21,0x25,0x29,0x2d,0x2d,0x29
  166.        ,0x85,0x81,0x81,0x85,0x89,0x8d,0x8d,0x89
  167.        ,0x81,0x85,0x85,0x81,0x8d,0x89,0x89,0x8d
  168.        ,0xa1,0xa5,0xa5,0xa1,0xad,0xa9,0xa9,0xad
  169.        ,0xa5,0xa1,0xa1,0xa5,0xa9,0xad,0xad,0xa9
  170.        ,0x81,0x85,0x85,0x81,0x8d,0x89,0x89,0x8d
  171.        ,0x85,0x81,0x81,0x85,0x89,0x8d,0x8d,0x89
  172.        ,0xa5,0xa1,0xa1,0xa5,0xa9,0xad,0xad,0xa9
  173.        ,0xa1,0xa5,0xa5,0xa1,0xad,0xa9,0xa9,0xad
  174. };
  175.  
  176. const unsigned char rrcf[] = // rrc r. may be for rlca (0x3B mask)
  177. {
  178.         0x44,0x81,0x00,0x85,0x00,0x85,0x04,0x81
  179.        ,0x00,0x85,0x04,0x81,0x04,0x81,0x00,0x85
  180.        ,0x08,0x8d,0x0c,0x89,0x0c,0x89,0x08,0x8d
  181.        ,0x0c,0x89,0x08,0x8d,0x08,0x8d,0x0c,0x89
  182.        ,0x00,0x85,0x04,0x81,0x04,0x81,0x00,0x85
  183.        ,0x04,0x81,0x00,0x85,0x00,0x85,0x04,0x81
  184.        ,0x0c,0x89,0x08,0x8d,0x08,0x8d,0x0c,0x89
  185.        ,0x08,0x8d,0x0c,0x89,0x0c,0x89,0x08,0x8d
  186.        ,0x20,0xa5,0x24,0xa1,0x24,0xa1,0x20,0xa5
  187.        ,0x24,0xa1,0x20,0xa5,0x20,0xa5,0x24,0xa1
  188.        ,0x2c,0xa9,0x28,0xad,0x28,0xad,0x2c,0xa9
  189.        ,0x28,0xad,0x2c,0xa9,0x2c,0xa9,0x28,0xad
  190.        ,0x24,0xa1,0x20,0xa5,0x20,0xa5,0x24,0xa1
  191.        ,0x20,0xa5,0x24,0xa1,0x24,0xa1,0x20,0xa5
  192.        ,0x28,0xad,0x2c,0xa9,0x2c,0xa9,0x28,0xad
  193.        ,0x2c,0xa9,0x28,0xad,0x28,0xad,0x2c,0xa9
  194.        ,0x00,0x85,0x04,0x81,0x04,0x81,0x00,0x85
  195.        ,0x04,0x81,0x00,0x85,0x00,0x85,0x04,0x81
  196.        ,0x0c,0x89,0x08,0x8d,0x08,0x8d,0x0c,0x89
  197.        ,0x08,0x8d,0x0c,0x89,0x0c,0x89,0x08,0x8d
  198.        ,0x04,0x81,0x00,0x85,0x00,0x85,0x04,0x81
  199.        ,0x00,0x85,0x04,0x81,0x04,0x81,0x00,0x85
  200.        ,0x08,0x8d,0x0c,0x89,0x0c,0x89,0x08,0x8d
  201.        ,0x0c,0x89,0x08,0x8d,0x08,0x8d,0x0c,0x89
  202.        ,0x24,0xa1,0x20,0xa5,0x20,0xa5,0x24,0xa1
  203.        ,0x20,0xa5,0x24,0xa1,0x24,0xa1,0x20,0xa5
  204.        ,0x28,0xad,0x2c,0xa9,0x2c,0xa9,0x28,0xad
  205.        ,0x2c,0xa9,0x28,0xad,0x28,0xad,0x2c,0xa9
  206.        ,0x20,0xa5,0x24,0xa1,0x24,0xa1,0x20,0xa5
  207.        ,0x24,0xa1,0x20,0xa5,0x20,0xa5,0x24,0xa1
  208.        ,0x2c,0xa9,0x28,0xad,0x28,0xad,0x2c,0xa9
  209.        ,0x28,0xad,0x2c,0xa9,0x2c,0xa9,0x28,0xad
  210. };
  211.  
  212. static void make_rot()
  213. {
  214.    for (int i = 0; i < 0x100; i++) {
  215.       rlcaf[i] = rlcf[i] & 0x3B;        // rra,rla uses same tables
  216.       rrcaf[i] = rrcf[i] & 0x3B;
  217.       rol[i] = u8((i << 1) + (i >> 7));
  218.       ror[i] = u8((i>>1)+(i<<7));
  219.    }
  220. }
  221.  
  222. const unsigned char rl0[] =
  223. {
  224.         0x44,0x00,0x00,0x04,0x08,0x0c,0x0c,0x08
  225.        ,0x00,0x04,0x04,0x00,0x0c,0x08,0x08,0x0c
  226.        ,0x20,0x24,0x24,0x20,0x2c,0x28,0x28,0x2c
  227.        ,0x24,0x20,0x20,0x24,0x28,0x2c,0x2c,0x28
  228.        ,0x00,0x04,0x04,0x00,0x0c,0x08,0x08,0x0c
  229.        ,0x04,0x00,0x00,0x04,0x08,0x0c,0x0c,0x08
  230.        ,0x24,0x20,0x20,0x24,0x28,0x2c,0x2c,0x28
  231.        ,0x20,0x24,0x24,0x20,0x2c,0x28,0x28,0x2c
  232.        ,0x80,0x84,0x84,0x80,0x8c,0x88,0x88,0x8c
  233.        ,0x84,0x80,0x80,0x84,0x88,0x8c,0x8c,0x88
  234.        ,0xa4,0xa0,0xa0,0xa4,0xa8,0xac,0xac,0xa8
  235.        ,0xa0,0xa4,0xa4,0xa0,0xac,0xa8,0xa8,0xac
  236.        ,0x84,0x80,0x80,0x84,0x88,0x8c,0x8c,0x88
  237.        ,0x80,0x84,0x84,0x80,0x8c,0x88,0x88,0x8c
  238.        ,0xa0,0xa4,0xa4,0xa0,0xac,0xa8,0xa8,0xac
  239.        ,0xa4,0xa0,0xa0,0xa4,0xa8,0xac,0xac,0xa8
  240.        ,0x45,0x01,0x01,0x05,0x09,0x0d,0x0d,0x09
  241.        ,0x01,0x05,0x05,0x01,0x0d,0x09,0x09,0x0d
  242.        ,0x21,0x25,0x25,0x21,0x2d,0x29,0x29,0x2d
  243.        ,0x25,0x21,0x21,0x25,0x29,0x2d,0x2d,0x29
  244.        ,0x01,0x05,0x05,0x01,0x0d,0x09,0x09,0x0d
  245.        ,0x05,0x01,0x01,0x05,0x09,0x0d,0x0d,0x09
  246.        ,0x25,0x21,0x21,0x25,0x29,0x2d,0x2d,0x29
  247.        ,0x21,0x25,0x25,0x21,0x2d,0x29,0x29,0x2d
  248.        ,0x81,0x85,0x85,0x81,0x8d,0x89,0x89,0x8d
  249.        ,0x85,0x81,0x81,0x85,0x89,0x8d,0x8d,0x89
  250.        ,0xa5,0xa1,0xa1,0xa5,0xa9,0xad,0xad,0xa9
  251.        ,0xa1,0xa5,0xa5,0xa1,0xad,0xa9,0xa9,0xad
  252.        ,0x85,0x81,0x81,0x85,0x89,0x8d,0x8d,0x89
  253.        ,0x81,0x85,0x85,0x81,0x8d,0x89,0x89,0x8d
  254.        ,0xa1,0xa5,0xa5,0xa1,0xad,0xa9,0xa9,0xad
  255.        ,0xa5,0xa1,0xa1,0xa5,0xa9,0xad,0xad,0xa9
  256. };
  257.  
  258. const unsigned char rl1[] =
  259. {
  260.         0x00,0x04,0x04,0x00,0x0c,0x08,0x08,0x0c
  261.        ,0x04,0x00,0x00,0x04,0x08,0x0c,0x0c,0x08
  262.        ,0x24,0x20,0x20,0x24,0x28,0x2c,0x2c,0x28
  263.        ,0x20,0x24,0x24,0x20,0x2c,0x28,0x28,0x2c
  264.        ,0x04,0x00,0x00,0x04,0x08,0x0c,0x0c,0x08
  265.        ,0x00,0x04,0x04,0x00,0x0c,0x08,0x08,0x0c
  266.        ,0x20,0x24,0x24,0x20,0x2c,0x28,0x28,0x2c
  267.        ,0x24,0x20,0x20,0x24,0x28,0x2c,0x2c,0x28
  268.        ,0x84,0x80,0x80,0x84,0x88,0x8c,0x8c,0x88
  269.        ,0x80,0x84,0x84,0x80,0x8c,0x88,0x88,0x8c
  270.        ,0xa0,0xa4,0xa4,0xa0,0xac,0xa8,0xa8,0xac
  271.        ,0xa4,0xa0,0xa0,0xa4,0xa8,0xac,0xac,0xa8
  272.        ,0x80,0x84,0x84,0x80,0x8c,0x88,0x88,0x8c
  273.        ,0x84,0x80,0x80,0x84,0x88,0x8c,0x8c,0x88
  274.        ,0xa4,0xa0,0xa0,0xa4,0xa8,0xac,0xac,0xa8
  275.        ,0xa0,0xa4,0xa4,0xa0,0xac,0xa8,0xa8,0xac
  276.        ,0x01,0x05,0x05,0x01,0x0d,0x09,0x09,0x0d
  277.        ,0x05,0x01,0x01,0x05,0x09,0x0d,0x0d,0x09
  278.        ,0x25,0x21,0x21,0x25,0x29,0x2d,0x2d,0x29
  279.        ,0x21,0x25,0x25,0x21,0x2d,0x29,0x29,0x2d
  280.        ,0x05,0x01,0x01,0x05,0x09,0x0d,0x0d,0x09
  281.        ,0x01,0x05,0x05,0x01,0x0d,0x09,0x09,0x0d
  282.        ,0x21,0x25,0x25,0x21,0x2d,0x29,0x29,0x2d
  283.        ,0x25,0x21,0x21,0x25,0x29,0x2d,0x2d,0x29
  284.        ,0x85,0x81,0x81,0x85,0x89,0x8d,0x8d,0x89
  285.        ,0x81,0x85,0x85,0x81,0x8d,0x89,0x89,0x8d
  286.        ,0xa1,0xa5,0xa5,0xa1,0xad,0xa9,0xa9,0xad
  287.        ,0xa5,0xa1,0xa1,0xa5,0xa9,0xad,0xad,0xa9
  288.        ,0x81,0x85,0x85,0x81,0x8d,0x89,0x89,0x8d
  289.        ,0x85,0x81,0x81,0x85,0x89,0x8d,0x8d,0x89
  290.        ,0xa5,0xa1,0xa1,0xa5,0xa9,0xad,0xad,0xa9
  291.        ,0xa1,0xa5,0xa5,0xa1,0xad,0xa9,0xa9,0xad
  292. };
  293.  
  294. const unsigned char rr0[] =
  295. {
  296.         0x44,0x45,0x00,0x01,0x00,0x01,0x04,0x05
  297.        ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01
  298.        ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09
  299.        ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d
  300.        ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01
  301.        ,0x04,0x05,0x00,0x01,0x00,0x01,0x04,0x05
  302.        ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d
  303.        ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09
  304.        ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21
  305.        ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25
  306.        ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d
  307.        ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29
  308.        ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25
  309.        ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21
  310.        ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29
  311.        ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d
  312.        ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01
  313.        ,0x04,0x05,0x00,0x01,0x00,0x01,0x04,0x05
  314.        ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d
  315.        ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09
  316.        ,0x04,0x05,0x00,0x01,0x00,0x01,0x04,0x05
  317.        ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01
  318.        ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09
  319.        ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d
  320.        ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25
  321.        ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21
  322.        ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29
  323.        ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d
  324.        ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21
  325.        ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25
  326.        ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d
  327.        ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29
  328. };
  329.  
  330. const unsigned char rr1[] =
  331. {
  332.         0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81
  333.        ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85
  334.        ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d
  335.        ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89
  336.        ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85
  337.        ,0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81
  338.        ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89
  339.        ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d
  340.        ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5
  341.        ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1
  342.        ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9
  343.        ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad
  344.        ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1
  345.        ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5
  346.        ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad
  347.        ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9
  348.        ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85
  349.        ,0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81
  350.        ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89
  351.        ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d
  352.        ,0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81
  353.        ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85
  354.        ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d
  355.        ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89
  356.        ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1
  357.        ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5
  358.        ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad
  359.        ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9
  360.        ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5
  361.        ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1
  362.        ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9
  363.        ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad
  364. };
  365.  
  366. const unsigned char sraf[] =
  367. {
  368.         0x44,0x45,0x00,0x01,0x00,0x01,0x04,0x05
  369.        ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01
  370.        ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09
  371.        ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d
  372.        ,0x00,0x01,0x04,0x05,0x04,0x05,0x00,0x01
  373.        ,0x04,0x05,0x00,0x01,0x00,0x01,0x04,0x05
  374.        ,0x0c,0x0d,0x08,0x09,0x08,0x09,0x0c,0x0d
  375.        ,0x08,0x09,0x0c,0x0d,0x0c,0x0d,0x08,0x09
  376.        ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21
  377.        ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25
  378.        ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d
  379.        ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29
  380.        ,0x24,0x25,0x20,0x21,0x20,0x21,0x24,0x25
  381.        ,0x20,0x21,0x24,0x25,0x24,0x25,0x20,0x21
  382.        ,0x28,0x29,0x2c,0x2d,0x2c,0x2d,0x28,0x29
  383.        ,0x2c,0x2d,0x28,0x29,0x28,0x29,0x2c,0x2d
  384.        ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85
  385.        ,0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81
  386.        ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89
  387.        ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d
  388.        ,0x80,0x81,0x84,0x85,0x84,0x85,0x80,0x81
  389.        ,0x84,0x85,0x80,0x81,0x80,0x81,0x84,0x85
  390.        ,0x8c,0x8d,0x88,0x89,0x88,0x89,0x8c,0x8d
  391.        ,0x88,0x89,0x8c,0x8d,0x8c,0x8d,0x88,0x89
  392.        ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1
  393.        ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5
  394.        ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad
  395.        ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9
  396.        ,0xa4,0xa5,0xa0,0xa1,0xa0,0xa1,0xa4,0xa5
  397.        ,0xa0,0xa1,0xa4,0xa5,0xa4,0xa5,0xa0,0xa1
  398.        ,0xa8,0xa9,0xac,0xad,0xac,0xad,0xa8,0xa9
  399.        ,0xac,0xad,0xa8,0xa9,0xa8,0xa9,0xac,0xad
  400. };
  401.  
  402. void init_z80tables()
  403. {
  404.    make_adc();
  405.    make_sbc();
  406.    make_log();
  407.    make_rot();
  408. }
  409.  
  410.