home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 405.lha / AppleII_Emulators_src / src-2 / cpu_compr.c < prev    next >
C/C++ Source or Header  |  1990-06-28  |  5KB  |  229 lines

  1. #include <cpu_prog_model.h>
  2. #include <cpu6502_addrm.h>
  3.  
  4.  
  5.  
  6. void CMP_imm( code)
  7. PM *code;
  8. {
  9.    short int temp_value;
  10.  
  11.    temp_value = code->Ac - code->Me [imm_address( code)];
  12.    code->Ca = (temp_value >= 0);
  13.    temp_value &= 0xFF;
  14.    set_neg_zero_stat( code, temp_value);
  15. }
  16.  
  17. void CMP_zer( code)
  18. PM *code;
  19. {
  20.    unsigned short int address;
  21.    short int          temp_value;
  22.  
  23.    address = zero_address( code);
  24.    mem_check( address, &(code->Me [address]), code, Func_LOAD);
  25.    temp_value = code->Me [address];
  26.  
  27.    temp_value = code->Ac - temp_value;
  28.    code->Ca = (temp_value >= 0);
  29.    temp_value &= 0xFF;
  30.  
  31.    set_neg_zero_stat( code, temp_value);
  32. }
  33.  
  34. void CMP_zex( code)
  35. PM *code;
  36. {
  37.    unsigned short int address;
  38.    short int          temp_value;
  39.  
  40.    address = zero_x_address( code);
  41.    mem_check( address, &(code->Me [address]), code, Func_LOAD);
  42.    temp_value = code->Me [address];
  43.  
  44.    temp_value = code->Ac - temp_value;
  45.    code->Ca = (temp_value >= 0);
  46.    temp_value &= 0xFF;
  47.  
  48.    set_neg_zero_stat( code, temp_value);
  49. }
  50.  
  51. void CMP_abs( code)
  52. PM *code;
  53. {
  54.    unsigned short int address;
  55.    short int          temp_value;
  56.  
  57.    address = abs_address( code);
  58.    mem_check( address, &(code->Me [address]), code, Func_LOAD);
  59.    temp_value = code->Me [address];
  60.  
  61.    temp_value = code->Ac - temp_value;
  62.    code->Ca = (temp_value >= 0);
  63.    temp_value &= 0xFF;
  64.  
  65.    set_neg_zero_stat( code, temp_value);
  66. }
  67.  
  68. void CMP_abx( code)
  69. PM *code;
  70. {
  71.    unsigned short int address;
  72.    short int          temp_value;
  73.  
  74.    address = abs_x_address( code);
  75.    mem_check( address, &(code->Me [address]), code, Func_LOAD);
  76.    temp_value = code->Me [address];
  77.  
  78.    temp_value = code->Ac - temp_value;
  79.    code->Ca = (temp_value >= 0);
  80.    temp_value &= 0xFF;
  81.  
  82.    set_neg_zero_stat( code, temp_value);
  83. }
  84.  
  85. void CMP_aby( code)
  86. PM *code;
  87. {
  88.    unsigned short int address;
  89.    short int          temp_value;
  90.  
  91.    address = abs_y_address( code);
  92.  
  93.    mem_check( address, &(code->Me [address]), code, Func_LOAD);
  94.    temp_value = code->Me [address];
  95.  
  96.    temp_value = code->Ac - temp_value;
  97.  
  98.    code->Ca = (temp_value >= 0);
  99.    temp_value &= 0xFF;
  100.  
  101.    set_neg_zero_stat( code, temp_value);
  102. }
  103.  
  104. void CMP_inx( code)
  105. PM *code;
  106. {
  107.    unsigned short int address;
  108.  
  109.    short temp_value;
  110.  
  111.    address = ind_x_address( code);
  112.  
  113.    mem_check( address, &(code->Me [address]), code, Func_LOAD);
  114.    temp_value = code->Me [address];
  115.  
  116.    temp_value = code->Ac - temp_value;
  117.    code->Ca = (temp_value >= 0);
  118.    temp_value &= 0xFF;
  119.  
  120.    set_neg_zero_stat( code, temp_value);
  121. }
  122.  
  123. void CMP_iny( code)
  124. PM *code;
  125. {
  126.    unsigned short int address;
  127.  
  128.    short temp_value;
  129.  
  130.    address = ind_y_address( code);
  131.  
  132.    mem_check( address, &(code->Me [address]), code, Func_LOAD);
  133.    temp_value = code->Me [address];
  134.  
  135.    temp_value = code->Ac - temp_value;
  136.    code->Ca = (temp_value >= 0);
  137.    temp_value &= 0xFF;
  138.  
  139.    set_neg_zero_stat( code, temp_value);
  140. }
  141.  
  142.  
  143. void CPX_imm( code)
  144. PM *code;
  145. {
  146.    short int temp_value;
  147.  
  148.    temp_value = code->Xr - code->Me [imm_address( code)];
  149.    code->Ca = (temp_value >= 0);
  150.    temp_value &= 0xFF;
  151.    set_neg_zero_stat( code, temp_value);
  152. }
  153.  
  154. void CPX_zer( code)
  155. PM *code;
  156. {
  157.    unsigned short int address;
  158.    short int          temp_value;
  159.  
  160.    address = zero_address( code);
  161.    mem_check( address, &(code->Me [address]), code, Func_LOAD);
  162.    temp_value = code->Me [address];
  163.  
  164.    temp_value = code->Xr - temp_value;
  165.    code->Ca = (temp_value >= 0);
  166.    temp_value &= 0xFF;
  167.    set_neg_zero_stat( code, temp_value);
  168. }
  169.  
  170. void CPX_abs( code)
  171. PM *code;
  172. {
  173.    unsigned short int address;
  174.    short int          temp_value;
  175.  
  176.    address = abs_address( code);
  177.    mem_check( address, &(code->Me [address]), code, Func_LOAD);
  178.    temp_value = code->Me [address];
  179.  
  180.    temp_value = code->Xr - temp_value;
  181.    code->Ca = (temp_value >= 0);
  182.    temp_value &= 0xFF;
  183.    set_neg_zero_stat( code, temp_value);
  184. }
  185.  
  186. void CPY_imm( code)
  187. PM *code;
  188. {
  189.    short int temp_value;
  190.  
  191.    temp_value = code->Yr - code->Me [imm_address( code)];
  192.    code->Ca = (temp_value >= 0);
  193.    temp_value &= 0xFF;
  194.    set_neg_zero_stat( code, temp_value);
  195. }
  196.  
  197. void CPY_zer( code)
  198. PM *code;
  199. {
  200.    unsigned short int address;
  201.    short int          temp_value;
  202.  
  203.    address = zero_address( code);
  204.    mem_check( address, &(code->Me [address]), code, Func_LOAD);
  205.    temp_value = code->Me [address];
  206.  
  207.    temp_value = code->Yr - temp_value;
  208.    code->Ca = (temp_value >= 0);
  209.    temp_value &= 0xFF;
  210.    set_neg_zero_stat( code, temp_value);
  211. }
  212. void CPY_abs( code)
  213. PM *code;
  214. {
  215.    unsigned short int address;
  216.    short int          temp_value;
  217.  
  218.    address = abs_address( code);
  219.    mem_check( address, &(code->Me [address]), code, Func_LOAD);
  220.    temp_value = code->Me [address];
  221.  
  222.    temp_value = code->Yr - temp_value;
  223.    code->Ca = (temp_value >= 0);
  224.    temp_value &= 0xFF;
  225.    set_neg_zero_stat( code, temp_value);
  226. }
  227.  
  228.  
  229.