#ifndef I8085_H #define I8085_H #include #include #include typedef uint8_t u8; typedef int8_t s8; typedef uint16_t u16; typedef int16_t s16; typedef struct i8085 i8085; struct i8085 { u16 pc,sp; // program counter, stack pointer u8 a,b,c,d,e,h,l; // registers bool sf,zf,hf,pf,cf,iff; // flags: sign,zero,half-carry,parity,carry,interrupt flip-flop // 8085 Hardware bool sid,p75,p65,p55,ie; bool sod,sde,r75,mse; bool m75,m65,m55; unsigned long cyc; // cycle count bool halted; bool interrupt_pending; u8 interrupt_vector; // Not multi-byte! u8 interrupt_delay; // memory + io interface u8 (*read_byte)(i8085*, u16); void (*write_byte)(i8085*, u16, u8); u8 (*port_in)(i8085*, u8); void (*port_out)(i8085*, u8, u8); }; void i8085_init(i8085* cpu); void i8085_step(i8085* cpu); void i8085_interrupt(i8085* cpu, u8 opcode); void i8085_restart(i8085* cpu,u8 RST); bool i8085_serial(i8085* cpu,bool SID); // Serial I/O void i8085_debug_output(i8085* cpu); #endif // I8085_H