mirror of
https://github.com/holub/mame
synced 2025-04-20 23:42:22 +03:00
m3: XTAL updates [Steve Hunt]
This commit is contained in:
parent
0a2caa105d
commit
b8eba35dde
@ -17,13 +17,17 @@
|
||||
- M-THREE/345 (SA850, 8" double sided, Winchester 10 MB)
|
||||
|
||||
Hardware:
|
||||
- Z80
|
||||
- MK3880N-IRL (Z80)
|
||||
- 64 KB RAM
|
||||
- Z80 CTC
|
||||
- 2x D8255AC PPI
|
||||
- D8251A
|
||||
- MC6845P CRTC
|
||||
- FD1793 FDC
|
||||
- XTAL X1 21.??? Mhz (unreadable)
|
||||
- XTAL X2 16 MHz
|
||||
- XTAL X3 4.9152 MHz
|
||||
- Keyboard XTAL 6.1?? MHz (assumed to be 6.144 MHz)
|
||||
|
||||
TODO:
|
||||
- Initial PC is currently hacked to f000
|
||||
@ -31,6 +35,7 @@
|
||||
- Printer interface
|
||||
- Buzzer
|
||||
- Map the rest of the keys, verify existing keys
|
||||
- Switch FDC to 1 MHz for 5.25" drives
|
||||
|
||||
Notes:
|
||||
- No offical software available, but a custom version of CP/M
|
||||
@ -576,14 +581,15 @@ static void m3_floppies(device_slot_interface &device)
|
||||
|
||||
void m3_state::m3(machine_config &config)
|
||||
{
|
||||
Z80(config, m_maincpu, 3'000'000); // should be 2.5 MHz, but then it's too slow for the floppy
|
||||
Z80(config, m_maincpu, 4.9152_MHz_XTAL / 2);
|
||||
m_maincpu->set_clock_scale(1.2f); // needs to be overclocked or its too slow for the floppy
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &m3_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &m3_state::io_map);
|
||||
m_maincpu->set_daisy_config(daisy_chain);
|
||||
|
||||
Z80CTC(config, m_ctc, 0); // unknown clock
|
||||
m_ctc->intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
|
||||
m_ctc->set_clk<0>(2'457'600 / 2); // unknown clock. this gives the usart 9600 baud by default
|
||||
m_ctc->set_clk<0>(4.9152_MHz_XTAL / 4);
|
||||
m_ctc->zc_callback<0>().set("usart", FUNC(i8251_device::write_txc));
|
||||
m_ctc->zc_callback<0>().append("usart", FUNC(i8251_device::write_rxc));
|
||||
|
||||
@ -606,14 +612,14 @@ void m3_state::m3(machine_config &config)
|
||||
|
||||
// video hardware
|
||||
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
|
||||
screen.set_raw(10'920'000, 707, 0, 560, 309, 0, 240); // unknown clock, hand-tuned to ~50 fps
|
||||
screen.set_raw(21'840'000 / 2, 707, 0, 560, 309, 0, 240); // unknown clock, hand-tuned to ~50 fps
|
||||
screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update));
|
||||
|
||||
GFXDECODE(config, "gfxdecode", m_palette, chars);
|
||||
|
||||
PALETTE(config, m_palette, palette_device::MONOCHROME);
|
||||
|
||||
mc6845_device &crtc(MC6845(config, "crtc", 10'920'000 / 7)); // unknown clock
|
||||
mc6845_device &crtc(MC6845(config, "crtc", 21'840'000 / 2 / 7)); // unknown clock
|
||||
crtc.set_screen("screen");
|
||||
crtc.set_show_border_area(false);
|
||||
crtc.set_char_width(7);
|
||||
@ -621,14 +627,14 @@ void m3_state::m3(machine_config &config)
|
||||
crtc.out_vsync_callback().set(m_ctc, FUNC(z80ctc_device::trg2));
|
||||
|
||||
// floppy
|
||||
FD1793(config, m_fdc, 2'000'000); // unknown clock
|
||||
FD1793(config, m_fdc, 16_MHz_XTAL / 8);
|
||||
m_fdc->intrq_wr_callback().set(FUNC(m3_state::fdc_intrq_w));
|
||||
m_fdc->drq_wr_callback().set(FUNC(m3_state::fdc_drq_w));
|
||||
FLOPPY_CONNECTOR(config, "fdc:0", m3_floppies, "sa850", floppy_image_device::default_floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, "fdc:1", m3_floppies, "sa850", floppy_image_device::default_floppy_formats);
|
||||
|
||||
// keyboard
|
||||
I8035(config, m_kbdmcu, 3'000'000); // unknown clock
|
||||
I8035(config, m_kbdmcu, 6.144_MHz_XTAL);
|
||||
m_kbdmcu->set_addrmap(AS_PROGRAM, &m3_state::kbd_mem_map);
|
||||
m_kbdmcu->set_addrmap(AS_IO, &m3_state::kbd_io_map);
|
||||
m_kbdmcu->p1_in_cb().set(FUNC(m3_state::kbd_p1_r));
|
||||
|
Loading…
Reference in New Issue
Block a user