64 lines
1.6 KiB
C
64 lines
1.6 KiB
C
![]() |
#ifndef CPU_H
|
||
|
#define CPU_H
|
||
|
|
||
|
#include "types.h"
|
||
|
|
||
|
extern Byte acc; /* Accumulator */
|
||
|
extern ADDRESS pc; /* Program counter */
|
||
|
|
||
|
extern Byte itimer; /* Internal timer */
|
||
|
extern Byte reg_pnt; /* pointer to register bank */
|
||
|
extern Byte timer_on; /* 0=timer off/1=timer on */
|
||
|
extern Byte count_on; /* 0=count off/1=count on */
|
||
|
|
||
|
extern Byte t_flag; /* Timer flag */
|
||
|
|
||
|
extern Byte psw; /* Processor status word */
|
||
|
extern Byte sp; /* Stack pointer (part of psw) */
|
||
|
|
||
|
extern Byte p1; /* I/O port 1 */
|
||
|
extern Byte p2; /* I/O port 2 */
|
||
|
|
||
|
extern Byte xirq_pend;
|
||
|
extern Byte tirq_pend;
|
||
|
|
||
|
void init_cpu(void);
|
||
|
int64_t cpu_exec(int64_t ncycles);
|
||
|
void ext_IRQ(void);
|
||
|
void tim_IRQ(void);
|
||
|
void make_psw_debug(void);
|
||
|
|
||
|
Byte acc; /* Accumulator */
|
||
|
ADDRESS pc; /* Program counter */
|
||
|
|
||
|
Byte itimer; /* Internal timer */
|
||
|
Byte reg_pnt; /* pointer to register bank */
|
||
|
Byte timer_on; /* 0=timer off/1=timer on */
|
||
|
Byte count_on; /* 0=count off/1=count on */
|
||
|
Byte psw; /* Processor status word */
|
||
|
Byte sp; /* Stack pointer (part of psw) */
|
||
|
|
||
|
Byte p1; /* I/O port 1 */
|
||
|
Byte p2; /* I/O port 2 */
|
||
|
Byte xirq_pend; /* external IRQ pending */
|
||
|
Byte tirq_pend; /* timer IRQ pending */
|
||
|
Byte t_flag; /* Timer flag */
|
||
|
|
||
|
ADDRESS lastpc;
|
||
|
ADDRESS A11; /* PC bit 11 */
|
||
|
ADDRESS A11ff;
|
||
|
Byte bs; /* Register Bank (part of psw) */
|
||
|
Byte f0; /* Flag Bit (part of psw) */
|
||
|
Byte f1; /* Flag Bit 1 */
|
||
|
Byte ac; /* Aux Carry (part of psw) */
|
||
|
Byte cy; /* Carry flag (part of psw) */
|
||
|
Byte xirq_en; /* external IRQ's enabled */
|
||
|
Byte tirq_en; /* Timer IRQ enabled */
|
||
|
Byte irq_ex; /* IRQ executing */
|
||
|
|
||
|
int master_count;
|
||
|
|
||
|
|
||
|
#endif /* CPU_H */
|
||
|
|