home *** CD-ROM | disk | FTP | other *** search
- #include <cpu_prog_model.h>
- #include <cpu6502_addrm.h>
-
-
-
- void AND_imm( code)
- PM *code;
- {
- code->Ac &= code->Me [imm_address( code)];
- set_neg_zero_stat( code, code->Ac);
- }
-
- void AND_zer( code)
- PM *code;
- {
- unsigned short int address;
-
- short temp_value;
-
- address = zero_address( code);
-
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- temp_value = code->Me [address];
-
- code->Ac &= temp_value;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void AND_zex( code)
- PM *code;
- {
- unsigned short int address;
-
- short temp_value;
-
- address = zero_x_address( code);
-
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- temp_value = code->Me [address];
-
- code->Ac &= temp_value;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void AND_abs( code)
- PM *code;
- {
- unsigned short int address;
-
- short temp_value;
-
- address = abs_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- temp_value = code->Me [address];
-
- code->Ac &= temp_value;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void AND_abx( code)
- PM *code;
- {
- unsigned short int address;
-
- short temp_value;
-
- address = abs_x_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- temp_value = code->Me [address];
-
- code->Ac &= temp_value;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void AND_aby( code)
- PM *code;
- {
- unsigned short int address;
-
- short temp_value;
-
- address = abs_y_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- temp_value = code->Me [address];
-
- code->Ac &= temp_value;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void AND_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];
-
- code->Ac &= temp_value;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void AND_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];
-
- code->Ac &= temp_value;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void ASL_acc( code)
- PM *code;
- {
- (code->Ac) <<= 1;
- code->Ca = (code->Ac >= 0x100);
- code->Ac &= 0xFF;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void ASL_zer( code)
- PM *code;
- {
- unsigned short int address;
-
- short temp_value;
-
- address = zero_address( code);
-
- (code->Me [address]) <<= 1;
- code->Ca = (code->Me [address] >= 0x100);
- code->Me [address] &= 0xFF;
-
- mem_check( address, &(code->Me [address]), code, Func_STORE);
- set_neg_zero_stat( code, code->Me [address]);
- }
-
- void ASL_zex( code)
- PM *code;
- {
- unsigned short int address;
-
- short temp_value;
-
- address = zero_x_address( code);
-
- (code->Me [address]) <<= 1;
- code->Ca = (code->Me [address] >= 0x100);
- code->Me [address] &= 0xFF;
-
- mem_check( address, &(code->Me [address]), code, Func_STORE);
- set_neg_zero_stat( code, code->Me [address]);
- }
-
- void ASL_abs( code)
- PM *code;
- {
- unsigned short int address;
-
- short temp_value;
-
- address = abs_address( code);
-
- (code->Me [address]) <<= 1;
- code->Ca = (code->Me [address] >= 0x100);
- code->Me [address] &= 0xFF;
-
- mem_check( address, &(code->Me [address]), code, Func_STORE);
- set_neg_zero_stat( code, code->Me [address]);
- }
-
-
- void ASL_abx( code)
- PM *code;
- {
- unsigned short int address;
-
- short temp_value;
-
- address = abs_x_address( code);
-
- (code->Me [address]) <<= 1;
- code->Ca = (code->Me [address] >= 0x100);
- code->Me [address] &= 0xFF;
-
- mem_check( address, &(code->Me [address]), code, Func_STORE);
- set_neg_zero_stat( code, code->Me [address]);
- }
-
-
- void BIT_zer( code)
- PM *code;
- {
- unsigned short int address;
-
- short temp_value;
-
- address = zero_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- temp_value = code->Me [address];
-
- code->Ov = ( (temp_value & 0x40) == 0x40);
- code->Ze = ( (temp_value & code->Ac) == 0);
- code->Ne = (temp_value >= 0x80);
- }
-
- void BIT_abs( code)
- PM *code;
- {
- unsigned short int address;
- short temp_value;
-
- address = abs_address( code);
-
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- temp_value = code->Me [address];
-
- code->Ov = ( (temp_value & 0x40) == 0x40);
- code->Ze = ( (temp_value & code->Ac) == 0);
- code->Ne = (temp_value >= 0x80);
- }
-
- void EOR_imm( code)
- PM *code;
- {
- code->Ac ^= code->Me [imm_address( code)];
- set_neg_zero_stat( code, code->Ac);
- }
-
- void EOR_zer( code)
- PM *code;
- {
- unsigned short int address;
- short value;
-
- address = zero_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- value = code->Me [address];
-
- code->Ac ^= value;
- mem_check( address, &(code->Ac), code, Func_STORE);
- set_neg_zero_stat( code, code->Ac);
- }
-
- void EOR_zex( code)
- PM *code;
- {
- unsigned short int address;
- short value;
-
- address = zero_x_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- value = code->Me [address];
-
- code->Ac ^= value;
- mem_check( address, &(code->Ac), code, Func_STORE);
- set_neg_zero_stat( code, code->Ac);
- }
-
- void EOR_abs( code)
- PM *code;
- {
- unsigned short int address;
- short value;
-
- address = abs_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- value = code->Me [address];
-
- code->Ac ^= value;
- mem_check( address, &(code->Ac), code, Func_STORE);
- set_neg_zero_stat( code, code->Ac);
- }
-
- void EOR_abx( code)
- PM *code;
- {
- unsigned short int address;
- short value;
-
- address = abs_x_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- value = code->Me [address];
-
- code->Ac ^= value;
- mem_check( address, &(code->Ac), code, Func_STORE);
- set_neg_zero_stat( code, code->Ac);
- }
-
- void EOR_aby( code)
- PM *code;
- {
- unsigned short int address;
- short value;
-
- address = abs_y_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- value = code->Me [address];
-
- code->Ac ^= value;
- mem_check( address, &(code->Ac), code, Func_STORE);
- set_neg_zero_stat( code, code->Ac);
- }
-
- void EOR_inx( code)
- PM *code;
- {
- unsigned short int address;
- short value;
-
- address = ind_x_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- value = code->Me [address];
-
- code->Ac ^= value;
- mem_check( address, &(code->Ac), code, Func_STORE);
- set_neg_zero_stat( code, code->Ac);
- }
-
- void EOR_iny( code)
- PM *code;
- {
- unsigned short int address;
- short value;
-
- address = ind_y_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- value = code->Me [address];
-
- code->Ac ^= value;
- mem_check( address, &(code->Ac), code, Func_STORE);
- set_neg_zero_stat( code, code->Ac);
- }
-
- void LSR_acc( code)
- PM *code;
- {
- code->Ca = (code->Ac & 0x01);
- (code->Ac) >>= 1;
- code->Ze = (code->Ac == 0);
- code->Ne = 0;
- }
-
- void LSR_zer( code)
- PM *code;
- {
- unsigned short int address;
-
- address = zero_address( code);
-
- code->Ca = (code->Me [address] & 0x01);
- (code->Me [address]) >>= 1;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- code->Ze = (code->Me [address] == 0);
- code->Ne = 0;
- }
-
- void LSR_zex( code)
- PM *code;
- {
- unsigned short int address;
-
- address = zero_x_address( code);
-
- code->Ca = (code->Me [address] & 0x01);
- (code->Me [address]) >>= 1;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- code->Ze = (code->Me [address] == 0);
- code->Ne = 0;
- }
-
- void LSR_abs( code)
- PM *code;
- {
- unsigned short int address;
-
- address = abs_address( code);
-
- code->Ca = (code->Me [address] & 0x01);
- (code->Me [address]) >>= 1;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- code->Ze = (code->Me [address] == 0);
- code->Ne = 0;
- }
-
- void LSR_abx( code)
- PM *code;
- {
- unsigned short int address;
-
- address = abs_x_address( code);
-
- code->Ca = (code->Me [address] & 0x01);
- (code->Me [address]) >>= 1;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- code->Ze = (code->Me [address] == 0);
- code->Ne = 0;
- }
-
- void ORA_imm( code)
- PM *code;
- {
- code->Ac |= code->Me [imm_address( code)];
- set_neg_zero_stat( code, code->Ac);
- }
-
-
- void ORA_zer( code)
- PM *code;
- {
- unsigned short int address;
-
- short memory;
-
- address = zero_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- memory = code->Me [address];
-
- code->Ac |= memory;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void ORA_zex( code)
- PM *code;
- {
- unsigned short int address;
-
- short memory;
-
- address = zero_x_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- memory = code->Me [address];
-
- code->Ac |= memory;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void ORA_abs( code)
- PM *code;
- {
- unsigned short int address;
- short memory;
-
- address = abs_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- memory = code->Me [address];
-
- code->Ac |= memory;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void ORA_abx( code)
- PM *code;
- {
- unsigned short int address;
- short memory;
-
- address = abs_x_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- memory = code->Me [address];
-
- code->Ac |= memory;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void ORA_aby( code)
- PM *code;
- {
- unsigned short int address;
- short memory;
-
- address = abs_y_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- memory = code->Me [address];
-
- code->Ac |= memory;
- set_neg_zero_stat( code, code->Ac);
- }
-
-
- void ORA_inx( code)
- PM *code;
- {
- unsigned short int address;
-
- short memory;
-
- address = ind_x_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- memory = code->Me [address];
-
- code->Ac |= memory;
- set_neg_zero_stat( code, code->Ac);
- }
-
- void ORA_iny( code)
- PM *code;
- {
- unsigned short int address;
-
- short memory;
-
- address = ind_y_address( code);
- mem_check( address, &(code->Me [address]), code, Func_LOAD);
- memory = code->Me [address];
-
- code->Ac |= memory;
- set_neg_zero_stat( code, code->Ac);
- }
-
- ROL_acc( code)
- PM *code;
- {
- code->Ac <<= 1;
- code->Ac |= code->Ca;
- code->Ca = (code->Ac >= 0x100);
- code->Ac &= 0xFF;
- set_neg_zero_stat( code, code->Ac);
- }
-
- ROL_zer( code)
- PM *code;
- {
- unsigned short int address;
-
- address = zero_address( code);
-
- code->Me [address] <<= 1;
- code->Me [address] |= code->Ca;
- code->Ca = (code->Me [address] >= 0x100);
- code->Me [address] &= 0xFF;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- set_neg_zero_stat( code, code->Me [address]);
- }
-
- ROL_zex( code)
- PM *code;
- {
- unsigned short int address;
-
- address = zero_x_address( code);
-
- code->Me [address] <<= 1;
- code->Me [address] |= code->Ca;
- code->Ca = (code->Me [address] >= 0x100);
- code->Me [address] &= 0xFF;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- set_neg_zero_stat( code, code->Me [address]);
- }
-
- ROL_abs( code)
- PM *code;
- {
- unsigned short int address;
-
- address = abs_address( code);
-
- code->Me [address] <<= 1;
- code->Me [address] |= code->Ca;
- code->Ca = (code->Me [address] >= 0x100);
- code->Me [address] &= 0xFF;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- set_neg_zero_stat( code, code->Me [address]);
- }
-
- ROL_abx( code)
- PM *code;
- {
- unsigned short int address;
-
- address = abs_x_address( code);
-
- code->Me [address] <<= 1;
- code->Me [address] |= code->Ca;
- code->Ca = (code->Me [address] >= 0x100);
- code->Me [address] &= 0xFF;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- set_neg_zero_stat( code, code->Me [address]);
- }
-
- ROR_acc( code)
- PM *code;
- {
- short temp_carry;
-
- temp_carry = code->Ac & 0x1;
- code->Ac >>= 1;
- code->Ac |= (code->Ca << 7);
- code->Ca = temp_carry;
-
- set_neg_zero_stat( code, code->Ac);
- }
-
- ROR_zer( code)
- PM *code;
- {
- unsigned short int address;
- short temp_carry;
-
- address = zero_address( code);
-
- temp_carry = code->Me [address] & 0x1;
- code->Me [address] >>= 1;
- code->Me [address] |= (code->Ca << 7);
- code->Ca = temp_carry;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- set_neg_zero_stat( code, code->Me [address]);
- }
-
- ROR_zex( code)
- PM *code;
- {
- unsigned short int address;
- short temp_carry;
-
- address = zero_x_address( code);
-
- temp_carry = code->Me [address] & 0x1;
- code->Me [address] >>= 1;
- code->Me [address] |= (code->Ca << 7);
- code->Ca = temp_carry;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- set_neg_zero_stat( code, code->Me [address]);
- }
-
- ROR_abs( code)
- PM *code;
- {
- unsigned short int address;
- short temp_carry;
-
- address = abs_address( code);
-
- temp_carry = code->Me [address] & 0x1;
- code->Me [address] >>= 1;
- code->Me [address] |= (code->Ca << 7);
- code->Ca = temp_carry;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- set_neg_zero_stat( code, code->Me [address]);
- }
-
- ROR_abx( code)
- PM *code;
- {
- unsigned short int address;
- short temp_carry;
-
- address = abs_x_address( code);
-
- temp_carry = code->Me [address] & 0x1;
- code->Me [address] >>= 1;
- code->Me [address] |= (code->Ca << 7);
- code->Ca = temp_carry;
- mem_check( address, &(code->Me [address]), code, Func_STORE);
-
- set_neg_zero_stat( code, code->Me [address]);
- }
-
-
-
-
-