special: removed anonymous timer.

This commit is contained in:
Robbbert 2020-10-10 03:15:21 +11:00
parent d822e7ec4a
commit 466b84187a
3 changed files with 11 additions and 20 deletions

View File

@ -14,6 +14,7 @@ Notes:
- Special, specialp, lik, erik: At the first prompt, press Enter for the Monitor. All other keys just beep.
- Specimx: Press Enter to go into a ramdisk File Manager. Press F3 to load a tape (which errors).
If you had loaded a disk, press F6 to boot it.
- Specimx -bios 1 and 2 don't set a colour, so a default has been chosen instead of a black screen.
- Specimx -bios 1 lists a number of programs on the ramdisk, but most of them don't work.
@ -564,6 +565,7 @@ void special_state::specimx(machine_config &config)
m_pit->out_handler<1>().set("custom", FUNC(specimx_sound_device::set_input_ch1));
m_pit->set_clk<2>(2000000);
m_pit->out_handler<2>().set("custom", FUNC(specimx_sound_device::set_input_ch2));
TIMER(config, m_pit_timer).configure_generic(FUNC(special_state::pit_timer));
m_ppi->in_pb_callback().set(FUNC(special_state::specimx_portb_r));
m_ppi->out_pc_callback().set(FUNC(special_state::specimx_portc_w));

View File

@ -22,6 +22,7 @@
#include "formats/smx_dsk.h"
#include "formats/rk_cas.h"
#include "machine/wd_fdc.h"
#include "machine/timer.h"
#include "machine/ram.h"
#include "emupal.h"
@ -50,6 +51,7 @@ public:
, m_bank6(*this, "bank6")
, m_io_keyboard(*this, "LINE%u", 0U)
, m_palette(*this, "palette")
, m_pit_timer(*this, "pit_timer")
{ }
void special(machine_config &config);
@ -61,15 +63,7 @@ public:
void init_erik();
void init_special();
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
private:
enum
{
TIMER_PIT8253_GATES
};
// specimx
void specimx_select_bank(offs_t offset, uint8_t data);
void video_memory_w(offs_t offset, uint8_t data);
@ -96,6 +90,7 @@ private:
void porta_w(uint8_t data);
void portb_w(uint8_t data);
void portc_w(uint8_t data);
TIMER_DEVICE_CALLBACK_MEMBER(pit_timer);
void erik_palette(palette_device &palette) const;
void specimx_palette(palette_device &palette) const;
@ -144,6 +139,7 @@ private:
optional_memory_bank m_bank6;
required_ioport_array<13> m_io_keyboard;
required_device<palette_device> m_palette;
optional_device<timer_device> m_pit_timer; // specimx only
};
#endif // MAME_INCLUDES_SPECIAL_H

View File

@ -113,18 +113,11 @@ void special_state::specimx_portc_w(uint8_t data)
m_dac->write(BIT(data, 5)); //beeper
}
void special_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
TIMER_DEVICE_CALLBACK_MEMBER(special_state::pit_timer)
{
switch (id)
{
case TIMER_PIT8253_GATES:
m_pit->write_gate0(0);
m_pit->write_gate1(0);
m_pit->write_gate2(0);
break;
default:
throw emu_fatalerror("Unknown id in special_state::device_timer");
}
m_pit->write_gate0(0);
m_pit->write_gate1(0);
m_pit->write_gate2(0);
}
@ -325,7 +318,7 @@ void special_state::machine_reset()
{
m_specimx_color = 0xF0; // default for -bios 1/2, since they don't have colour
specimx_set_bank(2, 0); // Initial load ROM disk
timer_set(attotime::zero, TIMER_PIT8253_GATES);
m_pit_timer->adjust(attotime::zero);
}
}