Previous 199869 Revisions Next

r34031 Tuesday 23rd December, 2014 at 13:53:28 UTC by Robbbert
(MESS) excalibur : added centronics printing. Marked as working. (nw)
[src/mess/drivers]excali64.c

trunk/src/mess/drivers/excali64.c
r242542r242543
2525- The schematic shows the audio counter connected to 2MHz, but this produces
2626  sounds that are too high. Connected to 1MHz for now.
2727- Serial
28- Parallel / Centronics
29- Need more software
3028- Pasting can sometimes drop a character.
3129
3230****************************************************************************/
r242542r242543
4240//#include "machine/clock.h"
4341#include "machine/pit8253.h"
4442#include "machine/i8255.h"
45//#include "bus/centronics/ctronics.h"
43#include "bus/centronics/ctronics.h"
4644#include "imagedev/cassette.h"
4745#include "sound/wave.h"
4846#include "sound/speaker.h"
r242542r242543
7068      , m_io_keyboard(*this, "KEY")
7169      , m_dma(*this, "dma")
7270      , m_u12(*this, "u12")
71      , m_centronics(*this, "centronics")
7372      , m_fdc(*this, "fdc")
7473#if NEWFDC
7574      , m_floppy0(*this, "fdc:0")
r242542r242543
9089#if NEWFDC
9190   DECLARE_FLOPPY_FORMATS(floppy_formats);
9291#endif
92   DECLARE_WRITE_LINE_MEMBER(cent_busy_w);
9393   DECLARE_WRITE_LINE_MEMBER(busreq_w);
9494   DECLARE_READ8_MEMBER(memory_read_byte);
9595   DECLARE_WRITE8_MEMBER(memory_write_byte);
r242542r242543
111111   bool m_crtc_vs;
112112   bool m_crtc_hs;
113113   bool m_motor;
114   bool m_centronics_busy;
114115   required_device<cpu_device> m_maincpu;
115116   required_device<cassette_image_device> m_cass;
116117   required_device<mc6845_device> m_crtc;
117118   required_ioport_array<8> m_io_keyboard;
118119   required_device<z80dma_device> m_dma;
119120   required_device<ttl74123_device> m_u12;
121   required_device<centronics_device> m_centronics;
120122#if NEWFDC
121123   required_device<wd2793_t> m_fdc;
122124   required_device<floppy_connector> m_floppy0;
r242542r242543
239241   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7 &") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
240242INPUT_PORTS_END
241243
244WRITE_LINE_MEMBER( excali64_state::cent_busy_w )
245{
246   m_centronics_busy = state;
247}
248
242249#if NEWFDC
243250FLOPPY_FORMATS_MEMBER( excali64_state::floppy_formats )
244251   FLOPPY_EXCALI64_FORMAT
r242542r242543
365372
366373READ8_MEMBER( excali64_state::ppic_r )
367374{
368   UINT8 data = 0xf7;
375   UINT8 data = 0xf4; // READY line must be low to print
376   data |= (UINT8)m_centronics_busy;
369377   data |= (m_cass->input() > 0.1) << 3;
370378   return data;
371379}
r242542r242543
373381WRITE8_MEMBER( excali64_state::ppic_w )
374382{
375383   m_cass->output(BIT(data, 7) ? -1.0 : +1.0);
384   m_centronics->write_strobe(BIT(data, 4));
376385}
377386
378387READ8_MEMBER( excali64_state::port00_r )
r242542r242543
607616   MCFG_DEVICE_ADD("pit", PIT8253, 0)
608617   MCFG_PIT8253_CLK0(XTAL_16MHz / 16) /* Timer 0: tone gen for speaker */
609618   MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("speaker", speaker_sound_device, level_w))
610   MCFG_PIT8253_CLK1(XTAL_16MHz / 8) /* Timer 1: baud rate gen for 8251 */
619   //MCFG_PIT8253_CLK1(XTAL_16MHz / 16) /* Timer 1: baud rate gen for 8251 */
611620   //MCFG_PIT8253_OUT1_HANDLER(WRITELINE(excali64_state, write_uart_clock))
612   //MCFG_PIT8253_CLK2(XTAL_16MHz / 8) /* Timer 2: not used */
621   //MCFG_PIT8253_CLK2(XTAL_16MHz / 16) /* Timer 2: not used */
613622
614623   MCFG_DEVICE_ADD("ppi", I8255A, 0 )
615   //MCFG_I8255_IN_PORTA_CB(READ8(excali64_state, ppia_r))
616   //MCFG_I8255_OUT_PORTA_CB(WRITE8(excali64_state, ppia_w)) // parallel port
617   //MCFG_I8255_IN_PORTB_CB(READ8(excali64_state, ppib_r))
624   MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) // parallel port
618625   MCFG_I8255_OUT_PORTB_CB(WRITE8(excali64_state, ppib_w))
619626   MCFG_I8255_IN_PORTC_CB(READ8(excali64_state, ppic_r))
620627   MCFG_I8255_OUT_PORTC_CB(WRITE8(excali64_state, ppic_w))
r242542r242543
672679   MCFG_TTL74123_B_PIN_VALUE(1)                  /* B pin - driven by port e4 bit 5 */
673680   MCFG_TTL74123_CLEAR_PIN_VALUE(1)                  /* Clear pin - pulled high */
674681   MCFG_TTL74123_OUTPUT_CHANGED_CB(WRITE8(excali64_state, motor_w))
682
683   MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
684   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
685   MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(excali64_state, cent_busy_w))
675686MACHINE_CONFIG_END
676687
677688/* ROM definition */
r242542r242543
696707/* Driver */
697708
698709/*    YEAR  NAME      PARENT  COMPAT   MACHINE    INPUT     CLASS         INIT        COMPANY         FULLNAME        FLAGS */
699COMP( 1984, excali64, 0,      0,       excali64,  excali64, driver_device, 0,  "BGR Computers", "Excalibur 64", GAME_NOT_WORKING )
710COMP( 1984, excali64, 0,      0,       excali64,  excali64, driver_device, 0,  "BGR Computers", "Excalibur 64", 0 )


Previous 199869 Revisions Next


© 1997-2024 The MAME Team