annotate i8255.h @ 2648:e16f567be36c

Fix lsl/lsr/asl/asr with memory operand
author Michael Pavone <pavone@retrodev.com>
date Sat, 01 Mar 2025 17:23:43 -0800
parents 8cf7cadc17ee
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2521
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
1 #ifndef I8255_H_
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
2 #define I8255_H_
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
3
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
4 #include <stdint.h>
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
5
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
6 typedef struct i8255 i8255;
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
7 typedef void (*i8255_out_update)(i8255 *ppi, uint32_t cycle, uint32_t port, uint8_t data);
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
8 typedef uint8_t (*i8255_in_sample)(i8255 *ppi, uint32_t cycle, uint32_t port);
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
9
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
10 struct i8255 {
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
11 uint8_t latches[4];
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
12 uint8_t control;
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
13 uint8_t portc_write_mask;
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
14 uint8_t portc_out_mask;
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
15 i8255_out_update out_handler;
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
16 i8255_in_sample in_handler;
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
17 void *system;
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
18 };
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
19
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
20 void i8255_init(i8255 *ppi, i8255_out_update out, i8255_in_sample in);
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
21 void i8255_write(uint32_t address, i8255 *ppi, uint8_t value, uint32_t cycle);
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
22 uint8_t i8255_read(uint32_t address, i8255 *ppi, uint32_t cycle);
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
23 void i8255_input_strobe_a(i8255 *ppi, uint8_t value, uint32_t cycle);
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
24 void i8255_input_strobe_b(i8255 *ppi, uint8_t value, uint32_t cycle);
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
25 uint8_t i8255_output_ack_a(i8255 *ppi, uint32_t cycle);
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
26 uint8_t i8255_output_ack_b(i8255 *ppi, uint32_t cycle);
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
27
8cf7cadc17ee Initial SC-3000 support
Michael Pavone <pavone@retrodev.com>
parents:
diff changeset
28 #endif //I8255_H_