diff options
Diffstat (limited to 'src/devices/machine/applefdc.h')
-rw-r--r-- | src/devices/machine/applefdc.h | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/src/devices/machine/applefdc.h b/src/devices/machine/applefdc.h deleted file mode 100644 index afdf13de0d8..00000000000 --- a/src/devices/machine/applefdc.h +++ /dev/null @@ -1,156 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Nathan Woods, Raphael Nabet, R. Belmont -/********************************************************************* - - applefdc.h - - Implementation of various Apple Floppy Disk Controllers, including - the classic Apple controller and the IWM (Integrated Woz Machine) - chip - - Nate Woods - Raphael Nabet - R. Belmont - -*********************************************************************/ - -#ifndef MAME_MACHINE_APPLEFDC_H -#define MAME_MACHINE_APPLEFDC_H - -#pragma once - - - -/*************************************************************************** - CONSTANTS -***************************************************************************/ - -#define APPLEFDC_PH0 0x01 -#define APPLEFDC_PH1 0x02 -#define APPLEFDC_PH2 0x04 -#define APPLEFDC_PH3 0x08 - -DECLARE_DEVICE_TYPE(APPLEFDC, applefdc_device) -DECLARE_DEVICE_TYPE(IWM, iwm_device) - - - -/*************************************************************************** - INTERFACE -***************************************************************************/ - -struct applefdc_interface -{ - void (*set_lines)(device_t *device, uint8_t lines); - void (*set_enable_lines)(device_t *device, int enable_mask); - - uint8_t (*read_data)(device_t *device); - void (*write_data)(device_t *device, uint8_t data); - int (*read_status)(device_t *device); -}; - - - -/*************************************************************************** - BASE DEVICE -***************************************************************************/ - -class applefdc_base_device : public device_t -{ -public: - // configuration helpers - void set_config(const applefdc_interface *intrf) { m_interface = intrf; } - - // read/write handlers - virtual uint8_t read(uint8_t offset); - virtual void write(uint8_t offset, uint8_t data); - - // read/write handlers overloads - DECLARE_READ8_MEMBER( bus_r ) { return read(uint8_t(offset)); } - DECLARE_WRITE8_MEMBER( bus_w ) { write(uint8_t(offset), data); } - - // accessor - uint8_t get_lines(); - - virtual void device_reset() override; - -protected: - enum applefdc_t - { - APPLEFDC_APPLE2, /* classic Apple II disk controller (pre-IWM) */ - APPLEFDC_IWM, /* Integrated Woz Machine */ - APPLEFDC_SWIM /* Sander/Woz Integrated Machine */ - }; - - // constructor - applefdc_base_device(applefdc_t fdc_type, const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - - // device-level overrides - virtual void device_start() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - - // other protecteds - virtual void iwm_modereg_w(uint8_t data); - -private: - // data that is constant for the lifetime of the emulation - emu_timer * m_motor_timer; - applefdc_t m_type; - const applefdc_interface *m_interface; - - // data that changes at emulation time - uint8_t m_write_byte; - uint8_t m_lines; /* flags from IWM_MOTOR - IWM_Q7 */ - uint8_t m_mode; /* 0-31; see above */ - uint8_t m_handshake_hack; /* not sure what this is for */ - - // functions - const applefdc_interface *get_interface(); - int iwm_enable2(); - uint8_t iwm_readenable2handshake(); - uint8_t statusreg_r(); - uint8_t read_reg(int lines); - void write_reg(uint8_t data); - void turn_motor_onoff(bool status); - void iwm_access(int offset); -}; - - - -/*************************************************************************** - APPLE FDC - Used on Apple II -***************************************************************************/ - -class applefdc_device : public applefdc_base_device -{ -public: - applefdc_device(const machine_config &mconfig, const char *tag, device_t *owner, const applefdc_interface *intrf) - : applefdc_device(mconfig, tag, owner, (uint32_t)0) - { - set_config(intrf); - } - - applefdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); -}; - - - -/*************************************************************************** - IWM - Used on early Macs -***************************************************************************/ - -class iwm_device : public applefdc_base_device -{ -public: - iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, const applefdc_interface *intrf) - : iwm_device(mconfig, tag, owner, (uint32_t)0) - { - set_config(intrf); - } - - iwm_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - static constexpr feature_type imperfect_features() { return feature::DISK; } -}; - -#endif // MAME_MACHINE_APPLEFDC_H |