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 >
Wrap
C/C++ Source or Header
|
1990-06-28
|
5KB
|
229 lines
#include <cpu_prog_model.h>
#include <cpu6502_addrm.h>
void CMP_imm( code)
PM *code;
{
short int temp_value;
temp_value = code->Ac - code->Me [imm_address( code)];
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CMP_zer( code)
PM *code;
{
unsigned short int address;
short int temp_value;
address = zero_address( code);
mem_check( address, &(code->Me [address]), code, Func_LOAD);
temp_value = code->Me [address];
temp_value = code->Ac - temp_value;
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CMP_zex( code)
PM *code;
{
unsigned short int address;
short int temp_value;
address = zero_x_address( code);
mem_check( address, &(code->Me [address]), code, Func_LOAD);
temp_value = code->Me [address];
temp_value = code->Ac - temp_value;
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CMP_abs( code)
PM *code;
{
unsigned short int address;
short int temp_value;
address = abs_address( code);
mem_check( address, &(code->Me [address]), code, Func_LOAD);
temp_value = code->Me [address];
temp_value = code->Ac - temp_value;
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CMP_abx( code)
PM *code;
{
unsigned short int address;
short int temp_value;
address = abs_x_address( code);
mem_check( address, &(code->Me [address]), code, Func_LOAD);
temp_value = code->Me [address];
temp_value = code->Ac - temp_value;
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CMP_aby( code)
PM *code;
{
unsigned short int address;
short int temp_value;
address = abs_y_address( code);
mem_check( address, &(code->Me [address]), code, Func_LOAD);
temp_value = code->Me [address];
temp_value = code->Ac - temp_value;
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CMP_inx( code)
PM *code;
{
unsigned short int address;
short temp_value;
address = ind_x_address( code);
mem_check( address, &(code->Me [address]), code, Func_LOAD);
temp_value = code->Me [address];
temp_value = code->Ac - temp_value;
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CMP_iny( code)
PM *code;
{
unsigned short int address;
short temp_value;
address = ind_y_address( code);
mem_check( address, &(code->Me [address]), code, Func_LOAD);
temp_value = code->Me [address];
temp_value = code->Ac - temp_value;
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CPX_imm( code)
PM *code;
{
short int temp_value;
temp_value = code->Xr - code->Me [imm_address( code)];
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CPX_zer( code)
PM *code;
{
unsigned short int address;
short int temp_value;
address = zero_address( code);
mem_check( address, &(code->Me [address]), code, Func_LOAD);
temp_value = code->Me [address];
temp_value = code->Xr - temp_value;
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CPX_abs( code)
PM *code;
{
unsigned short int address;
short int temp_value;
address = abs_address( code);
mem_check( address, &(code->Me [address]), code, Func_LOAD);
temp_value = code->Me [address];
temp_value = code->Xr - temp_value;
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CPY_imm( code)
PM *code;
{
short int temp_value;
temp_value = code->Yr - code->Me [imm_address( code)];
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CPY_zer( code)
PM *code;
{
unsigned short int address;
short int temp_value;
address = zero_address( code);
mem_check( address, &(code->Me [address]), code, Func_LOAD);
temp_value = code->Me [address];
temp_value = code->Yr - temp_value;
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}
void CPY_abs( code)
PM *code;
{
unsigned short int address;
short int temp_value;
address = abs_address( code);
mem_check( address, &(code->Me [address]), code, Func_LOAD);
temp_value = code->Me [address];
temp_value = code->Yr - temp_value;
code->Ca = (temp_value >= 0);
temp_value &= 0xFF;
set_neg_zero_stat( code, temp_value);
}