OSDN Git Service

[General] Convert sourcecode's CRLF format: DOS(WINDOWS) to Unix, to apply patches...
[csp-qt/common_source_project-fm7.git] / source / src / vm / mb8877.h
index c9147fd..d083ed1 100644 (file)
-/*\r
-       Skelton for retropc emulator\r
-\r
-       Origin : XM7\r
-       Author : Takeda.Toshiya\r
-       Date   : 2006.12.06 -\r
-\r
-       [ MB8877 / MB8876 ]\r
-*/\r
-\r
-#ifndef _MB8877_H_ \r
-#define _MB8877_H_\r
-\r
-#include "vm.h"\r
-#include "../emu.h"\r
-#include "device.h"\r
-\r
-#define SIG_MB8877_DRIVEREG    0\r
-#define SIG_MB8877_SIDEREG     1\r
-#define SIG_MB8877_MOTOR       2\r
-\r
-class DISK;\r
-\r
-class MB8877 : public DEVICE\r
-{\r
-private:\r
-       // config\r
-       bool ignore_crc;\r
-       \r
-       // output signals\r
-       outputs_t outputs_irq;\r
-       outputs_t outputs_drq;\r
-       \r
-       // drive info\r
-       struct {\r
-               int track;\r
-               int index;\r
-               bool access;\r
-               // timing\r
-               int cur_position;\r
-               int next_trans_position;\r
-               int next_sync_position;\r
-               uint32 prev_clock;\r
-       } fdc[MAX_DRIVE];\r
-       DISK* disk[MAX_DRIVE];\r
-       \r
-       // registor\r
-       uint8 status, status_tmp;\r
-       uint8 cmdreg, cmdreg_tmp;\r
-       uint8 trkreg;\r
-       uint8 secreg;\r
-       uint8 datareg;\r
-       uint8 drvreg;\r
-       uint8 sidereg;\r
-       uint8 cmdtype;\r
-       \r
-       // event\r
-       int register_id[8];\r
-       \r
-       // status\r
-       bool now_search;\r
-       bool now_seek, after_seek;\r
-       int no_command;\r
-       int seektrk;\r
-       bool seekvct;\r
-       bool motor_on;\r
-       bool drive_sel;\r
-       \r
-       // timing\r
-       uint32 prev_drq_clock;\r
-       \r
-       int get_cur_position();\r
-       double get_usec_to_start_trans();\r
-       \r
-       // image handler\r
-       uint8 search_track();\r
-       uint8 search_sector(int trk, int side, int sct, bool compare);\r
-       uint8 search_addr();\r
-       \r
-       // command\r
-       void process_cmd();\r
-       void cmd_restore();\r
-       void cmd_seek();\r
-       void cmd_step();\r
-       void cmd_stepin();\r
-       void cmd_stepout();\r
-       void cmd_readdata();\r
-       void cmd_writedata();\r
-       void cmd_readaddr();\r
-       void cmd_readtrack();\r
-       void cmd_writetrack();\r
-       void cmd_forceint();\r
-       \r
-       // irq/dma\r
-       void set_irq(bool val);\r
-       void set_drq(bool val);\r
-       \r
-public:\r
-       MB8877(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)\r
-       {\r
-               init_output_signals(&outputs_irq);\r
-               init_output_signals(&outputs_drq);\r
-               motor_on = false;\r
-       }\r
-       ~MB8877() {}\r
-       \r
-       // common functions\r
-       void initialize();\r
-       void release();\r
-       void reset();\r
-       void write_io8(uint32 addr, uint32 data);\r
-       uint32 read_io8(uint32 addr);\r
-       void write_dma_io8(uint32 addr, uint32 data);\r
-       uint32 read_dma_io8(uint32 addr);\r
-       void write_signal(int id, uint32 data, uint32 mask);\r
-       uint32 read_signal(int ch);\r
-       void event_callback(int event_id, int err);\r
-       void update_config();\r
-       void save_state(FILEIO* state_fio);\r
-       bool load_state(FILEIO* state_fio);\r
-       \r
-       // unique function\r
-       void set_context_irq(DEVICE* device, int id, uint32 mask)\r
-       {\r
-               register_output_signal(&outputs_irq, device, id, mask);\r
-       }\r
-       void set_context_drq(DEVICE* device, int id, uint32 mask)\r
-       {\r
-               register_output_signal(&outputs_drq, device, id, mask);\r
-       }\r
-       DISK* get_disk_handler(int drv)\r
-       {\r
-               return disk[drv];\r
-       }\r
-       void open_disk(int drv, _TCHAR path[], int offset);\r
-       void close_disk(int drv);\r
-       bool disk_inserted(int drv);\r
-       void set_drive_type(int drv, uint8 type);\r
-       uint8 get_drive_type(int drv);\r
-       void set_drive_rpm(int drv, int rpm);\r
-       void set_drive_mfm(int drv, bool mfm);\r
-       uint8 fdc_status();\r
-       void write_protect_fd(int drive, bool flag) {\r
-         if((drive >= MAX_DRIVE) || (drive < 0)) return;\r
-         disk[drive]->write_protected = flag;\r
-       }\r
-       bool is_write_protect_fd(int drive) {\r
-         if((drive >= MAX_DRIVE) || (drive < 0)) return true; // Protected\r
-         return disk[drive]->write_protected;\r
-       }\r
-};\r
-\r
-#endif\r
+/*
+       Skelton for retropc emulator
+
+       Origin : XM7
+       Author : Takeda.Toshiya
+       Date   : 2006.12.06 -
+
+       [ MB8877 / MB8876 ]
+*/
+
+#ifndef _MB8877_H_ 
+#define _MB8877_H_
+
+#include "vm.h"
+#include "../emu.h"
+#include "device.h"
+
+#define SIG_MB8877_DRIVEREG    0
+#define SIG_MB8877_SIDEREG     1
+#define SIG_MB8877_MOTOR       2
+
+class DISK;
+
+class MB8877 : public DEVICE
+{
+private:
+       // config
+       bool ignore_crc;
+       
+       // output signals
+       outputs_t outputs_irq;
+       outputs_t outputs_drq;
+       
+       // drive info
+       struct {
+               int track;
+               int index;
+               bool access;
+               // timing
+               int cur_position;
+               int next_trans_position;
+               int next_sync_position;
+               uint32 prev_clock;
+       } fdc[MAX_DRIVE];
+       DISK* disk[MAX_DRIVE];
+       
+       // registor
+       uint8 status, status_tmp;
+       uint8 cmdreg, cmdreg_tmp;
+       uint8 trkreg;
+       uint8 secreg;
+       uint8 datareg;
+       uint8 drvreg;
+       uint8 sidereg;
+       uint8 cmdtype;
+       
+       // event
+       int register_id[8];
+       
+       // status
+       bool now_search;
+       bool now_seek, after_seek;
+       int no_command;
+       int seektrk;
+       bool seekvct;
+       bool motor_on;
+       bool drive_sel;
+       
+       // timing
+       uint32 prev_drq_clock;
+       
+       int get_cur_position();
+       double get_usec_to_start_trans();
+       
+       // image handler
+       uint8 search_track();
+       uint8 search_sector(int trk, int side, int sct, bool compare);
+       uint8 search_addr();
+       
+       // command
+       void process_cmd();
+       void cmd_restore();
+       void cmd_seek();
+       void cmd_step();
+       void cmd_stepin();
+       void cmd_stepout();
+       void cmd_readdata();
+       void cmd_writedata();
+       void cmd_readaddr();
+       void cmd_readtrack();
+       void cmd_writetrack();
+       void cmd_forceint();
+       
+       // irq/dma
+       void set_irq(bool val);
+       void set_drq(bool val);
+       
+public:
+       MB8877(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
+       {
+               init_output_signals(&outputs_irq);
+               init_output_signals(&outputs_drq);
+               motor_on = false;
+       }
+       ~MB8877() {}
+       
+       // common functions
+       void initialize();
+       void release();
+       void reset();
+       void write_io8(uint32 addr, uint32 data);
+       uint32 read_io8(uint32 addr);
+       void write_dma_io8(uint32 addr, uint32 data);
+       uint32 read_dma_io8(uint32 addr);
+       void write_signal(int id, uint32 data, uint32 mask);
+       uint32 read_signal(int ch);
+       void event_callback(int event_id, int err);
+       void update_config();
+       void save_state(FILEIO* state_fio);
+       bool load_state(FILEIO* state_fio);
+       
+       // unique function
+       void set_context_irq(DEVICE* device, int id, uint32 mask)
+       {
+               register_output_signal(&outputs_irq, device, id, mask);
+       }
+       void set_context_drq(DEVICE* device, int id, uint32 mask)
+       {
+               register_output_signal(&outputs_drq, device, id, mask);
+       }
+       DISK* get_disk_handler(int drv)
+       {
+               return disk[drv];
+       }
+       void open_disk(int drv, _TCHAR path[], int offset);
+       void close_disk(int drv);
+       bool disk_inserted(int drv);
+       void set_drive_type(int drv, uint8 type);
+       uint8 get_drive_type(int drv);
+       void set_drive_rpm(int drv, int rpm);
+       void set_drive_mfm(int drv, bool mfm);
+       uint8 fdc_status();
+       void write_protect_fd(int drive, bool flag) {
+         if((drive >= MAX_DRIVE) || (drive < 0)) return;
+         disk[drive]->write_protected = flag;
+       }
+       bool is_write_protect_fd(int drive) {
+         if((drive >= MAX_DRIVE) || (drive < 0)) return true; // Protected
+         return disk[drive]->write_protected;
+       }
+};
+
+#endif