Previous 15994 Revisions Next

r15313 Friday 25th May, 2012 at 06:36:20 UTC by Miodrag Milanović
-dm7000: connected terminal keyboard [Lukasz Markowski]

out of log: press Enter on boot to get menu
also it's made 10x slower to get proper response for testing
[src/mess/drivers]dm7000.c
[src/mess/includes]dm7000.h

src/mess/includes/dm7000.h
r15312r15313
2323
2424   DECLARE_WRITE8_MEMBER ( dm7000_scc0_w );
2525   DECLARE_READ8_MEMBER ( dm7000_scc0_r );
26   DECLARE_WRITE8_MEMBER(kbd_put);
2627   UINT8 m_scc0_lcr;
2728   UINT8 m_scc0_lsr;
29   UINT8 m_term_data;
30   
2831
2932   DECLARE_WRITE8_MEMBER ( dm7000_gpio0_w );
3033   DECLARE_READ8_MEMBER ( dm7000_gpio0_r );
r15312r15313
3235   DECLARE_WRITE8_MEMBER ( dm7000_scp0_w );
3336   DECLARE_READ8_MEMBER ( dm7000_scp0_r );
3437
38   DECLARE_WRITE16_MEMBER ( dm7000_enet_w );
39   DECLARE_READ16_MEMBER ( dm7000_enet_r );
40   UINT16         m_enet_regs[32];
41
3542   UINT32         dcr[1024];
3643};
3744
src/mess/drivers/dm7000.c
r15312r15313
3939#include "emu.h"
4040#include "includes/dm7000.h"
4141
42#define VERBOSE_LEVEL ( 0 )
42#define VERBOSE_LEVEL ( 9 )
4343
4444INLINE void ATTR_PRINTF(3,4) verboselog( running_machine &machine, int n_level, const char *s_fmt, ...)
4545{
r15312r15313
5656
5757READ8_MEMBER( dm7000_state::dm7000_iic0_r )
5858{
59   UINT32 data = 0; // dummy
60   verboselog( machine(), 9, "(IIC0) %08X -> %08X (PC %08X)\n", 0x40030000 + offset, data, cpu_get_pc(m_maincpu));
59   UINT8 data = 0; // dummy
60   verboselog( machine(), 9, "(IIC0) %08X -> %08X\n", 0x40030000 + offset, data);
6161   return data;
6262}
6363
6464WRITE8_MEMBER( dm7000_state::dm7000_iic0_w )
6565{
66   verboselog( machine(), 9, "(IIC0) %08X <- %08X (PC %08X)\n", 0x40030000 + offset, data, cpu_get_pc(m_maincpu));
66   verboselog( machine(), 9, "(IIC0) %08X <- %08X\n", 0x40030000 + offset, data);
6767}
6868
6969READ8_MEMBER( dm7000_state::dm7000_iic1_r )
7070{
71   UINT32 data = 0; // dummy
72   verboselog( machine(), 9, "(IIC1) %08X -> %08X (PC %08X)\n", 0x400b0000 + offset, data, cpu_get_pc(m_maincpu));
71   UINT8 data = 0; // dummy
72   verboselog( machine(), 9, "(IIC1) %08X -> %08X\n", 0x400b0000 + offset, data);
7373   return data;
7474}
7575
7676WRITE8_MEMBER( dm7000_state::dm7000_iic1_w )
7777{
78   verboselog( machine(), 9, "(IIC1) %08X <- %08X (PC %08X)\n", 0x400b0000 + offset, data, cpu_get_pc(m_maincpu));
78   verboselog( machine(), 9, "(IIC1) %08X <- %08X\n", 0x400b0000 + offset, data);
7979}
8080
8181READ8_MEMBER( dm7000_state::dm7000_scc0_r )
8282{
83   UINT32 data = 0; // dummy
83   UINT8 data = 0;
8484   switch(offset) {
85      case UART_THR:
86         data = m_term_data;
87         if(m_term_data == 0xd) {
88            m_term_data = 0xa;
89         } else {
90            m_term_data = 0;
91            m_scc0_lsr = 0;
92         }
93         break;
8594      case UART_LSR:
86         data = UART_LSR_THRE | UART_LSR_TEMT;
95         data = UART_LSR_THRE | UART_LSR_TEMT | m_scc0_lsr;
8796         break;
8897   }
89   verboselog( machine(), 9, "(SCC0) %08X -> %08X (PC %08X)\n", 0x40040000 + offset, data, cpu_get_pc(m_maincpu));
98   verboselog( machine(), 9, "(SCC0) %08X -> %08X\n", 0x40040000 + offset, data);
9099   return data;
91100}
92101
r15312r15313
96105      case UART_THR:
97106         if(!(m_scc0_lcr & UART_LCR_DLAB)) {
98107            m_terminal->write(space, 0, data);
108            m_scc0_lsr = 1;
99109         }
100110         break;
101111      case UART_LCR:
102112         m_scc0_lcr = data;
103113         break;
104114   }
105   verboselog( machine(), 9, "(SCC0) %08X <- %08X (PC %08X)\n", 0x40040000 + offset, data, cpu_get_pc(m_maincpu));
115   verboselog( machine(), 9, "(SCC0) %08X <- %08X\n", 0x40040000 + offset, data);
106116}
107117
108118READ8_MEMBER( dm7000_state::dm7000_gpio0_r )
109119{
110   UINT32 data = 0; // dummy
111   verboselog( machine(), 9, "(GPIO0) %08X -> %08X (PC %08X)\n", 0x40060000 + offset, data, cpu_get_pc(m_maincpu));
120   UINT8 data = 0; // dummy
121   verboselog( machine(), 9, "(GPIO0) %08X -> %08X\n", 0x40060000 + offset, data);
112122   return data;
113123}
114124
115125WRITE8_MEMBER( dm7000_state::dm7000_gpio0_w )
116126{
117   verboselog( machine(), 9, "(GPIO0) %08X <- %08X (PC %08X)\n", 0x40060000 + offset, data, cpu_get_pc(m_maincpu));
127   verboselog( machine(), 9, "(GPIO0) %08X <- %08X\n", 0x40060000 + offset, data);
118128}
119129
120130READ8_MEMBER( dm7000_state::dm7000_scp0_r )
121131{
122   UINT32 data = 0; // dummy
132   UINT8 data = 0; // dummy
123133   switch(offset) {
124134      case SCP_STATUS:
125135         data = SCP_STATUS_RXRDY;
126136         break;
127137   }
128   verboselog( machine(), 9, "(SCP0) %08X -> %08X (PC %08X)\n", 0x400c0000 + offset, data, cpu_get_pc(m_maincpu));
138   verboselog( machine(), 9, "(SCP0) %08X -> %08X\n", 0x400c0000 + offset, data);
129139   return data;
130140}
131141
132142WRITE8_MEMBER( dm7000_state::dm7000_scp0_w )
133143{
134   verboselog( machine(), 9, "(SCP0) %08X <- %08X (PC %08X)\n", 0x400c0000 + offset, data, cpu_get_pc(m_maincpu));
144   verboselog( machine(), 9, "(SCP0) %08X <- %08X\n", 0x400c0000 + offset, data);
135145   switch(offset) {
136146      case SCP_TXDATA:
137147         //printf("%02X ", data);
r15312r15313
139149   }
140150}
141151
152READ16_MEMBER( dm7000_state::dm7000_enet_r )
153{
154   UINT16 data;
155   switch (offset) {
156      case 0x01:
157         data = 0x1801;
158         break;
159      case 0x05:
160         data = 0x3330;
161         break;
162      case 0x07:
163         data = 0x3300;
164         break;
165      default:
166         data = m_enet_regs[offset];
167         break;
168   }
169   verboselog( machine(), 9, "(ENET) %08X -> %08X\n", 0x72000600 + (offset), data);
170   return data;
171}
172
173WRITE16_MEMBER( dm7000_state::dm7000_enet_w )
174{
175   verboselog( machine(), 9, "(ENET) %08X <- %08X\n", 0x72000600 + (offset), data);
176   COMBINE_DATA(&m_enet_regs[offset]);
177}
178
142179/*
143180 Memory map for the IBM "Redwood-4" STB03xxx evaluation board.
144181
r15312r15313
198235   AM_RANGE(0x400b0000, 0x400b000f) AM_READWRITE8(dm7000_iic1_r, dm7000_iic1_w, 0xffffffff)
199236   AM_RANGE(0x400c0000, 0x400c0007) AM_READWRITE8(dm7000_scp0_r, dm7000_scp0_w, 0xffffffff)
200237
238   /* ENET - ASIX AX88796 */
239   AM_RANGE(0x72000300, 0x720003ff) AM_READWRITE16(dm7000_enet_r, dm7000_enet_w, 0xffffffff)
240   
201241   AM_RANGE(0x7f800000, 0x7ffdffff) AM_ROM AM_REGION("user2",0)
202242   AM_RANGE(0x7ffe0000, 0x7fffffff) AM_ROM AM_REGION("user1",0)
203243   //AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("user1",0)
r15312r15313
232272static READ32_DEVICE_HANDLER( dcr_r )
233273{
234274   dm7000_state *state = device->machine().driver_data<dm7000_state>();
275   mame_printf_debug("DCR %03X read\n", offset);
235276   if(offset>=1024) {printf("get %04X\n", offset); return 0;} else
236277   switch(offset) {
237278      case DCRSTB045_CMD_STAT:
r15312r15313
244285
245286static WRITE32_DEVICE_HANDLER( dcr_w )
246287{
288   mame_printf_debug("DCR %03X write = %08X\n", offset, data);
247289   dm7000_state *state = device->machine().driver_data<dm7000_state>();
248290   if(offset>=1024) {printf("get %04X\n", offset); } else
249291   state->dcr[offset] = data;
250292}
251293
294WRITE8_MEMBER( dm7000_state::kbd_put )
295{
296   //printf("%02X\n", data);
297   m_term_data = data;
298   m_scc0_lsr = 1;
299}
300
252301static GENERIC_TERMINAL_INTERFACE( terminal_intf )
253302{
254   DEVCB_NULL
303   DEVCB_DRIVER_MEMBER(dm7000_state, kbd_put)
255304};
256305
257306static const powerpc_config ppc405_config =
r15312r15313
263312
264313static MACHINE_CONFIG_START( dm7000, dm7000_state )
265314   /* basic machine hardware */
266   MCFG_CPU_ADD("maincpu",PPC405GP, 252000000) // Should be PPC405D4?
315   MCFG_CPU_ADD("maincpu",PPC405GP, 252000000 / 10) // Should be PPC405D4?
316   // Slowed down 10 times in order to get normal response for now
267317   MCFG_CPU_CONFIG(ppc405_config)
268318   MCFG_CPU_PROGRAM_MAP(dm7000_mem)
269319

Previous 15994 Revisions Next


© 1998-2018 The MESS Team