diff options
Diffstat (limited to 'src/devices/machine/corvushd.h')
-rw-r--r-- | src/devices/machine/corvushd.h | 177 |
1 files changed, 13 insertions, 164 deletions
diff --git a/src/devices/machine/corvushd.h b/src/devices/machine/corvushd.h index 129cbfcf3e9..22a8c4a1f10 100644 --- a/src/devices/machine/corvushd.h +++ b/src/devices/machine/corvushd.h @@ -12,176 +12,23 @@ * ****************************************************************************/ -#ifndef CORVUSHD_H_ -#define CORVUSHD_H_ +#ifndef MAME_MACHINE_CORVUSHD_H +#define MAME_MACHINE_CORVUSHD_H + +#pragma once #include "imagedev/harddriv.h" #include <ctype.h> -// -// Controller Commands -// - -// Read/Write Commands - -#define READ_SECTOR_256 0x02 -#define WRITE_SECTOR_256 0x03 -#define READ_CHUNK_128 0x12 -#define READ_CHUNK_256 0x22 -#define READ_CHUNK_512 0x32 -#define WRITE_CHUNK_128 0x13 -#define WRITE_CHUNK_256 0x23 -#define WRITE_CHUNK_512 0x33 - -// Semaphore Commands - -#define SEMAPHORE_LOCK_CODE 0x0b -#define SEMAPHORE_LOCK_MOD 0x01 -#define SEMAPHORE_UNLOCK_CODE 0x0b -#define SEMAPHORE_UNLOCK_MOD 0x11 -#define SEMAPHORE_INIT_CODE 0x1a -#define SEMAPHORE_INIT_MOD 0x10 -#define SEMAPHORE_STATUS_CODE 0x1a -#define SEMAPHORE_STATUS_MOD 0x41 - -// Pipe Commands - -#define PIPE_READ_CODE 0x1a -#define PIPE_READ_MOD 0x20 -#define PIPE_WRITE_CODE 0x1a -#define PIPE_WRITE_MOD 0x21 -#define PIPE_CLOSE_CODE 0x1a -#define PIPE_CLOSE_MOD 0x40 -#define PIPE_STATUS_CODE 0x1a -#define PIPE_STATUS_MOD 0x41 -#define PIPE_OPEN_WRITE_CODE 0x1b -#define PIPE_OPEN_WRITE_MOD 0x80 -#define PIPE_AREA_INIT_CODE 0x1b -#define PIPE_AREA_INIT_MOD 0xa0 -#define PIPE_OPEN_READ_CODE 0x1b -#define PIPE_OPEN_READ_MOD 0xc0 - -// Active User Table Commands - -#define ADDACTIVE_CODE 0x34 -#define ADDACTIVE_MOD 0x03 -#define DELACTIVEUSR_REVBH_CODE 0x34 -#define DELACTIVEUSR_REVBH_MOD 0x00 -#define DELACTIVENUM_OMNI_CODE 0x34 -#define DELACTIVENUM_OMNI_MOD 0x00 -#define DELACTIVEUSR_OMNI_CODE 0x34 -#define DELACTIVEUSR_OMNI_MOD 0x31 -#define FINDACTIVE_CODE 0x34 -#define FINDACTIVE_MOD 0x05 -#define READTEMPBLOCK 0xc4 -#define WRITETEMPBLOCK 0xb4 - -// Miscellaneous Commands - -#define BOOT 0x14 -#define READ_BOOT_BLOCK 0x44 -#define GET_DRIVE_PARAMETERS 0x10 -#define PARK_HEADS_REVH 0x11 -#define PARK_HEADS_OMNI 0x80 -#define ECHO 0xf4 - -// Put drive in Prep Mode - -#define PREP_MODE_SELECT 0x11 - -// Prep Mode Commands - -#define PREP_RESET_DRIVE 0x00 -#define PREP_FORMAT_DRIVE 0x01 -#define PREP_FILL_DRIVE_OMNI 0x81 -#define PREP_VERIFY 0x07 -#define PREP_READ_FIRMWARE 0x32 -#define PREP_WRITE_FIRMWARE 0x33 - -// -// Controller Status Codes -// - -// Disk status codes - -#define STAT_SUCCESS 0x00 - -#define STAT_HEADER_FAULT 0x00 -#define STAT_SEEK_TIMEOUT 0x01 -#define STAT_SEEK_FAULT 0x02 -#define STAT_SEEK_ERROR 0x03 -#define STAT_HEADER_CRC_ERROR 0x04 -#define STAT_REZERO_FAULT 0x05 -#define STAT_REZERO_TIMEOUT 0x06 -#define STAT_DRIVE_NOT_ONLINE 0x07 -#define STAT_WRITE_FAULT 0x08 -#define STAT_NOT_USED 0x09 -#define STAT_READ_DATA_FAULT 0x0a -#define STAT_DATA_CRC_ERROR 0x0b -#define STAT_SECTOR_LOCATE_ERR 0x0c -#define STAT_WRITE_PROTECTED 0x0d -#define STAT_ILL_SECTOR_ADDRESS 0x0e -#define STAT_ILL_CMD_OP_CODE 0x0f -#define STAT_DRIVE_NOT_ACK 0x10 -#define STAT_ACK_STUCK_ACTIVE 0x11 -#define STAT_TIMEOUT 0x12 -#define STAT_FAULT 0x13 -#define STAT_CRC 0x14 -#define STAT_SEEK 0x15 -#define STAT_VERIFICATION 0x16 -#define STAT_SPEED_ERROR 0x17 -#define STAT_ILL_ADDRESS 0x18 -#define STAT_RW_FAULT_ERROR 0x19 -#define STAT_SERVO_ERROR 0x1a -#define STAT_GUARD_BAND 0x1b -#define STAT_PLO_ERROR 0x1c -#define STAT_RW_UNSAFE 0x1d - -// Disk status modifiers (added to status code) - -#define STAT_RECOVERABLE_ERR 0x20 -#define STAT_VERIFY_ERR 0x40 -#define STAT_FATAL_ERR 0x80 - -// Semaphore status codes - -#define SEM_PRIOR_STATE_NOT_SET 0x00 -#define SEM_PRIOR_STATE_SET 0x80 -#define SEM_TABLE_FULL 0xfd -#define SEM_DISK_ERROR 0xfe - -// Pipe Status codes - -#define PIPE_REQ_SUCCESSFUL 0x00 -#define PIPE_EMPTY_PIPE_READ 0x08 -#define PIPE_NOT_OPEN 0x09 -#define PIPE_WRITE_TO_FULL_PIPE 0x0a -#define PIPE_OPEN_OPEN_PIPE 0x0b -#define PIPE_PIPE_NOT_EXIST 0x0c -#define PIPE_NO_ROOM_FOR_NEW 0x0d -#define PIPE_ILLEGAL_COMMAND 0x0e -#define PIPE_AREA_NOT_INIT 0x0f - -// Pipe State codes - -#define PIPE_OPEN_WRITE_EMPTY 0x01 -#define PIPE_OPEN_READ_EMPTY 0x02 -#define PIPE_NOT_OPEN_FULL 0x80 -#define PIPE_OPEN_WRITE_FULL 0x81 -#define PIPE_OPEN_READ_FULL 0x82 - -// Status Register Bits - -#define CONTROLLER_BUSY 0x80 // Set = Busy, Clear = Ready -#define CONTROLLER_DIRECTION 0x40 // Set = Controller->Host, Clear = Host->Controller - -#define MAX_COMMAND_SIZE 4096 // The maximum size of a command packet (the controller only has 5K of RAM...) - -class corvus_hdc_t : public device_t +class corvus_hdc_device : public device_t { public: + // Status Register Bits + static constexpr uint8_t CONTROLLER_BUSY = 0x80; // Set = Busy, Clear = Ready + static constexpr uint8_t CONTROLLER_DIRECTION = 0x40; // Set = Controller->Host, Clear = Host->Controller + // construction/destruction - corvus_hdc_t(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + corvus_hdc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -193,6 +40,8 @@ protected: virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 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, @@ -526,4 +375,4 @@ private: // device type definition extern const device_type CORVUS_HDC; -#endif /* CORVUSHD_H_ */ +#endif // MAME_MACHINE_CORVUSHD_H |