#include <cpu_prog_model.h>
#include <cpu6502_addrm.h>



void DEC_zer( code)
PM *code;
{
   unsigned short int address;

   short memory;

   address = zero_address( code);
   memory = code->Me [address] - 1;

   memory &= 0xFF;
   mem_check( address, &memory, code, Func_STORE);
   code->Me [address] = memory;

   set_neg_zero_stat( code, memory);
}

void DEC_zex( code)
PM *code;
{
   unsigned short int address;

   short memory;

   address = zero_x_address( code);
   memory = code->Me [address] - 1;

   memory &= 0xFF;
   mem_check( address, &memory, code, Func_STORE);
   code->Me [address] = memory;

   set_neg_zero_stat( code, memory);
}

void DEC_abs( code)
PM *code;
{
   unsigned short int address;

   short memory;

   address = abs_address( code);
   memory = code->Me [address] - 1;

   memory &= 0xFF;
   mem_check( address, &memory, code, Func_STORE);
   code->Me [address] = memory;

   set_neg_zero_stat( code, memory);
}

void DEC_abx( code)
PM *code;
{
   unsigned short int address;

   short memory;

   address = abs_x_address( code);
   memory = code->Me [address] - 1;

   memory &= 0xFF;
   mem_check( address, &memory, code, Func_STORE);
   code->Me [address] = memory;

   set_neg_zero_stat( code, memory);
}


void DEX( code)
PM *code;
{
   (code->Xr)--;
   code->Xr &= 0xFF;
   set_neg_zero_stat( code, code->Xr);
}

void DEY( code)
PM *code;
{
   (code->Yr)--;
   code->Yr &= 0xFF;
   set_neg_zero_stat( code, code->Yr);
}

void INC_zer( code)
PM *code;
{
   unsigned short int address;

   short memory;

   address = zero_address( code);
   memory = code->Me [address] + 1;

   memory &= 0xFF;
   mem_check( address, &memory, code, Func_STORE);
   code->Me [address] = memory;

   set_neg_zero_stat( code, memory);
}

void INC_zex( code)
PM *code;
{
   unsigned short int address;

   short memory;

   address = zero_x_address( code);
   memory = code->Me [address] + 1;

   memory &= 0xFF;
   mem_check( address, &memory, code, Func_STORE);
   code->Me [address] = memory;

   set_neg_zero_stat( code, memory);
}

void INC_abs( code)
PM *code;
{
   unsigned short int address;

   short memory;

   address = abs_address( code);
   memory = code->Me [address] + 1;

   memory &= 0xFF;
   mem_check( address, &memory, code, Func_STORE);
   code->Me [address] = memory;

   set_neg_zero_stat( code, memory);
}

void INC_abx( code)
PM *code;
{
   unsigned short int address;

   short memory;

   address = abs_x_address( code);
   memory = code->Me [address] + 1;

   memory &= 0xFF;
   mem_check( address, &memory, code, Func_STORE);
   code->Me [address] = memory;

   set_neg_zero_stat( code, memory);
}


void INX( code)
PM *code;
{
   (code->Xr)++;
   (code->Xr) &= 0xFF;
   set_neg_zero_stat( code, code->Xr);
}

void INY( code)
PM *code;
{
   (code->Yr)++;
   code->Yr &= 0xFF;
   set_neg_zero_stat( code, code->Yr);
}


