mirror of
https://github.com/TomHarte/CLK.git
synced 2025-08-08 14:25:05 +00:00
Stores and returns video mode.
This commit is contained in:
@@ -8,7 +8,6 @@
|
|||||||
|
|
||||||
#include "Video.hpp"
|
#include "Video.hpp"
|
||||||
|
|
||||||
#define NDEBUG
|
|
||||||
#include "../../Outputs/Log.hpp"
|
#include "../../Outputs/Log.hpp"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
@@ -224,14 +223,17 @@ HalfCycles Video::get_next_sequence_point() {
|
|||||||
// MARK: - IO dispatch
|
// MARK: - IO dispatch
|
||||||
|
|
||||||
uint8_t Video::read(int address) {
|
uint8_t Video::read(int address) {
|
||||||
LOG("[Video] read " << (address & 0x3f));
|
LOG("[Video] read " << PADHEX(2) << (address & 0x3f));
|
||||||
address &= 0x3f;
|
address &= 0x3f;
|
||||||
switch(address) {
|
switch(address) {
|
||||||
|
default:
|
||||||
|
break;
|
||||||
case 0x00: return uint8_t(base_address_ >> 16);
|
case 0x00: return uint8_t(base_address_ >> 16);
|
||||||
case 0x01: return uint8_t(base_address_ >> 8);
|
case 0x01: return uint8_t(base_address_ >> 8);
|
||||||
case 0x02: return uint8_t(current_address_ >> 16);
|
case 0x02: return uint8_t(current_address_ >> 16);
|
||||||
case 0x03: return uint8_t(current_address_ >> 8);
|
case 0x03: return uint8_t(current_address_ >> 8);
|
||||||
case 0x04: return uint8_t(current_address_);
|
case 0x04: return uint8_t(current_address_);
|
||||||
|
case 0x30: return video_mode_ | 0xfc;
|
||||||
}
|
}
|
||||||
return 0xff;
|
return 0xff;
|
||||||
}
|
}
|
||||||
@@ -246,6 +248,9 @@ void Video::write(int address, uint16_t value) {
|
|||||||
case 0x00: base_address_ = (base_address_ & 0x00ffff) | (value << 16); break;
|
case 0x00: base_address_ = (base_address_ & 0x00ffff) | (value << 16); break;
|
||||||
case 0x01: base_address_ = (base_address_ & 0xff00ff) | (value << 8); break;
|
case 0x01: base_address_ = (base_address_ & 0xff00ff) | (value << 8); break;
|
||||||
|
|
||||||
|
// Mode.
|
||||||
|
case 0x30: video_mode_ = uint8_t(value); break;
|
||||||
|
|
||||||
// Palette.
|
// Palette.
|
||||||
case 0x20: case 0x21: case 0x22: case 0x23:
|
case 0x20: case 0x21: case 0x22: case 0x23:
|
||||||
case 0x24: case 0x25: case 0x26: case 0x27:
|
case 0x24: case 0x25: case 0x26: case 0x27:
|
||||||
|
@@ -57,6 +57,8 @@ class Video {
|
|||||||
|
|
||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
void output_border(int duration);
|
void output_border(int duration);
|
||||||
|
|
||||||
|
uint8_t video_mode_ = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user