mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-26 08:49:37 +00:00
Improved comments.
This commit is contained in:
parent
46278ff297
commit
3bdedfd749
@ -18,12 +18,15 @@ class PortHandler {
|
|||||||
uint8_t get_value(int port) { return 0xff; }
|
uint8_t get_value(int port) { return 0xff; }
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: most of the implementation below. Right now it just blindly passes data in all directions,
|
// TODO: Modes 1 and 2.
|
||||||
// ignoring operation mode. But at least it establishes proper ownership and hand-off of decision making.
|
|
||||||
template <class T> class i8255 {
|
template <class T> class i8255 {
|
||||||
public:
|
public:
|
||||||
i8255(T &port_handler) : control_(0), outputs_{0, 0, 0}, port_handler_(port_handler) {}
|
i8255(T &port_handler) : control_(0), outputs_{0, 0, 0}, port_handler_(port_handler) {}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Stores the value @c value to the register at @c address. If this causes a change in 8255 output
|
||||||
|
then the PortHandler will be informed.
|
||||||
|
*/
|
||||||
void set_register(int address, uint8_t value) {
|
void set_register(int address, uint8_t value) {
|
||||||
switch(address & 3) {
|
switch(address & 3) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -53,6 +56,10 @@ template <class T> class i8255 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Obtains the current value for the register at @c address. If this provides a reading
|
||||||
|
of input then the PortHandler will be queried.
|
||||||
|
*/
|
||||||
uint8_t get_register(int address) {
|
uint8_t get_register(int address) {
|
||||||
switch(address & 3) {
|
switch(address & 3) {
|
||||||
case 0: return (control_ & 0x10) ? port_handler_.get_value(0) : outputs_[0];
|
case 0: return (control_ & 0x10) ? port_handler_.get_value(0) : outputs_[0];
|
||||||
|
Loading…
Reference in New Issue
Block a user