summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/ti99/peb/cc_fdc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/ti99/peb/cc_fdc.h')
-rw-r--r--src/devices/bus/ti99/peb/cc_fdc.h91
1 files changed, 44 insertions, 47 deletions
diff --git a/src/devices/bus/ti99/peb/cc_fdc.h b/src/devices/bus/ti99/peb/cc_fdc.h
index 179ba10e0e5..736b8c0ae14 100644
--- a/src/devices/bus/ti99/peb/cc_fdc.h
+++ b/src/devices/bus/ti99/peb/cc_fdc.h
@@ -44,27 +44,26 @@ public:
void crureadz(offs_t offset, uint8_t *value) override;
void cruwrite(offs_t offset, uint8_t data) override;
- DECLARE_WRITE_LINE_MEMBER(clock_in) override;
+ void clock_in(int state) override;
- DECLARE_WRITE_LINE_MEMBER( fdc_irq_w );
- DECLARE_WRITE_LINE_MEMBER( fdc_drq_w );
- DECLARE_WRITE_LINE_MEMBER( fdc_hld_w );
+ void fdc_irq_w(int state);
+ void fdc_drq_w(int state);
+ void fdc_hld_w(int state);
uint8_t tms9901_input(offs_t offset);
- DECLARE_WRITE_LINE_MEMBER( select_dsk );
- DECLARE_WRITE_LINE_MEMBER( side_select );
- DECLARE_WRITE_LINE_MEMBER( motor_w );
- DECLARE_WRITE_LINE_MEMBER( select_card );
- DECLARE_WRITE_LINE_MEMBER( select_bank );
+ void select_dsk(int state);
+ void side_select(int state);
+ void motor_w(int state);
+ void select_card(int state);
+ void select_bank(int state);
protected:
- corcomp_fdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+ corcomp_fdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, const char *dpname, const char *cpname);
- void device_start() override;
- void device_reset() override;
- void connect_drives();
+ virtual void device_start() override;
+ virtual void device_reset() override;
virtual void device_add_mconfig(machine_config &config) override =0;
- ioport_constructor device_input_ports() const override;
+ virtual ioport_constructor device_input_ports() const override;
void common_config(machine_config& config);
@@ -74,8 +73,8 @@ protected:
required_device<wd_fdc_device_base> m_wdc;
// PALs
- ccfdc_dec_pal_device* m_decpal;
- ccfdc_sel_pal_device* m_ctrlpal;
+ required_device<ccfdc_dec_pal_device> m_decpal;
+ required_device<ccfdc_sel_pal_device> m_ctrlpal;
// Lines that are polled by the PAL chips
bool card_selected();
@@ -90,7 +89,7 @@ protected:
void operate_ready_line();
// Link to the attached floppy drives
- floppy_image_device* m_floppy[4];
+ required_device_array<floppy_connector, 4> m_floppy;
// Motor monoflop
required_device<ttl74123_device> m_motormf;
@@ -131,52 +130,56 @@ class corcomp_dcc_device : public corcomp_fdc_device
{
public:
corcomp_dcc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-private:
- void device_add_mconfig(machine_config &config) override;
- void device_config_complete() override;
- const tiny_rom_entry *device_rom_region() const override;
+protected:
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
};
// =========== Decoder PAL circuit ================
class ccfdc_dec_pal_device : public device_t
{
+ friend class corcomp_fdc_device;
public:
- DECLARE_READ_LINE_MEMBER(addresswdc);
- DECLARE_READ_LINE_MEMBER(address4);
- DECLARE_READ_LINE_MEMBER(addressram);
- virtual DECLARE_READ_LINE_MEMBER(address9901);
+ int addresswdc();
+ int address4();
+ int addressram();
+ virtual int address9901();
protected:
ccfdc_dec_pal_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- void device_start() override { };
- void device_config_complete() override;
+ void device_start() override { }
corcomp_fdc_device* m_board;
required_device<tms9901_device> m_tms9901;
+
+ void set_board(corcomp_fdc_device* board) { m_board = board; }
};
// =========== Selector PAL circuit ================
class ccfdc_sel_pal_device : public device_t
{
+ friend class corcomp_fdc_device;
public:
- DECLARE_READ_LINE_MEMBER(selectram);
- virtual DECLARE_READ_LINE_MEMBER(selectwdc);
- virtual DECLARE_READ_LINE_MEMBER(selectdsr);
- virtual DECLARE_READ_LINE_MEMBER(ready_out) =0;
+ int selectram();
+ virtual int selectwdc();
+ virtual int selectdsr();
+ virtual int ready_out() =0;
protected:
ccfdc_sel_pal_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- void device_start() override { };
- virtual void device_config_complete() override =0;
+ virtual void device_start() override { }
corcomp_fdc_device* m_board;
ccfdc_dec_pal_device* m_decpal;
required_device<ttl74123_device> m_motormf;
required_device<tms9901_device> m_tms9901;
required_device<wd_fdc_device_base> m_wdc;
+
+ void set_board(corcomp_fdc_device* board) { m_board = board; }
+ void set_decoder(ccfdc_dec_pal_device* decpal) { m_decpal = decpal; }
};
// =========== Specific decoder PAL circuit of the CCDCC ================
@@ -193,10 +196,7 @@ class ccdcc_palu1_device : public ccfdc_sel_pal_device
{
public:
ccdcc_palu1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- DECLARE_READ_LINE_MEMBER(ready_out) override;
-
-private:
- void device_config_complete() override;
+ int ready_out() override;
};
// ============================================================================
@@ -209,10 +209,10 @@ class corcomp_fdca_device : public corcomp_fdc_device
public:
corcomp_fdca_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+protected:
+ virtual void device_add_mconfig(machine_config &config) override;
+ virtual const tiny_rom_entry *device_rom_region() const override;
private:
- void device_add_mconfig(machine_config &config) override;
- void device_config_complete() override;
- const tiny_rom_entry *device_rom_region() const override;
bool ready_trap_active();
};
@@ -222,7 +222,7 @@ class ccfdc_palu12_device : public ccfdc_dec_pal_device
{
public:
ccfdc_palu12_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- DECLARE_READ_LINE_MEMBER(address9901) override;
+ int address9901() override;
};
// =========== Specific selector PAL circuit of the CCFDC ================
@@ -231,13 +231,10 @@ class ccfdc_palu6_device : public ccfdc_sel_pal_device
{
public:
ccfdc_palu6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- DECLARE_READ_LINE_MEMBER(selectwdc) override;
- DECLARE_READ_LINE_MEMBER(selectdsr) override;
+ int selectwdc() override;
+ int selectdsr() override;
- DECLARE_READ_LINE_MEMBER(ready_out) override;
-
-private:
- void device_config_complete() override;
+ int ready_out() override;
};
} // end namespace bus::ti99::peb