diff options
author | Robbbert <Robbbert@users.noreply.github.com> | 2019-06-13 16:35:33 +1000 |
---|---|---|
committer | Robbbert <Robbbert@users.noreply.github.com> | 2019-06-13 16:35:33 +1000 |
commit | 64e44e0e5b9dbbc08eab48609a7d32c02ccc9e89 (patch) | |
tree | 546b302ad6af37cbb0ee673e48de77fb6994b4c0 | |
parent | 0af7225409bf7b9c672e9786b0ab679af8e209f4 (diff) |
(nw) z9001 : kc87_10/11/20/21 enabled Basic. Type BASIC.
-rw-r--r-- | src/mame/drivers/z9001.cpp | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/src/mame/drivers/z9001.cpp b/src/mame/drivers/z9001.cpp index f6950922c38..d0efb50e363 100644 --- a/src/mame/drivers/z9001.cpp +++ b/src/mame/drivers/z9001.cpp @@ -1,14 +1,19 @@ // license:BSD-3-Clause // copyright-holders:Miodrag Milanovic , Robbbert -/*************************************************************************** +/************************************************************************************* - Robotron Z9001 (KC85/1) +Robotron Z9001 (KC85/1) - 12/05/2009 Skeleton driver. - 13/07/2011 Notes added. You can enter text via terminal input. - Colour and flashing added. +2009-05-12 Skeleton driver. +2011-07-13 Notes added. You can enter text via terminal input. + Colour and flashing added. +2019-06-13 Basic enabled -The only kind of acceptable input is a filename that is in 8.3 format and +All input should be in UPPER case. + +For KC87_10/11/20/21, type BASIC to start Basic. + +The only other kind of acceptable input is a filename that is in 8.3 format and begins with a letter. It will say 'start tape'. You can press ^C here to escape, or any key to continue. @@ -21,11 +26,14 @@ Some other control keys: ToDo: -- cassette in -- proper keyboard +- cassette in - interrupt-driven via PIO1 + via astb should cause interrupt but nothing happens. +- proper keyboard - interrupt-driven via PIO2 + pressing any key should program ctc/2 to a debounce delay and this then causes + another interrupt which reads keyboard and places ascii character at 0x0025. - get rid of temporary code -****************************************************************************/ +**************************************************************************************/ #include "emu.h" #include "cpu/z80/z80.h" @@ -87,6 +95,7 @@ void z9001_state::z9001_mem(address_map &map) map.unmap_value_high(); map(0x0000, 0xe7ff).ram(); map(0xe800, 0xebff).ram().share("colorram"); + map(0xc000, 0xe7ff).rom(); map(0xec00, 0xefff).ram().share("videoram"); map(0xf000, 0xffff).rom(); } @@ -95,9 +104,9 @@ void z9001_state::z9001_io(address_map &map) { map.unmap_value_high(); map.global_mask(0xff); - map(0x80, 0x83).mirror(4).rw("z80ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); - map(0x88, 0x8B).mirror(4).rw("z80pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); - map(0x90, 0x93).mirror(4).rw("z80pio2", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x80, 0x83).mirror(4).rw("ctc", FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); + map(0x88, 0x8B).mirror(4).rw("pio1", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); + map(0x90, 0x93).mirror(4).rw("pio2", FUNC(z80pio_device::read), FUNC(z80pio_device::write)); } /* Input ports */ @@ -106,9 +115,9 @@ INPUT_PORTS_END static const z80_daisy_config z9001_daisy_chain[] = { - { "z80pio2" }, - { "z80pio1" }, - { "z80ctc" }, + { "pio2" }, + { "pio1" }, + { "ctc" }, { nullptr } }; @@ -236,17 +245,17 @@ void z9001_state::z9001(machine_config &config) keyboard.set_keyboard_callback(FUNC(z9001_state::kbd_put)); TIMER(config, "z9001_timer").configure_periodic(FUNC(z9001_state::timer_callback), attotime::from_msec(10)); - z80pio_device& pio1(Z80PIO(config, "z80pio1", XTAL(9'830'400) / 4)); + z80pio_device& pio1(Z80PIO(config, "pio1", XTAL(9'830'400) / 4)); pio1.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); pio1.out_pa_callback().set(FUNC(z9001_state::port88_w)); - z80pio_device& pio2(Z80PIO(config, "z80pio2", XTAL(9'830'400) / 4)); // keyboard PIO + z80pio_device& pio2(Z80PIO(config, "pio2", XTAL(9'830'400) / 4)); // keyboard PIO pio2.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - z80ctc_device& ctc(Z80CTC(config, "z80ctc", XTAL(9'830'400) / 4)); + z80ctc_device& ctc(Z80CTC(config, "ctc", XTAL(9'830'400) / 4)); ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); ctc.zc_callback<0>().set(FUNC(z9001_state::cass_w)); - ctc.zc_callback<2>().set("z80ctc", FUNC(z80ctc_device::trg3)); + ctc.zc_callback<2>().set("ctc", FUNC(z80ctc_device::trg3)); CASSETTE(config, m_cass); } |