diff options
Diffstat (limited to 'src/devices/machine/corvushd.h')
-rw-r--r-- | src/devices/machine/corvushd.h | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/devices/machine/corvushd.h b/src/devices/machine/corvushd.h index fddffa0e432..9f2d4910599 100644 --- a/src/devices/machine/corvushd.h +++ b/src/devices/machine/corvushd.h @@ -37,17 +37,13 @@ public: protected: // device-level overrides virtual void device_start() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + + TIMER_CALLBACK_MEMBER(process_timeout); + TIMER_CALLBACK_MEMBER(complete_function); private: static constexpr unsigned MAX_COMMAND_SIZE = 4096; // The maximum size of a command packet (the controller only has 5K of RAM...) - enum - { - TIMER_TIMEOUT, - TIMER_COMMAND - }; - // Sector addressing scheme for Rev B/H drives used in various commands (Called a DADR in the docs) struct dadr_t { uint8_t address_msn_and_drive;// Most significant nibble: Most significant nibble of sector address, Least significant nibble: Drive # @@ -56,18 +52,22 @@ private: }; uint8_t m_status; // Controller status byte (DIRECTION + BUSY/READY) + // Prep mode bool m_prep_mode; // Whether the controller is in Prep Mode or not uint8_t m_prep_drv; // If in prep mode, Corvus drive id (1..15) being prepped + // Physical drive info uint8_t m_sectors_per_track; // Number of sectors per track for this drive uint8_t m_tracks_per_cylinder;// Number of tracks per cylinder (heads) uint16_t m_cylinders_per_drive;// Number of cylinders per drive + // Command Processing uint16_t m_offset; // Current offset into raw_data buffer bool m_awaiting_modifier; // We've received a two-byte command and we're waiting for the mod uint16_t m_recv_bytes; // Number of bytes expected to be received from Host uint16_t m_xmit_bytes; // Number of bytes expected to be transmitted to host + // Timing-related values uint16_t m_last_cylinder; // Last cylinder accessed - for calculating seek times uint32_t m_delay; // Delay in microseconds for callback @@ -364,7 +364,7 @@ private: uint8_t corvus_read_firmware_block(uint8_t head, uint8_t sector); uint8_t corvus_write_firmware_block(uint8_t head, uint8_t sector, uint8_t *buffer); uint8_t corvus_format_drive(uint8_t *pattern, uint16_t len); - hard_disk_file *corvus_hdc_file(int id); + harddisk_image_device *corvus_hdc_file(int id); void corvus_process_command_packet(bool local_invalid_command_flag); corvus_cmd_t corvus_cmd[0xf5][0xc1]; // Command sizes and their return sizes |