summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2022-04-16 01:36:53 +0200
committer GitHub <noreply@github.com>2022-04-16 01:36:53 +0200
commite38360692285e7fa0e0574b8b00585536b696949 (patch)
tree70ec36412b3041ea72767045e13f998ea14dbab3 /src/mame/machine
parent6985fb1f9003a393d3cead1b55ea4feab488938a (diff)
pc8801.cpp: major groundwork cleanups (#9533)
* pc80s31k.cpp: minor XTAL cleanup * pc8801.cpp: reduce signature name fns * pc8801.cpp: separate dictionary and CD-ROM later model use into own state machines * pc8801.cpp: clean input ports a bit * pc8801.cpp: bulk printf -> logerror * pc8801.cpp: misc cleanups * pc8801.cpp: more misc cleanups * pc8801.cpp: initial batch of exporting PC8801-31 to a separate device * pc8801_31.cpp: document register map, add machine ID * pc8801.cpp: fix configuration mistake for CPU speed * pc8801.cpp: add base diplocations, massage documentation of ports $30, $31, $40, misc cleanups * pc8801.cpp: fix mouse cursor jump bugs, remove deprecated PORT_RESET usage; pc8801.cpp: rework and extend expansion slot descriptions; * pc8801.cpp: add note about extended FH keyboards * pc8801.cpp: add dip positions for BASIC dips * pc8801_31.cpp: add stub SCSI bus controller * pc8801.cpp: blind fix kanji LV2 hookup * pc8801.cpp: use required_region_ptr for ROM regions, split kanji_lv2 to own one * pc8801.cpp: move a few notes to XML * pc8801_flop.xml: correct Digan no Maseki title * pc8801.cpp: remove unneeded port $33 hookup (should be unmapped on all PC8801 variants) * pc8801.cpp: initial implementation of interrupts using i8214 as base. Fixes at least yojukiko and bishojbg BGMs * pc8801.cpp: add clock calculation for internal DAC1BIT, add reported V1 revision numbers for each romset. * pc8801.cpp: move OPN/OPNA sound chip mounts to internal model types, add stereo mixing * pc8801.cpp: add sound irq pending mechanism, particularly needed by Telenet games * pc8801_flop.xml: update QA notes * pc8801_flop.xml: more misc QA notes * pc8801.cpp: improve irq semantics, connect rxrdy_irq_w signal * pc8801.cpp: fix some irq regressions * pc8801.cpp: make OPNA a bit less louder, QA checkpoint * pc8801.cpp: fix broken link, unmapped I/O documentation * pc8801.cpp: add JMB-X1 map, other minor notes * pc8801_flop.xml: fix metalora title and manufacturer * pc8801.cpp: minor cleanups * pc8801.cpp: start inheriting from base pc8001_base_state, add initial hooks for actual 3301 + i8257 devices * pc8801.cpp: fix port40_r reading mistake * pc8801.cpp: fix 24kHz pixel clock * pc8801.cpp: 3301 irq is tied to VRTC not INT * upd3301.cpp: fix VRTC vblank/display bit timer * pc8801.cpp: fix DMA readback * upd3301.cpp: convert to logmasked * upd3301.cpp: support for no attributes/no special control mode * pc8801.cpp: simplify bitmap 3bpp drawing and add preliminary palette rasters * pc8801.cpp: misc documentation updates * upd3301.cpp: clear bitmap layer on FIFO reset * i8214.cpp: PoC in separating INT ASSERT and CLEAR phases pc8801.cpp: tie acknowledge to INT rather than inside callback. Avoids spurious irq regressions; * upd3301.cpp: handle bitmaps as pure transparent; pc8801.cpp: add BG Pal handling, honor transparency in all bitmap layers; * pc8801.cpp: minor cleanups * pc8801.cpp: better handling of bitmap fills * pc8001.cpp: carry over attribute fetches between lines when 3301 is in color mode * pc8801_flop.xml: update QA, move notes from main driver * pc8801.cpp: implement colorized b&w graphic modes * pc8801.cpp: cleanup obsolete functions * pc8801.cpp: extend a bunch of notes * pc8801.cpp: add boilerplate code for base irq mechanism * pc8801.cpp: add expansion card support, with JMB-X1 (partly addresses #8709), PC-8801-23 and PCG-8100 as PoC examples. * pc8801_exp.h: fix CI clang build * pc8801_31.cpp: SW list hookup New NOT_WORKING software list additions --------------------------------------- pc8801_cdrom.xml: CD Takarabako [r09] * pc8801.cpp: promote some romsets to parent * pc8801.h: reinstate dummy initialization in state machines * pc8801.cpp: save_item to all variables in state machines
Diffstat (limited to 'src/mame/machine')
-rw-r--r--src/mame/machine/pc80s31k.cpp9
-rw-r--r--src/mame/machine/pc80s31k.h4
2 files changed, 8 insertions, 5 deletions
diff --git a/src/mame/machine/pc80s31k.cpp b/src/mame/machine/pc80s31k.cpp
index 7ecafea85a8..383745c3c89 100644
--- a/src/mame/machine/pc80s31k.cpp
+++ b/src/mame/machine/pc80s31k.cpp
@@ -30,6 +30,8 @@
\- It then tries to read at memory [0xc0ff], set the value read in [0xf012];
\- Expects that ROM [0x0000] is not equal to 0xc3;
Bottom line: Is it trying to access some custom HW?
+ - Hookup a bridge for internal BIOSes (later PC8801 models);
+ - Save state support (resuming fails latch hookups here);
===================================================================================================
@@ -255,13 +257,14 @@ IRQ_CALLBACK_MEMBER(pc80s31_device::irq_cb)
void pc80s31_device::device_add_mconfig(machine_config &config)
{
- constexpr XTAL fdc_xtal = XTAL(4'000'000);
- Z80(config, m_fdc_cpu, fdc_xtal);
+ // TODO: confirm clock arrangement
+ constexpr XTAL fdc_xtal = XTAL(8'000'000);
+ Z80(config, m_fdc_cpu, fdc_xtal / 2);
m_fdc_cpu->set_addrmap(AS_PROGRAM, &pc80s31_device::fdc_map);
m_fdc_cpu->set_addrmap(AS_IO, &pc80s31_device::fdc_io);
m_fdc_cpu->set_irq_acknowledge_callback(FUNC(pc80s31_device::irq_cb));
- UPD765A(config, m_fdc, XTAL(4'000'000), true, true);
+ UPD765A(config, m_fdc, fdc_xtal, true, true);
m_fdc->intrq_wr_callback().set_inputline(m_fdc_cpu, INPUT_LINE_IRQ0);
for (auto &floppy : m_floppy)
diff --git a/src/mame/machine/pc80s31k.h b/src/mame/machine/pc80s31k.h
index e1050f60799..4d08610455b 100644
--- a/src/mame/machine/pc80s31k.h
+++ b/src/mame/machine/pc80s31k.h
@@ -44,7 +44,7 @@ protected:
required_device<upd765a_device> m_fdc;
required_device_array<floppy_connector, 2> m_floppy;
- u8 m_irq_vector;
+ u8 m_irq_vector = 0;
private:
required_device<z80_device> m_fdc_cpu;
@@ -61,7 +61,7 @@ private:
u8 terminal_count_r(address_space &space);
void motor_control_w(u8 data);
- emu_timer *m_tc_zero_timer;
+ emu_timer *m_tc_zero_timer = nullptr;
IRQ_CALLBACK_MEMBER(irq_cb);
};