10 #define OPCODES_8080_H
17 #define ILLEGAL_OP DEBUG_PRINT("%s\n", "Illegal OP!");
46 switch (reg_identifier)
81 switch (reg_identifier)
104 switch (condition_identifier)
161 if(flags & SIGN_FLAG){
162 cpu->
PSW.
sign = (final_state & 0x80) ? 1:0;
164 if (flags & ZERO_FLAG){
165 cpu->
PSW.
zero = (final_state & 0xFF) == 0 ? 1:0;
167 if (flags & AUX_FLAG){
168 DEBUG_PRINT(
"%s\n",
"AUX Flag is very specific to operation");
171 if (flags & PARITY_FLAG){
174 uint8_t rr = final_state & 0xFF;
182 if (flags & CARRY_FLAG){
183 cpu->
PSW.
carry = (final_state & 0x100) ? 1 : 0;
200 uint8_t xor = (base_val ^ diff) & 0x10;
201 uint8_t summ = (base_val + diff) & 0x10;
218 status |= psw.
carry ? CARRY_FLAG : 0;
219 status |= psw.
aux ? AUX_FLAG : 0;
220 status |= psw.
sign ? SIGN_FLAG : 0;
221 status |= psw.
zero ? ZERO_FLAG : 0;
222 status |= psw.
parity ? PARITY_FLAG : 0;
235 new_status.
carry = status & CARRY_FLAG ? 1 : 0;
236 new_status.
aux = status & AUX_FLAG ? 1 : 0;
237 new_status.
sign = status & SIGN_FLAG ? 1 : 0;
238 new_status.
zero = status & ZERO_FLAG ? 1 : 0;
239 new_status.
parity = status & PARITY_FLAG ? 1 : 0;
252 DECOMPILE_PRINT(base_PC,
"(%x)This Opcode has not been initialized.\n", op_code);
278 uint8_t reg_patt = (0x30 & op_code) >> 4;
281 *target_dest = imm_data;
323 uint8_t reg_patt = (0x38 & op_code) >> 3;
326 *target_dest = imm_data;
371 uint8_t reg_patt = (0x30 & op_code) >> 4;
396 uint8_t dest_reg_patt = (0x38 & op_code) >> 3;
397 uint8_t src_reg_patt = (0x07 & op_code);
400 *dest_reg = *src_reg;
401 DECOMPILE_PRINT(base_PC,
"MOV REGDest(%x), REGSrc(%x)\n", dest_reg_patt, src_reg_patt);
431 uint8_t reg_patt = (0x30 & op_code) >> 4;
448 uint8_t target_reg = (op_code & 0x38) >> 3;
449 uint16_t target_data = *(
ref_byte_reg(cpu, target_reg));
450 uint16_t base_data = target_data;
453 *(
ref_byte_reg(cpu, target_reg)) = (uint8_t)target_data;
455 set_flags(cpu, target_data, SIGN_FLAG | ZERO_FLAG | PARITY_FLAG );
530 uint16_t acc_reg = cpu->
ACC;
531 uint16_t compare_src = *(
ref_byte_reg(cpu, (op_code & 0x07)));
533 uint16_t diff = acc_reg - compare_src;
535 set_flags(cpu, diff, SIGN_FLAG | ZERO_FLAG | PARITY_FLAG | CARRY_FLAG);
550 uint16_t acc_reg = cpu->
ACC;
551 uint16_t compare_src =
mem_read(&cpu->
mem, base_PC+1);
553 uint16_t diff = acc_reg - compare_src;
555 set_flags(cpu, diff, SIGN_FLAG | ZERO_FLAG | PARITY_FLAG | CARRY_FLAG);
572 uint8_t reg_patt = (0x30 & op_code) >> 4;
599 uint8_t reg_patt = (0x30 & op_code) >> 4;
628 uint8_t reg_patt = (0x30 & op_code) >> 4;
630 uint32_t temp = cpu->
HL;
631 temp += *target_dest;
633 cpu->
HL = temp & 0xFFFF;
649 uint16_t temp = cpu->
HL;
666 cpu->OUT_Func(port, cpu->
ACC);
696 uint8_t reg_patt = (0x30 & op_code) >> 4;
720 uint8_t reg_patt = (0x07 & op_code);
723 uint8_t base_val = cpu->
ACC;
724 uint8_t base_target = *target_reg;
725 cpu->
ACC &= (*target_reg);
729 cpu->
PSW.
aux = ((base_val | base_target) & 0x08) ? 1 : 0;
760 uint8_t target_data =
mem_read(&cpu->
mem, base_PC+1);
761 uint8_t base_val = cpu->
ACC;
762 cpu->
ACC &= target_data;
765 cpu->
PSW.
aux = ((base_val | target_data) & 0x08) ? 1 : 0;
794 uint8_t reg_patt = (op_code & 0x38) >> 3;
796 uint16_t base_data = target_data;
801 set_flags(cpu, target_data, SIGN_FLAG | ZERO_FLAG | PARITY_FLAG );
818 uint8_t lsb = 0x1 & cpu->
ACC;
856 uint8_t reg_patt = (op_code & 0x07);
858 uint16_t temp = (*target_reg) ^ cpu->
ACC;
920 uint8_t reg_patt = (op_code & 0x30) >> 4;
937 uint8_t msb = (cpu->
ACC & 0x80) ? 1 : 0;
959 uint8_t msb = (cpu->
ACC & 0x80) ? 1 : 0;
980 uint8_t lsb = cpu->
ACC & 0x01;
1029 uint8_t target_data =
mem_read(&cpu->
mem, base_PC+1);
1030 uint16_t temp = cpu->
ACC;
1031 temp = temp - target_data - cpu->
PSW.
carry;
1052 uint8_t reg_patt = (op_code & 0x07);
1099 uint8_t reg_patt = (op_code & 0x07);
1144 uint8_t reg_patt = (op_code & 0x07);
1145 uint16_t temp = cpu->
ACC;
1168 uint16_t temp = cpu->
ACC;
1191 uint8_t reg_patt = (op_code & 0x07);
1192 uint16_t temp = cpu->
ACC;
1215 uint8_t reg_patt = (op_code & 0x07);
1217 uint16_t temp = (*target_reg) | cpu->
ACC;
1277 uint8_t target_data =
mem_read(&cpu->
mem, base_PC+1);
1278 cpu->
ACC |= target_data;
1299 uint8_t target_data =
mem_read(&cpu->
mem, base_PC+1);
1300 cpu->
ACC ^= target_data;
1358 if((cpu->
ACC & 0xF) > 0x9 || cpu->
PSW.
aux){
1360 if(((cpu->
ACC & 0xF) + 0x06) > 0xF){
1363 if((cpu->
ACC + 6) & 0x100){
1368 if((cpu->
ACC & 0xF0) >> 4 > 0x9 || cpu->
PSW.
carry == 1){
1369 if(((cpu->
ACC >> 4) + 0x06) > 0xF){
1394 uint16_t target_addr = ((op_code & 0x38) >> 3);
1395 cpu->
PC = target_addr * 8;
1419 uint16_t temp = cpu->
HL;
This file simulates and disassembles part of 8080 processor.
condition_flags
different condition checks for JMP, conditional OPS
Definition: cpu_8080.h:48
@ P_check
Definition: cpu_8080.h:55
@ NC_check
Definition: cpu_8080.h:51
@ PO_check
Definition: cpu_8080.h:53
@ NZ_check
Definition: cpu_8080.h:49
@ M_check
Definition: cpu_8080.h:56
@ C_check
Definition: cpu_8080.h:52
@ Z_check
Definition: cpu_8080.h:50
@ PE_check
Definition: cpu_8080.h:54
#define ALL_BUT_AUX_FLAG
All but the aux flag options.
Definition: cpu_8080.h:42
#define UNUSED
Definition: cpu_8080.h:16
#define DECOMPILE_PRINT(...)
Stub for when flag is not passed.
Definition: debug.h:75
#define DEBUG_PRINT(...)
Stub for when flag is not passed.
Definition: debug.h:49
Memory abstraction for 8080 cpu.
void mem_write(v_memory *mem, uint16_t offset, uint8_t val)
Lowest level memory write access abstraction. Typecasts the offset to void* + base to get the actual ...
Definition: memory_8080.c:26
uint16_t short_mem_read(v_memory *mem, uint16_t offset)
Wrapper over memory access primitives to read a byte off the base offset void* + base....
Definition: memory_8080.c:21
void * mem_ref(v_memory *mem, uint16_t offset)
plain reference to the memory location
Definition: memory_8080.c:12
uint8_t mem_read(v_memory *mem, uint16_t offset)
Lowest level memory read access abstraction. Typecasts the offset to void* + base to get the actual p...
Definition: memory_8080.c:16
void short_mem_write(v_memory *mem, uint16_t offset, uint16_t val)
Wrapper over memory access primitives to read a byte off the base offset void* + base....
Definition: memory_8080.c:31
int JMP_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(PC) (byte 3) (byte 2) – Control is transferred to the instruction whose address is specified in byte...
Definition: opcodes_8080.h:296
int RAR_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Rotate right through carry) (An) <– (An+l) ; (CY) <– (AO) ; (A7) <– (CY)
Definition: opcodes_8080.h:979
int ADC_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(Add Register with carry) (A) <– (A) + (r) + (CY) The content of register r and the content of the ca...
Definition: opcodes_8080.h:1098
int STA_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
*((byte 3)(byte 2)) = ACC
Definition: opcodes_8080.h:778
int HLT_WRAP(UNUSED cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
The processor is stopped. The registers and flags are unaffected.
Definition: opcodes_8080.h:414
int MOV_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
All different kinds of move operations:
Definition: opcodes_8080.h:395
int STAX_WRAP(cpu_state *cpu, UNUSED UNUSED uint16_t base_PC, uint8_t op_code)
Store *(RP) <- A.
Definition: opcodes_8080.h:695
int JCon_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
Conditional JMP statements.
Definition: opcodes_8080.h:469
int SPHL_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Exchange stack top with H and L) (L) <--> ((SP)); (H) <--> ((SP) + 1); The content of the L register...
Definition: opcodes_8080.h:1418
int DCR_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(Decrement Register) The content of register r is decremented by one.
Definition: opcodes_8080.h:447
#define ILLEGAL_OP
Definition: opcodes_8080.h:17
program_status_word decompress_PSW(uint8_t status)
Inflate the uint8_t into a program_status_word by using flag_bits as the mapping.
Definition: opcodes_8080.h:233
int XTHL_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Exchange stack top with Hand L) (L) <--> ((SP)) ; (H) <--> ((SP) + 1) ;
Definition: opcodes_8080.h:1236
int ACI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Add immediate with carry) (A) <– (A) + (byte 2) + (CY) The content of the second byte of the instruc...
Definition: opcodes_8080.h:1122
int ORI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(OR Immediate) (A) <– (A) V (byte 2) The content of the second byte of the instruction is inclusive-O...
Definition: opcodes_8080.h:1276
uint8_t compress_PSW(program_status_word psw)
Compress program_status_word into a uint8_t as per flag_bits.
Definition: opcodes_8080.h:216
uint8_t condition_check(cpu_state *cpu, condition_flags condition_identifier)
perform condition check on the cpu register state
Definition: opcodes_8080.h:103
int ANA_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(A) = (A) /\ (r) The content of register r is logically anded with the content of the accumulator....
Definition: opcodes_8080.h:719
uint8_t * ref_byte_reg(cpu_state *cpu, uint8_t reg_identifier)
The bit pattern designating one of the registers A,B,C,D,E,H,L (DDD=destination, SSS=source) 111 -> A...
Definition: opcodes_8080.h:45
int LHLD_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(L) <– ((byte 3)(byte 2)) (H) <– ((byte 3) (byte 2) + 1)
Definition: opcodes_8080.h:743
int CMA_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
Complement accumulator (A) <- (~A)
Definition: opcodes_8080.h:1315
int XRI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Exclusive OR Immediate) (A) <– (A) ^ (byte 2) The content of the second byte of the instruction is e...
Definition: opcodes_8080.h:1298
int SHLD_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(L) --> ((byte 3)(byte 2)) (H) --> ((byte 3) (byte 2) + 1)
Definition: opcodes_8080.h:904
int RCon_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
Conditional version of RET_WRAP
Definition: opcodes_8080.h:512
int DAD_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(Add register pair to Hand L) (H) (L) ..- (H) (L) + (rh) (rl) The content of the register pair rp is ...
Definition: opcodes_8080.h:627
int CPI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
Compare A with(-) (byte 2)
Definition: opcodes_8080.h:549
uint16_t * ref_short_reg(cpu_state *cpu, uint8_t reg_identifier)
The bit pattern designating one of the register pairs B,D,H,SP 00—11 -> B,D,H,SP. This function retur...
Definition: opcodes_8080.h:80
int CMP_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
Comparison operation.
Definition: opcodes_8080.h:529
int STC_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
Set Carry (CY) <- (1)
Definition: opcodes_8080.h:1343
int SUB_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(Subtract Register) (A) <– (A) - (r) The content of register r is subtracted from the content of the ...
Definition: opcodes_8080.h:1143
int INX_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(Increment register pair) (rh) (rl) <– (rh) (rl) + 1 The content of the register pair rp is increment...
Definition: opcodes_8080.h:430
int XCHG_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
Xchanges HL <--> DE.
Definition: opcodes_8080.h:648
int NOP_WRAP(UNUSED cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
Wrapper over No Op.
Definition: opcodes_8080.h:264
int PUSH_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
The content of content register, is moved into the memory whose address is specified by the SP....
Definition: opcodes_8080.h:571
int DAA_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Decimal Adjust Accumulator)
Definition: opcodes_8080.h:1357
int LXI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
Load register pair immediate.
Definition: opcodes_8080.h:277
int ADD_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(Add Register) (A) <– (A) + (r) The content of register r is added to the content of the accumulator....
Definition: opcodes_8080.h:1051
int IN_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
Copies a byte of data from the PORT defined by byte(2) to ACC.
Definition: opcodes_8080.h:680
int DI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
Disable Interrupts.
Definition: opcodes_8080.h:889
int RRC_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Rotate Right) (An) <- (An-1); (A7) <- A0 (Cy) <- (A0)
Definition: opcodes_8080.h:817
int POP_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
The content of the memory location, whose address is specified by the SP is pused into content Reg....
Definition: opcodes_8080.h:598
int(* OP_WRAP)(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
wrapping for all the CPU opcodes for emulation and easy calling.
Definition: opcodes_8080.h:23
int UNDEFINED_OP_WRAP(UNUSED cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
Undefined OPCODE Functor.
Definition: opcodes_8080.h:251
int RST_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(Restart) ((SP) - 1) <– (PCH); ((SP) - 2) <– (PCl); (SP) <– (SP) - 2; (PC) <– 8* (NNN);
Definition: opcodes_8080.h:1390
int XRA_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Exclusive OR Register) (A) = (A) ^ (r)
Definition: opcodes_8080.h:855
int LDAX_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
Load accumulator indirect: The content of the memory location, whose address is in the register pair ...
Definition: opcodes_8080.h:370
int ORA_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(OR Register) (A) <– (A) | (r) The content of register r is inclusive-OR'd with the content of the ac...
Definition: opcodes_8080.h:1214
int DCX_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(reg pair) = (reg pair) - 1
Definition: opcodes_8080.h:919
void aux_flag_set_add(cpu_state *cpu, uint32_t base_val, uint32_t diff)
sets the aux flag for all operations. Must convert all ops to a addition operation (compressed)....
Definition: opcodes_8080.h:199
int CALL_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
The current PC (pointer to next instruction) is move to the top of SP and the SP is decremented to ma...
Definition: opcodes_8080.h:341
int SUI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Subtract immediate) (A) <– (A) - (byte 2) The content of the second byte of the instruction is subtr...
Definition: opcodes_8080.h:1167
int RET_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(Return) (PCl) ((SP)); (PCH) ((SP) + 1); (SP) (SP) + 2; The content of the memory location whose addr...
Definition: opcodes_8080.h:492
int PCHL_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Jump Hand l indirect - move Hand L to PC) (PCH) <– (H) (PCl) <– (l) The content of register H is mov...
Definition: opcodes_8080.h:1257
int RLC_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Rotate left) (An+l) <– (An) ; (AO) <– (A7); (CY) <– (A7)
Definition: opcodes_8080.h:936
instt_8080_op opcode_lookup[0x100]
A jump table indexed by an Intel 8080 instruction opcode, containing:
Definition: opcodes_8080.h:1433
int SBB_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(Subtract Register with borrow) (A) <– (A) - (r) - (CY) The content of register r and the content of ...
Definition: opcodes_8080.h:1190
int ANI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(AND immediate) (A) = (A) & (byte 2)
Definition: opcodes_8080.h:759
int MVI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
Move Immediate.
Definition: opcodes_8080.h:322
int EI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
Enable Interrupts.
Definition: opcodes_8080.h:875
void set_flags(cpu_state *cpu, uint32_t final_state, uint8_t flags)
Set the flags PSW status.
Definition: opcodes_8080.h:160
int CCon_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
Ccondition addr (Condition call) If (CCC), ((SP) -1) (PCH) ((SP) - 2) (PCl) (SP) (SP) - 2 (PC) (byte ...
Definition: opcodes_8080.h:1004
int SBI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Subtract immediate with borrow) (A) <– (A) - (byte 2) - (CY) The contents of the second byte of the ...
Definition: opcodes_8080.h:1028
int RAL_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Rotate left through carry) (An+1) <– (An) ; (CY) <– (A7) ; (AO) <– (CY)
Definition: opcodes_8080.h:958
int OUT_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
Copies a byte of data from ACC to PORT.
Definition: opcodes_8080.h:664
int ADI_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Add Immediate) (A) <– (A) + (byte 2) The content of the second byte of the instruction is added to t...
Definition: opcodes_8080.h:1075
int CMC_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
Complement carry (CY) <- (!CY)
Definition: opcodes_8080.h:1329
int LDA_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, UNUSED uint8_t op_code)
(Load Accumulator direct) (A) = *((byte 3)(byte 2))
Definition: opcodes_8080.h:839
int INR_WRAP(cpu_state *cpu, UNUSED uint16_t base_PC, uint8_t op_code)
(increment Reg) (r) <- (r) + 1
Definition: opcodes_8080.h:793
cpu_state: This structure keeps runtime state of all the registers in the CPU.
Definition: cpu_8080.h:63
uint16_t SP
Definition: cpu_8080.h:88
uint8_t(* IN_Func)(uint8_t)
Definition: cpu_8080.h:96
uint8_t D
Definition: cpu_8080.h:71
uint16_t BC
Definition: cpu_8080.h:76
uint8_t H
Definition: cpu_8080.h:73
uint8_t L
Definition: cpu_8080.h:72
uint8_t E
Definition: cpu_8080.h:70
uint16_t HL
Definition: cpu_8080.h:78
program_status_word PSW
Definition: cpu_8080.h:84
v_memory mem
Definition: cpu_8080.h:102
uint8_t ACC
Definition: cpu_8080.h:83
uint16_t DE
Definition: cpu_8080.h:77
uint8_t intt
Definition: cpu_8080.h:90
uint8_t B
Definition: cpu_8080.h:69
uint16_t PC
Definition: cpu_8080.h:89
uint8_t C
Definition: cpu_8080.h:68
a struct to define the meta data for intel 8080 opcode. Contains the binding to the functor and the c...
Definition: opcodes_8080.h:29
OP_WRAP target_func
Definition: opcodes_8080.h:30
uint8_t size
Definition: opcodes_8080.h:32
uint8_t cycle_count
Definition: opcodes_8080.h:31
program_status_word: An exdended PSW for easy checks and sets of PSW without flagging.
Definition: cpu_8080.h:22
uint8_t aux
Definition: cpu_8080.h:24
uint8_t zero
Definition: cpu_8080.h:26
uint8_t carry
Definition: cpu_8080.h:23
uint8_t sign
Definition: cpu_8080.h:25
uint8_t parity
Definition: cpu_8080.h:27