Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- case 0x82: // ADI #
- data = fetch();
- temp_word = (WORD)Registers[REGISTER_A] + (WORD)data;
- if ((Flags & FLAG_C) != 0)
- {
- temp_word++;
- }
- if (temp_word >= 0x100)
- {
- Flags = Flags | FLAG_C; // set carry flag
- }
- else
- {
- Flags = Flags & (0xFF - FLAG_C);
- }
- set_flag_n((BYTE)temp_word);
- set_flag_z((BYTE)temp_word);
- set_flag_v(Registers[REGISTER_A], data, (BYTE)temp_word);
- Registers[REGISTER_A] = (BYTE)temp_word;
- break;
- case 0x83: // SBI #
- data = fetch();
- temp_word = (WORD)Registers[REGISTER_A] - (WORD)data;
- if ((Flags & FLAG_C) != 0)
- {
- temp_word--;
- }
- if (temp_word >= 0x100)
- {
- Flags = Flags | FLAG_C; // set carry flag
- }
- else
- {
- Flags = Flags & (0xFF - FLAG_C);
- }
- set_flag_n((BYTE)temp_word);
- set_flag_z((BYTE)temp_word);
- set_flag_v(Registers[REGISTER_A], -data, (BYTE)temp_word);
- Registers[REGISTER_A] = (BYTE)temp_word;
- break;
- case 0x84: // CPI #
- data = fetch();
- temp_word = (WORD)Registers[REGISTER_A] - (WORD)data;
- if ((Flags & FLAG_C) != 0)
- {
- temp_word++;
- }
- if (temp_word >= 0x100)
- {
- Flags = Flags | FLAG_C; // set carry flag
- }
- else
- {
- Flags = Flags & (0xFF - FLAG_C);
- }
- set_flag_n((BYTE)temp_word);
- set_flag_z((BYTE)temp_word);
- set_flag_v(Registers[REGISTER_A], -data, (BYTE)temp_word);
- break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement