mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-06 13:31:55 +00:00
Nudges 6850 towards coherence.
This commit is contained in:
parent
97d44129cb
commit
4b09d7c41d
@ -8,13 +8,31 @@
|
|||||||
|
|
||||||
#include "6850.hpp"
|
#include "6850.hpp"
|
||||||
|
|
||||||
|
#define LOG_PREFIX "[6850] "
|
||||||
|
#include "../../Outputs/Log.hpp"
|
||||||
|
|
||||||
using namespace Motorola::ACIA;
|
using namespace Motorola::ACIA;
|
||||||
|
|
||||||
uint8_t ACIA::read(int address) {
|
uint8_t ACIA::read(int address) {
|
||||||
return 0xff;
|
if(address&1) {
|
||||||
|
LOG("Read from receive register");
|
||||||
|
} else {
|
||||||
|
LOG("Read status");
|
||||||
|
return status_;
|
||||||
|
}
|
||||||
|
return 0x00;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ACIA::write(int address, uint8_t value) {
|
void ACIA::write(int address, uint8_t value) {
|
||||||
|
if(address&1) {
|
||||||
|
LOG("Write to transmit register");
|
||||||
|
} else {
|
||||||
|
if((value&3) == 3) {
|
||||||
|
LOG("Reset");
|
||||||
|
} else {
|
||||||
|
LOG("Write to control register");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ACIA::run_for(HalfCycles) {
|
void ACIA::run_for(HalfCycles) {
|
||||||
|
@ -17,10 +17,29 @@ namespace ACIA {
|
|||||||
|
|
||||||
class ACIA {
|
class ACIA {
|
||||||
public:
|
public:
|
||||||
|
/*!
|
||||||
|
Reads from the ACIA.
|
||||||
|
|
||||||
|
Bit 0 of the address is used as the ACIA's register select line —
|
||||||
|
so even addresses select control/status registers, odd addresses
|
||||||
|
select transmit/receive data registers.
|
||||||
|
*/
|
||||||
uint8_t read(int address);
|
uint8_t read(int address);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Writes to the ACIA.
|
||||||
|
|
||||||
|
Bit 0 of the address is used as the ACIA's register select line —
|
||||||
|
so even addresses select control/status registers, odd addresses
|
||||||
|
select transmit/receive data registers.
|
||||||
|
*/
|
||||||
void write(int address, uint8_t value);
|
void write(int address, uint8_t value);
|
||||||
|
|
||||||
void run_for(HalfCycles);
|
void run_for(HalfCycles);
|
||||||
|
|
||||||
|
private:
|
||||||
|
int divider_ = 1;
|
||||||
|
uint8_t status_ = 0x00;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user