summary refs log tree commit diff
path: root/src/6522.h
blob: 5582ba35d3ef1ded8b8e799baca4b14a85e8c84f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef MOS6522_H
#define MOS6522_H

#include <stdint.h>
#include <stdbool.h>

typedef struct via_s {
	uint8_t ira;
	uint8_t irb;
	uint8_t ora;
	uint8_t orb;
	uint8_t ddra;
	uint8_t ddrb;
	uint16_t tca;
	uint16_t tcb;
	uint16_t tla;
	uint16_t tlb;
	uint8_t acr;
	uint8_t pcr;
	uint8_t ifr;
	uint8_t ier;
	uint8_t latch_a;
	uint8_t latch_b;

	bool tav;
	bool tbv;
} via_t;

extern void via_pa_read(via_t *via, uint8_t cycle);
extern void via_pb_read(via_t *via, uint8_t cycle);
extern void via_pa_write(via_t *via, uint8_t cycle);
extern void via_pb_write(via_t *via, uint8_t cycle);

void via_init(via_t *via);
void via_read(via_t *via, uint8_t addr, uint8_t *v, uint8_t cycle);
void via_write(via_t *via, uint8_t addr, uint8_t v, uint8_t cycle);
void via_cycle(via_t *via, uint8_t cycles);
bool via_irq(via_t *via);

#endif