Skip to content
54 changes: 54 additions & 0 deletions src/devices/bus/heathzenith/h19/tlb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1797,6 +1797,60 @@ void heath_igc_tlb_device::device_reset()
m_window_address = 0x0000;
}

void heath_igc_tlb_device::sigma_w(u8 offset, u8 data)
{
switch (offset)
{
case 0:
sigma_video_mem_w(data);
break;
case 1:
sigma_io_lo_addr_w(data);
break;
case 2:
sigma_io_hi_addr_w(data);
break;
case 3:
sigma_window_lo_addr_w(data);
break;
case 4:
sigma_window_hi_addr_w(data);
break;
case 5:
sigma_ctrl_w(data);
break;
}
}

u8 heath_igc_tlb_device::sigma_r(u8 offset)
{
u8 val = 0;

switch (offset)
{
case 0:
val = sigma_video_mem_r();
break;
case 1:
// TODO - Low pen address
break;
case 2:
// TODO - High pen address
break;
case 3:
// TODO - Left input device
break;
case 4:
// TODO - Right input device
break;
case 5:
val = sigma_ctrl_r();
break;
}

return val;
}

void heath_igc_tlb_device::sigma_ctrl_w(u8 data)
{
LOGREG("%s: data: %02x\n", FUNCNAME, data);
Expand Down
49 changes: 19 additions & 30 deletions src/devices/bus/heathzenith/h19/tlb.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,8 @@ class device_heath_tlb_card_interface : public device_interface
virtual void cts_in_w(int state) {}

// optional SigmaSet operations
virtual void sigma_ctrl_w(u8 data) {}
virtual u8 sigma_ctrl_r() { return 0x00; }
virtual u8 sigma_video_mem_r() { return 0x00; }
virtual void sigma_video_mem_w(u8 val) {}
virtual void sigma_io_lo_addr_w(u8 val) {}
virtual void sigma_io_hi_addr_w(u8 val) {}
virtual void sigma_window_lo_addr_w(u8 val) {}
virtual void sigma_window_hi_addr_w(u8 val) {}
virtual void sigma_w(u8 offset, u8 data) {}
virtual u8 sigma_r(u8 offset) { return 0x00; }

protected:
device_heath_tlb_card_interface(const machine_config &mconfig, device_t &device);
Expand Down Expand Up @@ -312,17 +306,8 @@ class heath_igc_tlb_device : public heath_tlb_device
public:
heath_igc_tlb_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);

virtual void sigma_ctrl_w(u8 data) override;
virtual u8 sigma_ctrl_r() override;

virtual u8 sigma_video_mem_r() override;
virtual void sigma_video_mem_w(u8 val) override;

virtual void sigma_io_lo_addr_w(u8 val) override;
virtual void sigma_io_hi_addr_w(u8 val) override;

virtual void sigma_window_lo_addr_w(u8 val) override;
virtual void sigma_window_hi_addr_w(u8 val) override;
virtual void sigma_w(u8 offset, u8 data) override;
virtual u8 sigma_r(u8 offset) override;

protected:
heath_igc_tlb_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock = 0);
Expand All @@ -333,6 +318,19 @@ class heath_igc_tlb_device : public heath_tlb_device

virtual MC6845_UPDATE_ROW(crtc_update_row) override;

virtual void sigma_ctrl_w(u8 data);
virtual u8 sigma_ctrl_r();

u8 sigma_video_mem_r();
void sigma_video_mem_w(u8 val);

void sigma_io_lo_addr_w(u8 val);
void sigma_io_hi_addr_w(u8 val);

void sigma_window_lo_addr_w(u8 val);
void sigma_window_hi_addr_w(u8 val);


std::unique_ptr<u8[]> m_p_graphic_ram;

// Control Register
Expand Down Expand Up @@ -447,17 +445,8 @@ class heath_tlb_connector : public device_t,
void reset_out(int data) { m_reset(data); }

// optional SigmaSet IGC operations
u8 sigma_ctrl_r() { return (m_tlb) ? m_tlb->sigma_ctrl_r() : 0x00; }
void sigma_ctrl_w(u8 data) { if (m_tlb) m_tlb->sigma_ctrl_w(data); }

u8 sigma_video_mem_r() { return (m_tlb) ? m_tlb->sigma_video_mem_r() : 0x00; }
void sigma_video_mem_w(u8 val) { if (m_tlb) m_tlb->sigma_video_mem_w(val); }

void sigma_io_lo_addr_w(u8 val) { if (m_tlb) m_tlb->sigma_io_lo_addr_w(val); }
void sigma_io_hi_addr_w(u8 val) { if (m_tlb) m_tlb->sigma_io_hi_addr_w(val); }

void sigma_window_lo_addr_w(u8 val) { if (m_tlb) m_tlb->sigma_window_lo_addr_w(val); }
void sigma_window_hi_addr_w(u8 val) { if (m_tlb) m_tlb->sigma_window_hi_addr_w(val); }
u8 sigma_r(u8 offset) { return (m_tlb) ? m_tlb->sigma_r(offset) : 0x00; }
void sigma_w(u8 offset, u8 data) { if (m_tlb) m_tlb->sigma_w(offset, data); }

protected:
virtual void device_start() override ATTR_COLD;
Expand Down
5 changes: 0 additions & 5 deletions src/devices/bus/heathzenith/h89/cards.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,10 @@
#include "h_88_3.h"
#include "h_88_5.h"
#include "mms77316_fdc.h"
#include "sigmasoft_parallel_port.h"
#include "sigmasoft_sound.h"
#include "we_pullup.h"
#include "z37_fdc.h"

void h89_left_cards(device_slot_interface &device)
{
device.option_add("ss_parallel", H89BUS_SIGMASOFT_PARALLEL);
}

void h89_right_cards(device_slot_interface &device)
{
Expand Down
1 change: 0 additions & 1 deletion src/devices/bus/heathzenith/h89/cards.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@

#pragma once

void h89_left_cards(device_slot_interface &device) ATTR_COLD;
void h89_right_cards(device_slot_interface &device) ATTR_COLD;
void h89_right_cards_mms(device_slot_interface &device) ATTR_COLD;
void h89_right_p506_cards(device_slot_interface &device) ATTR_COLD;
Expand Down
Loading
Loading