diff options
author | Scott Stone <tafoid@users.noreply.github.com> | 2013-08-09 19:15:08 +0000 |
---|---|---|
committer | Scott Stone <tafoid@users.noreply.github.com> | 2013-08-09 19:15:08 +0000 |
commit | bcdcf04966a66e4ce2c090c02b14df146b818734 (patch) | |
tree | 465601c02482498d1c570418c1c67991c11b6d3a /src/mess/drivers/rainbow.c | |
parent | 8f09c447d2a7704b5e02886f09b0a87cdb98f009 (diff) |
(MESS) rainbow.c: [Bavarese]
- Added 4 DIP switches (W13, W14, W15 and W18) present on the DEC-Rainbow 100-B board. W18 not wired to DSR yet.
Diffstat (limited to 'src/mess/drivers/rainbow.c')
-rw-r--r-- | src/mess/drivers/rainbow.c | 145 |
1 files changed, 104 insertions, 41 deletions
diff --git a/src/mess/drivers/rainbow.c b/src/mess/drivers/rainbow.c index 744a49efad9..fa9a5e40549 100644 --- a/src/mess/drivers/rainbow.c +++ b/src/mess/drivers/rainbow.c @@ -8,48 +8,48 @@ Meaning of Diagnostics LEDs (from PC100ESV1.PDF found, e.g., on ftp://ftp.update.uu.se/pub/rainbow/doc/rainbow-docs/ - Internal Diagnostic Messages - Msg Message Lights Display - No. * = on o = off - - = on or off - 1 2 3 4 5 6 7 + Internal Diagnostic Messages F + Msg Message Lights Display A + No. * = on o = off T + - = on or off A + 1 2 3 4 5 6 7 L -------------------------------------------------------------- - 1 Main Board (Video) o * * o * o * - 2 Main Board* (unsolicited interrupt) * * * * o * o - 3 Drive A or B (index) o o * o o * * - 4 Drive A or B (motor) * * o o o * * - 5 Drive A or B (seek) o * o o o * * - 6 Drive A or B (read) * o o o o * * - 7 Drive A or B (restore) o * * o o * * - 8 Drive A or B (step) * o * o o * * - 9 System Load incomplete+ (System Load) o o o o o o o - 10 Main Board (video, vfr) * * * o * o * - 11 System Load incomplete+ (Boot Load) o o o o o o o - 12 Drive A or B (not ready) o o o o o * * - 13 Keyboard * * o * o * o - 14 Main Board (nvm data) * * * * o * * + 1 Main Board (Video) o * * o * o * Yes + 2 Main Board* (unsolicited interrupt) * * * * o * o Yes + 3 Drive A or B (index) o o * o o * * + 4 Drive A or B (motor) * * o o o * * + 5 Drive A or B (seek) o * o o o * * + 6 Drive A or B (read) * o o o o * * + 7 Drive A or B (restore) o * * o o * * + 8 Drive A or B (step) * o * o o * * + 9 System Load incomplete+ (System Load) o o o o o o o + 10 Main Board (video, vfr) * * * o * o * Yes + 11 System Load incomplete+ (Boot Load) o o o o o o o + 12 Drive A or B (not ready) o o o o o * * + 13 Keyboard * * o * o * o Yes + 14 Main Board (nvm data) * * * * o * * 15 (no msg. 15 in that table) - 16 Interrupts off* * * * o o o o - 17 Main Board (video RAM) * * * o * * o - 18 Main Board (Z80 crc) * * * * o o * - 19 Main Board RAM (0-64K) - - - * * o * - 20 Main Board (unsolicited int., Z80) * * * * o o o * - 21 Drive Not Ready+ o o o o o o o - 22 Remove Card or Diskette o * * o o o * - 23 Non-System Diskette+ o o o o o o o - 24 new memory size = nnnK o o o o o o o - 25 Set Up Defaults stored o o o o o o o - 26 Main Board (RAM arbitration) * * * o * o o - 27 Main Board (RAM option) - - - * * o o - 28 RX50 controller board * * * o o * * - 29 Main Board* (Z80 response) * * * * o o o - 30 Main Board (ROM crc, ROM 0) * * * * * * * - 31 Main Board (ROM crc, ROM 1) * * * * * * o - - Main Board (ROM crc, ROM 2) * * * o * * * - 33 Main Board (contention) o o o o o * o - 40 Main Board (printer port) * o * * o * o - 50 Main Board (keyboard port) o o * * o * o - 60 Main Board (comm port) o * * * o * o + 16 Interrupts off* * * * o o o o Cond. + 17 Main Board (video RAM) * * * o * * o Yes + 18 Main Board (Z80 crc) * * * * o o * Yes + 19 Main Board RAM (0-64K) - - - * * o * Yes + 20 Main Board (unsolicited int., Z80) * * * o o o * Yes + 21 Drive Not Ready+ o o o o o o o + 22 Remove Card or Diskette o * * o o o * + 23 Non-System Diskette+ o o o o o o o + 24 new memory size = nnnK o o o o o o o + 25 Set Up Defaults stored o o o o o o o + 26 Main Board (RAM arbitration) * * * o * o o Yes + 27 Main Board (RAM option) - - - * * o o + 28 RX50 controller board * * * o o * * + 29 Main Board* (Z80 response) * * * * o o o + 30 Main Board (ROM crc, ROM 0) * * * * * * * Yes + 31 Main Board (ROM crc, ROM 1) * * * * * * o Yes + - Main Board (ROM crc, ROM 2) * * * o * * * Yes + 33 Main Board (contention) o o o o o * o Yes + 40 Main Board (printer port) * o * * o * o + 50 Main Board (keyboard port) o o * * o * o Yes + 60 Main Board (comm port) o * * * o * o -------------------------------------------------------------- * These errors can occur at any time because the circuits @@ -57,6 +57,40 @@ + These messages may occur during power-up if auto boot is selected +PCB layout +---------- + +DEC-100 model B + +PCB # 5416206 / 5016205-01C1: + + DIAGNOSTIC- +|----------- LED --|VIDEO|-|PRINTER|-|SERIAL|----| +| 2 x 64 K | +| R A M NEC D7201C |P| [??]| +| |O| | +| 23-020e5-00 INTEL 8088 |W| | +| |E| | +| 23-022e5-00 |R| | +| -BOOT EPROM | +| | +| INTEL 8251A ZILOG Z 80 | +| [W18 ??] | +| A 4x 74 LS 244 | +| M S [W15] | +| 9 - DEC_011C 74 LS 245 | +| 1 R [W14] | +| 2 A [W13] | +| 8 M CHARGEN.- | +| ROM (4K) | +|------------PCB# 5416206 / 5016205-01C1---------| +NOTES +[??] indicates an untested jumper or 2-pin connector + +W18 pulls DSR to ground and affects 8251A - port $11 (bit 7). +W18 jumper location is unverified. There is no code to pull DSR yet! + +W13 - W15 affect diagnostic read register (port $0a) ****************************************************************************/ #include "emu.h" @@ -73,6 +107,11 @@ class rainbow_state : public driver_device public: rainbow_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), + m_inp1(*this, "W13"), + m_inp2(*this, "W14"), + m_inp3(*this, "W15"), + m_inp4(*this, "W18"), + m_crtc(*this, "vt100_video"), m_i8088(*this, "maincpu"), m_z80(*this, "subcpu"), @@ -83,6 +122,10 @@ public: m_shared(*this, "sh_ram"), m_maincpu(*this, "maincpu") { } + required_ioport m_inp1; + required_ioport m_inp2; + required_ioport m_inp3; + required_ioport m_inp4; required_device<rainbow_video_device> m_crtc; required_device<cpu_device> m_i8088; @@ -193,6 +236,22 @@ ADDRESS_MAP_END /* Input ports */ static INPUT_PORTS_START( rainbow ) + PORT_START("W13") + PORT_DIPNAME( 0x02, 0x02, "W13") PORT_TOGGLE + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_START("W14") + PORT_DIPNAME( 0x04, 0x04, "W14") PORT_TOGGLE + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_START("W15") + PORT_DIPNAME( 0x08, 0x08, "W15") PORT_TOGGLE + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_START("W18") + PORT_DIPNAME( 0x80, 0x80, "W18") PORT_TOGGLE + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END @@ -329,7 +388,11 @@ WRITE8_MEMBER( rainbow_state::clear_video_interrupt ) READ8_MEMBER( rainbow_state::diagnostic_r ) { - return m_diagnostic | 0x0e; +// printf("%02x DIP value ORed to diagnostic\n", ( m_inp1->read() | m_inp2->read() | m_inp3->read() ) ); + + return m_diagnostic | ( m_inp1->read() | + m_inp2->read() | + m_inp3->read() ); } WRITE8_MEMBER( rainbow_state::diagnostic_w ) |