diff options
Diffstat (limited to 'src/mess/drivers/force68k.c')
-rw-r--r-- | src/mess/drivers/force68k.c | 110 |
1 files changed, 55 insertions, 55 deletions
diff --git a/src/mess/drivers/force68k.c b/src/mess/drivers/force68k.c index 7bbf42b6b70..6a74bc8bc2e 100644 --- a/src/mess/drivers/force68k.c +++ b/src/mess/drivers/force68k.c @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Joakim Larsson Edström +// copyright-holders:Joakim Larsson Edstr??m /*************************************************************************** Force SYS68K CPU-1/CPU-6 VME SBC drivers, initially based on the 68ksbc.c @@ -7,7 +7,7 @@ 13/06/2015 The info found on the links below is for a later revisions of the board I have - but I hope it is somewhat compatible so I can get it up and running at least. + but I hope it is somewhat compatible so I can get it up and running at least. My CPU-1 board has proms from 1983 and no rev markings so probably the original. http://bitsavers.trailing-edge.com/pdf/forceComputers/1988_Force_VMEbus_Products.pdf @@ -27,7 +27,7 @@ OAO 000 - OBF FFF USER EPROMArea 0C0 041 - 0C0 043 ACIA (P3) Host 0C0 080 - 0C0 082 ACIA (P4) Terminal 0C0 101 - 0C0 103 ACIA (P5) Remote device (eg serial printer) -0C0 401 - 0C0 42F RTC +0C0 401 - 0C0 42F RTC OEO 001 - 0E0 035 PI/T (eg centronics printer) OEO 200 - 0E0 2FF FPU OEO 300 - 0E0 300 Reset Off @@ -59,28 +59,28 @@ Off board Sources (other VME boards) 10. The VMEbus --------------- -The implemented VMEbus Interface includes 24 address, 16 data, +The implemented VMEbus Interface includes 24 address, 16 data, 6 address modifier and the asynchronous control signals. -A single level bus arbiter is provided to build multi master -systems. In addition to the bus arbiter, a separate slave bus +A single level bus arbiter is provided to build multi master +systems. In addition to the bus arbiter, a separate slave bus arbitration allows selection of the arbitration level (0-3). -The address modifier range .,Short 110 Access« can be selected -via a jumper for variable system generation. The 7 interrupt -request levels of the VMEbus are fully supported from the -SYS68K1CPU-1 B/D. For multi-processing, each IRQ signal can be +The address modifier range .,Short 110 Access?? can be selected +via a jumper for variable system generation. The 7 interrupt +request levels of the VMEbus are fully supported from the +SYS68K1CPU-1 B/D. For multi-processing, each IRQ signal can be enabled/disabled via a jumper field. -Additionally, the SYS68K1CPU-1 B/D supports the ACFAIL, SYSRESET, +Additionally, the SYS68K1CPU-1 B/D supports the ACFAIL, SYSRESET, SYSFAIL and SYSCLK signal (16 MHz). TODO: - - Finish 2 x ACIA6850, host and remote interface left, terminal works + - Finish 2 x ACIA6850, host and remote interface left, terminal works - Finish 1 x 68230 Motorola, Parallel Interface / Timer - Connect Port B to a Centronics printer interface - Add 1 x Abort Switch - - Add configurable serial connector between ACIA:s and + - Add configurable serial connector between ACIA:s and - Real terminal emulator, ie rs232 "socket" - Debug console - Add VME bus driver @@ -97,9 +97,9 @@ SYSFAIL and SYSCLK signal (16 MHz). #define BAUDGEN_CLOCK XTAL_1_8432MHz /* - The baudrate on the Force68k CPU-1 to CPU-6 is generated by a - Motorola 14411 bitrate generator, the CPU-6 documents matches the circuits - that I could find on the CPU-1 board. Here how I calculated the clock for + The baudrate on the Force68k CPU-1 to CPU-6 is generated by a + Motorola 14411 bitrate generator, the CPU-6 documents matches the circuits + that I could find on the CPU-1 board. Here how I calculated the clock for the factory settings. No need to add selectors until terminal.c supports configurable baudrates. Fortunality CPU-1 was shipped with 9600N8! @@ -107,7 +107,7 @@ SYSFAIL and SYSCLK signal (16 MHz). 3 RS232C interfaces, strap selectable baud rate from 110-9600 or 600-19200 baud - Default Jumper Settings of B7: + Default Jumper Settings of B7: -------------------------------- GND 10 - 11 RSA input on 14411 F1 on 14411 1 - 20 Baud selector of the terminal port @@ -117,7 +117,7 @@ SYSFAIL and SYSCLK signal (16 MHz). The RSB input on the 14411 is kept high always so RSA=0, RSB=1 and a 1.8432MHz crystal generates 153600 on the F1 output pin which by default strapping is connected to all three 6850 acias on the board. These can be strapped separatelly to speedup downloads. - + The selectable outputs from 14411, F1-F16: X16 RSA=0,RSB=1: 153600, 115200, 76800, 57600, 38400, 28800, 19200, 9600, 4800, 3200, 2153.3, 1758.8, 1200, 921600, 1843000 X64 RSA=1,RSB=1: 614400, 460800, 307200, 230400, 153600, 115200, 76800, 57600, 38400, 28800, 19200, 9600, 4800, 921600, 1843000 @@ -133,13 +133,13 @@ class force68k_state : public driver_device public: force68k_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - // m_rtc(*this, "rtc") - m_maincpu(*this, "maincpu"), - m_rtc(*this, "rtc"), - m_pit(*this, "pit"), - m_aciahost(*this, "aciahost"), - m_aciaterm(*this, "aciaterm"), - m_aciaremt(*this, "aciaremt") + // m_rtc(*this, "rtc") + m_maincpu(*this, "maincpu"), + m_rtc(*this, "rtc"), + m_pit(*this, "pit"), + m_aciahost(*this, "aciahost"), + m_aciaterm(*this, "aciaterm"), + m_aciaremt(*this, "aciaremt") { } @@ -162,19 +162,19 @@ private: }; static ADDRESS_MAP_START(force68k_mem, AS_PROGRAM, 16, force68k_state) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x000007) AM_ROM AM_READ(bootvect_r) /* Vectors mapped from System EPROM */ - AM_RANGE(0x000008, 0x01ffff) AM_RAM /* DRAM */ - AM_RANGE(0x080000, 0x09ffff) AM_ROM /* System EPROM Area */ -// AM_RANGE(0x0a0000, 0x0bffff) AM_ROM /* User EPROM Area */ + ADDRESS_MAP_UNMAP_HIGH + AM_RANGE(0x000000, 0x000007) AM_ROM AM_READ(bootvect_r) /* Vectors mapped from System EPROM */ + AM_RANGE(0x000008, 0x01ffff) AM_RAM /* DRAM */ + AM_RANGE(0x080000, 0x09ffff) AM_ROM /* System EPROM Area */ +// AM_RANGE(0x0a0000, 0x0bffff) AM_ROM /* User EPROM Area */ AM_RANGE(0x0c0040, 0x0c0041) AM_DEVREADWRITE8("aciahost", acia6850_device, status_r, control_w, 0x00ff) AM_RANGE(0x0c0042, 0x0c0043) AM_DEVREADWRITE8("aciahost", acia6850_device, data_r, data_w, 0x00ff) AM_RANGE(0x0c0080, 0x0c0081) AM_DEVREADWRITE8("aciaterm", acia6850_device, status_r, control_w, 0xff00) AM_RANGE(0x0c0082, 0x0c0083) AM_DEVREADWRITE8("aciaterm", acia6850_device, data_r, data_w, 0xff00) AM_RANGE(0x0c0100, 0x0c0101) AM_DEVREADWRITE8("aciaremt", acia6850_device, status_r, control_w, 0x00ff) AM_RANGE(0x0c0102, 0x0c0103) AM_DEVREADWRITE8("aciaremt", acia6850_device, data_r, data_w, 0x00ff) - AM_RANGE(0x0c0400, 0x0c042f) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0x00ff) - AM_RANGE(0x0e0000, 0x0e0035) AM_DEVREADWRITE8("pit", pit68230_device, data_r, data_w, 0x00ff) + AM_RANGE(0x0c0400, 0x0c042f) AM_DEVREADWRITE8("rtc", mm58167_device, read, write, 0x00ff) + AM_RANGE(0x0e0000, 0x0e0035) AM_DEVREADWRITE8("pit", pit68230_device, data_r, data_w, 0x00ff) // AM_RANGE(0x0e0200, 0x0e0380) AM_READWRITE(fpu_r, fpu_w) /* optional FPCP 68881 FPU interface */ // AM_RANGE(0x100000, 0xfeffff) /* VMEbus Rev B addresses (24 bits) */ // AM_RANGE(0xff0000, 0xffffff) /* VMEbus Rev B addresses (16 bits) */ @@ -190,39 +190,39 @@ void force68k_state::machine_start() } READ16_MEMBER(force68k_state::bootvect_r) -{ - return m_sysrom[offset]; +{ + return m_sysrom[offset]; } WRITE_LINE_MEMBER(force68k_state::write_aciahost_clock) -{ - m_aciahost->write_txc(state); +{ + m_aciahost->write_txc(state); m_aciahost->write_rxc(state); } WRITE_LINE_MEMBER(force68k_state::write_aciaterm_clock) -{ - m_aciaterm->write_txc(state); +{ + m_aciaterm->write_txc(state); m_aciaterm->write_rxc(state); } WRITE_LINE_MEMBER(force68k_state::write_aciaremt_clock) -{ - m_aciaremt->write_txc(state); +{ + m_aciaremt->write_txc(state); m_aciaremt->write_rxc(state); } static MACHINE_CONFIG_START( fccpu1, force68k_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz / 2) + MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz / 2) MCFG_CPU_PROGRAM_MAP(force68k_mem) - /* P3/Host Port config */ + /* P3/Host Port config */ MCFG_DEVICE_ADD("aciahost", ACIA6850, 0) - MCFG_DEVICE_ADD("aciahost_clock", CLOCK, ACIA_CLOCK) + MCFG_DEVICE_ADD("aciahost_clock", CLOCK, ACIA_CLOCK) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(force68k_state, write_aciahost_clock)) - /* P4/Terminal Port config */ + /* P4/Terminal Port config */ MCFG_DEVICE_ADD("aciaterm", ACIA6850, 0) MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232trm", rs232_port_device, write_txd)) @@ -232,10 +232,10 @@ static MACHINE_CONFIG_START( fccpu1, force68k_state ) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("aciaterm", acia6850_device, write_rxd)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE("aciaterm", acia6850_device, write_cts)) - MCFG_DEVICE_ADD("aciaterm_clock", CLOCK, ACIA_CLOCK) + MCFG_DEVICE_ADD("aciaterm_clock", CLOCK, ACIA_CLOCK) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(force68k_state, write_aciaterm_clock)) - /* P5/Remote Port config */ + /* P5/Remote Port config */ MCFG_DEVICE_ADD("aciaremt", ACIA6850, 0) #define PRINTER 0 @@ -246,16 +246,16 @@ static MACHINE_CONFIG_START( fccpu1, force68k_state ) MCFG_RS232_PORT_ADD("rs232rmt", default_rs232_devices, "printer") MCFG_RS232_RXD_HANDLER(DEVWRITELINE("aciaremt", acia6850_device, write_rxd)) MCFG_RS232_CTS_HANDLER(DEVWRITELINE("aciaremt", acia6850_device, write_cts)) -#endif +#endif - MCFG_DEVICE_ADD("aciaremt_clock", CLOCK, ACIA_CLOCK) + MCFG_DEVICE_ADD("aciaremt_clock", CLOCK, ACIA_CLOCK) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(force68k_state, write_aciaterm_clock)) /* RTC Real Time Clock device */ MCFG_DEVICE_ADD("rtc", MM58167, XTAL_32_768kHz) /* PIT Parallel Interface and Timer device, assuming strapped for on board clock */ - MCFG_DEVICE_ADD("pit", PIT68230, XTAL_16MHz / 2) + MCFG_DEVICE_ADD("pit", PIT68230, XTAL_16MHz / 2) MACHINE_CONFIG_END @@ -291,9 +291,9 @@ MACHINE_CONFIG_END ROM_START( fccpu1 ) ROM_REGION(0x1000000, "maincpu", 0) - ROM_LOAD16_BYTE( "fccpu1V1.0L.j8.bin", 0x080001, 0x2000, CRC(3ac6f08f) SHA1(502f6547b508d8732bd68bbbb2402d8c30fefc3b) ) - ROM_LOAD16_BYTE( "fccpu1V1.0L.j9.bin", 0x080000, 0x2000, CRC(035315fb) SHA1(90dc44d9c25d28428233e6846da6edce2d69e440) ) -/* COMMAND SUMMARY DESCRIPTION (From CPU-1B datasheet, ROMs were dumped + ROM_LOAD16_BYTE( "fccpu1V1.0L.j8.bin", 0x080001, 0x2000, CRC(3ac6f08f) SHA1(502f6547b508d8732bd68bbbb2402d8c30fefc3b) ) + ROM_LOAD16_BYTE( "fccpu1V1.0L.j9.bin", 0x080000, 0x2000, CRC(035315fb) SHA1(90dc44d9c25d28428233e6846da6edce2d69e440) ) +/* COMMAND SUMMARY DESCRIPTION (From CPU-1B datasheet, ROMs were dumped from a CPU-1 board so some features might be missing or different) --------------------------------------------------------------------------- BF <address1> <address2> <data> <CR> Block Fill memory - from addr1 through addr2 with data @@ -309,8 +309,8 @@ ROM_START( fccpu1 ) GT <address> <CR> Exec prog: temporary breakpoint HE<CR> Help; display monitor commands LO [n] [;<options] <CR> Load Object file - MD <address> [<count» <CR> Memory Display - MM <address> [<data» [;<options» <CR> Memory Modify + MD <address> [<count?? <CR> Memory Display + MM <address> [<data?? [;<options?? <CR> Memory Modify MS <address> <data1 > <data2> < ... <CR> Memory Set - starting at addr with data 1. data 2 ... NOBR [<address> ... ] <CR> Remove Breakpoint NOPA <CR> Printer Detach (Centronics on PIT/P2) @@ -318,7 +318,7 @@ ROM_START( fccpu1 ) PA <CR> Printer Attach (Centronics on PIT/P2) PF[n] <CR> Set/display Port Format RM <CR> Register Modify - TM [<exit character» <CR> Transparent Mode + TM [<exit character?? <CR> Transparent Mode TR [<count] <CR> Trace TT <address> <CR> Trace: temporary breakpoint VE [n] [<string] <CR> Verify memory/object file |