blob: 258834131e017dd612343632806f84f393cafcc3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
// license:BSD-3-Clause
// copyright-holders:Nathan Woods
/***************************************************************************
coco12.cpp
TRS-80 Radio Shack Color Computer 1/2 Family
***************************************************************************/
#include "emu.h"
#include "includes/coco12.h"
//-------------------------------------------------
// device_start
//-------------------------------------------------
void coco12_state::device_start()
{
coco_state::device_start();
configure_sam();
}
//-------------------------------------------------
// configure_sam
//-------------------------------------------------
void coco12_state::configure_sam()
{
offs_t ramsize = m_ram->size();
m_sam->space(0).install_ram(0, ramsize - 1, m_ram->pointer());
if (ramsize < 65536)
m_sam->space(0).nop_readwrite(ramsize, 0xffff);
}
//-------------------------------------------------
// horizontal_sync
//-------------------------------------------------
WRITE_LINE_MEMBER( coco12_state::horizontal_sync )
{
pia_0().ca1_w(state);
m_sam->hs_w(state);
}
//-------------------------------------------------
// field_sync
//-------------------------------------------------
WRITE_LINE_MEMBER( coco12_state::field_sync )
{
pia_0().cb1_w(state);
}
//-------------------------------------------------
// sam_read
//-------------------------------------------------
uint8_t coco12_state::sam_read(offs_t offset)
{
uint8_t data = sam().display_read(offset);
m_vdg->as_w(data & 0x80 ? ASSERT_LINE : CLEAR_LINE);
m_vdg->inv_w(data & 0x40 ? ASSERT_LINE : CLEAR_LINE);
return data;
}
//-------------------------------------------------
// pia1_pb_changed
//-------------------------------------------------
void coco12_state::pia1_pb_changed(uint8_t data)
{
/* call inherited function */
coco_state::pia1_pb_changed(data);
m_vdg->css_w(data & 0x08);
m_vdg->intext_w(data & 0x10);
m_vdg->gm0_w(data & 0x10);
m_vdg->gm1_w(data & 0x20);
m_vdg->gm2_w(data & 0x40);
m_vdg->ag_w(data & 0x80);
}
|