Subversion Repositories pentevo

Rev

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

  1. #pragma once
  2. extern const unsigned char rl0[];
  3. extern const unsigned char rl1[];
  4.  
  5. extern const unsigned char rr0[];
  6. extern const unsigned char rr1[];
  7.  
  8. extern unsigned char rol[];
  9. extern unsigned char ror[];
  10.  
  11. extern unsigned char rlcaf[];
  12. extern unsigned char rrcaf[];
  13. extern const unsigned char rlcf[];
  14. extern const unsigned char rrcf[];
  15.  
  16. extern const unsigned char sraf[];
  17. extern unsigned char log_f[];
  18.  
  19. extern const unsigned char incf[];
  20. extern const unsigned char decf[];
  21. extern unsigned char adcf[];
  22. extern unsigned char sbcf[];
  23.  
  24. extern unsigned char cpf[];
  25. extern unsigned char cpf8b[];
  26.  
  27. Z80INLINE void and8(Z80 *cpu, unsigned char src)
  28. {
  29.    cpu->a &= src;
  30.    cpu->f = log_f[cpu->a] | HF;
  31. }
  32.  
  33. Z80INLINE void or8(Z80 *cpu, unsigned char src)
  34. {
  35.    cpu->a |= src;
  36.    cpu->f = log_f[cpu->a];
  37. }
  38.  
  39. Z80INLINE void xor8(Z80 *cpu, unsigned char src)
  40. {
  41.    cpu->a ^= src;
  42.    cpu->f = log_f[cpu->a];
  43. }
  44.  
  45. Z80INLINE void bitmem(Z80 *cpu, unsigned char src, unsigned char bit)
  46. {
  47.    cpu->f = log_f[src & (1 << bit)] | HF | (cpu->f & CF);
  48.    cpu->f = (cpu->f & ~(F3|F5)) | (cpu->memh & (F3|F5));
  49. }
  50.  
  51. Z80INLINE void set(unsigned char &src, unsigned char bit)
  52. {
  53.    src |= (1 << bit);
  54. }
  55.  
  56. Z80INLINE void res(unsigned char &src, unsigned char bit)
  57. {
  58.    src &= ~(1 << bit);
  59. }
  60.  
  61. Z80INLINE void bit(Z80 *cpu, unsigned char src, unsigned char bit)
  62. {
  63.    cpu->f = log_f[src & (1 << bit)] | HF | (cpu->f & CF) | (src & (F3|F5));
  64. }
  65.  
  66. Z80INLINE unsigned char resbyte(unsigned char src, unsigned char bit)
  67. {
  68.    return src & ~(1 << bit);
  69. }
  70.  
  71. Z80INLINE unsigned char setbyte(unsigned char src, unsigned char bit)
  72. {
  73.    return u8(src | (1U << bit));
  74. }
  75.  
  76. Z80INLINE void inc8(Z80 *cpu, unsigned char &x)
  77. {
  78.    cpu->f = incf[x] | (cpu->f & CF);
  79.    x++;
  80. }
  81.  
  82. Z80INLINE void dec8(Z80 *cpu, unsigned char &x)
  83. {
  84.    cpu->f = decf[x] | (cpu->f & CF);
  85.    x--;
  86. }
  87.  
  88. Z80INLINE void add8(Z80 *cpu, unsigned char src)
  89. {
  90.    cpu->f = adcf[cpu->a + src*0x100];
  91.    cpu->a += src;
  92. }
  93.  
  94. Z80INLINE void sub8(Z80 *cpu, unsigned char src)
  95. {
  96.    cpu->f = sbcf[cpu->a*0x100 + src];
  97.    cpu->a -= src;
  98. }
  99.  
  100. Z80INLINE void adc8(Z80 *cpu, unsigned char src)
  101. {
  102.    unsigned char carry = ((cpu->f) & CF);
  103.    cpu->f = adcf[cpu->a + src*0x100 + 0x10000*carry];
  104.    cpu->a += src + carry;
  105. }
  106.  
  107. Z80INLINE void sbc8(Z80 *cpu, unsigned char src)
  108. {
  109.    unsigned char carry = ((cpu->f) & CF);
  110.    cpu->f = sbcf[cpu->a*0x100 + src + 0x10000*carry];
  111.    cpu->a -= src + carry;
  112. }
  113.  
  114. Z80INLINE void cp8(Z80 *cpu, unsigned char src)
  115. {
  116.    cpu->f = cpf[cpu->a*0x100 + src];
  117. }
  118.  
  119. void init_z80tables();
  120.