diff options
author | 2024-12-08 14:04:29 +0100 | |
---|---|---|
committer | 2024-12-08 14:05:45 +0100 | |
commit | 8dbd36390c8489fa45d5a233e98365fbac5761f2 (patch) | |
tree | dae92f10ce4d6d63c90cd225e5f4473dc8b120b6 /src/devices/video/wd90c26.cpp | |
parent | 70325b7ad679a5051a1a85ba874f769e0b7c0a0f (diff) |
video/pc_vga_paradise.cpp: fetch configuration pins when entering VGA setup mode
* fix macpb180c setting the wrong monitor type on restarts & waking up from sleep mode
Diffstat (limited to 'src/devices/video/wd90c26.cpp')
-rw-r--r-- | src/devices/video/wd90c26.cpp | 64 |
1 files changed, 59 insertions, 5 deletions
diff --git a/src/devices/video/wd90c26.cpp b/src/devices/video/wd90c26.cpp index da18dce61bf..c46bd4b8eb8 100644 --- a/src/devices/video/wd90c26.cpp +++ b/src/devices/video/wd90c26.cpp @@ -14,6 +14,11 @@ TODO: #include "emu.h" #include "wd90c26.h" +#define VERBOSE (LOG_GENERAL) +//#define LOG_OUTPUT_FUNC osd_printf_info +#include "logmacro.h" + + DEFINE_DEVICE_TYPE(WD90C26, wd90c26_vga_device, "wd90c26_vga", "Western Digital WD90C26 VGA Controller") wd90c26_vga_device::wd90c26_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) @@ -33,15 +38,64 @@ wd90c26_vga_device::wd90c26_vga_device(const machine_config &mconfig, const char void wd90c26_vga_device::crtc_map(address_map &map) { wd90c11a_vga_device::crtc_map(map); -// map(0x31, 0x31) PR18 Flat Panel Status -// map(0x32, 0x33) PR19/PR1A Flat Panel Control -// map(0x34, 0x34) PR1B Flat Panel Unlock + // PR18 Flat Panel Status + map(0x31, 0x31).lrw8( + NAME([this] (offs_t offset) { + LOG("PR18 Flat Panel Status R\n"); + return m_pr18_fp_status; + }), + NAME([this] (offs_t offset, u8 data) { + m_pr18_fp_status = data; + LOG("PR18 Flat Panel Status W %02x\n", data); + }) + ); +// PR19 Flat Panel Control I / PR1A Flat Panel Control II + map(0x32, 0x33).lrw8( + NAME([this] (offs_t offset) { + LOG("PR%02X Flat Panel Control %s R\n", offset + 0x19, offset ? "II" : "I"); + return m_fp_control[offset]; + }), + NAME([this] (offs_t offset, u8 data) { + m_fp_control[offset] = data; + LOG("PR%02X Flat Panel Control %s W %02x\n", offset + 0x19, offset ? "II" : "I", data); + }) + ); +// PR1B Flat Panel Unlock + map(0x34, 0x34).lrw8( + NAME([this] (offs_t offset) { + LOG("PR1B Flat Panel Unlock R\n"); + return m_pr1b_fp_unlock; + }), + NAME([this] (offs_t offset, u8 data) { + m_pr1b_fp_unlock = data; + LOG("PR1B Flat Panel Unlock W %02x\n", data); + }) + ); // map(0x35, 0x35) PR30 Mapping RAM Unlock // map(0x37, 0x37) PR41 Vertical Expansion Initial Value // map(0x38, 0x38) PR33 Mapping RAM Address Counter // map(0x39, 0x39) PR34 Mapping RAM Data -// map(0x3a, 0x3a) PR35 Mapping RAM Control and Power-Down -// map(0x3b, 0x3b) PR36 LCD Panel Height Select + // PR35 Mapping RAM Control and Power-Down + map(0x3a, 0x3a).lrw8( + NAME([this] (offs_t offset) { + LOG("PR35 Mapping RAM Control and Power-Down R\n"); + return m_pr35_powerdown; + }), + NAME([this] (offs_t offset, u8 data) { + m_pr35_powerdown = data; + LOG("PR35 Mapping RAM Control and Power-Down W %02x\n", data); + }) + ); + // PR36 LCD Panel Height Select + map(0x3b, 0x3b).lrw8( + NAME([this] (offs_t offset) { + return m_pr36_lcd_height; + }), + NAME([this] (offs_t offset, u8 data) { + m_pr36_lcd_height = data; + LOG("PR36 LCD Panel Height W %02x\n", data); + }) + ); // map(0x3c, 0x3c) PR37 Flat Panel Blinking Control // map(0x3e, 0x3e) PR39 Color LCD Control // map(0x3f, 0x3f) PR44 Power-Down Memory Refresh Control |