X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=source%2Fsrc%2Fvm%2Ffmr50%2Ffmr50.h;h=bc5a17d7b7e9070112a873217be1e01179d2e67e;hb=2fc1443c0f411167f1b61ff87e13fee36cd5876b;hp=33be9b520ebf330261ec35ba76dd4f7efd4c65a2;hpb=e7d6a50e717e098551d83b40fa261467821b929b;p=csp-qt%2Fcommon_source_project-fm7.git diff --git a/source/src/vm/fmr50/fmr50.h b/source/src/vm/fmr50/fmr50.h index 33be9b520..bc5a17d7b 100644 --- a/source/src/vm/fmr50/fmr50.h +++ b/source/src/vm/fmr50/fmr50.h @@ -55,12 +55,13 @@ #if defined(_FMR60) #define SCREEN_WIDTH 1120 #define SCREEN_HEIGHT 750 +#define WINDOW_HEIGHT_ASPECT 840 #else #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 +#define WINDOW_HEIGHT_ASPECT 480 #endif #define MAX_DRIVE 4 -#define MAX_SCSI 8 #define MAX_MEMCARD 2 #if defined(HAS_I286) #define I86_PSEUDO_BIOS @@ -68,29 +69,43 @@ #define I386_PSEUDO_BIOS #endif #define I8259_MAX_CHIPS 2 -//#define SINGLE_MODE_DMA +#define SINGLE_MODE_DMA #define MB8877_NO_BUSY_AFTER_SEEK #define IO_ADDR_MAX 0x10000 +#define SCSI_HOST_AUTO_ACK // device informations for win32 #define USE_CPU_TYPE 2 -#define USE_FD1 -#define USE_FD2 -#define USE_FD3 -#define USE_FD4 +#define USE_FLOPPY_DISK 4 +#define USE_HARD_DISK 7 #define NOTIFY_KEY_DOWN #define USE_SHIFT_NUMPAD_KEY #define USE_ALT_F10_KEY #define USE_AUTO_KEY 5 #define USE_AUTO_KEY_RELEASE 6 -#define USE_CRT_FILTER -#define USE_ACCESS_LAMP +#define USE_AUTO_KEY_NUMPAD +#define USE_SCREEN_FILTER +#define USE_SOUND_VOLUME 2 #define USE_DEBUGGER #define USE_STATE +#if defined(HAS_I286) +#define USE_CPU_I286 +#else +#define USE_CPU_I386 +#endif #include "../../common.h" #include "../../fileio.h" +#include "../vm_template.h" + +#ifdef USE_SOUND_VOLUME +static const _TCHAR *sound_device_caption[] = { + _T("Beep"), _T("Noise (FDD)"), +}; +#endif + +class csp_state_utils; class EMU; class DEVICE; class EVENT; @@ -111,24 +126,29 @@ class IO; class MB8877; class MSM58321; class PCM1BIT; +class SCSI_HDD; +class SCSI_HOST; class UPD71071; -class BIOS; -class CMOS; -class FLOPPY; -class KEYBOARD; -class MEMORY; -//class SERIAL; -class SCSI; -class TIMER; +namespace FMR50 { + class BIOS; + class CMOS; + class FLOPPY; + class KEYBOARD; + class MEMORY; + //class SERIAL; + class SCSI; + class TIMER; +} -class VM +class VM : public VM_TEMPLATE { protected: - EMU* emu; + //EMU* emu; + //csp_state_utils *state_entry; // devices - EVENT* event; + //EVENT* event; HD46505* crtc; #if defined(_FMR60) @@ -147,16 +167,18 @@ protected: MB8877* fdc; MSM58321* rtc; PCM1BIT* pcm; + SCSI_HDD* scsi_hdd[7]; + SCSI_HOST* scsi_host; UPD71071* dma; - BIOS* bios; - CMOS* cmos; - FLOPPY* floppy; - KEYBOARD* keyboard; - MEMORY* memory; - SCSI* scsi; -// SERIAL* serial; - TIMER* timer; + FMR50::BIOS* bios; + FMR50::CMOS* cmos; + FMR50::FLOPPY* floppy; + FMR50::KEYBOARD* keyboard; + FMR50::MEMORY* memory; + FMR50::SCSI* scsi; +// FMR50::SERIAL* serial; + FMR50::TIMER* timer; public: // ---------------------------------------- @@ -181,28 +203,34 @@ public: // draw screen void draw_screen(); - int access_lamp(); // sound generation void initialize_sound(int rate, int samples); - uint16* create_sound(int* extra_frames); - int sound_buffer_ptr(); + uint16_t* create_sound(int* extra_frames); + int get_sound_buffer_ptr(); +#ifdef USE_SOUND_VOLUME + void set_sound_device_volume(int ch, int decibel_l, int decibel_r); +#endif // notify key void key_down(int code, bool repeat); void key_up(int code); // user interface - void open_disk(int drv, const _TCHAR* file_path, int bank); - void close_disk(int drv); - bool disk_inserted(int drv); - void set_disk_protected(int drv, bool value); - bool get_disk_protected(int drv); - bool now_skip(); + void open_floppy_disk(int drv, const _TCHAR* file_path, int bank); + void close_floppy_disk(int drv); + bool is_floppy_disk_inserted(int drv); + void is_floppy_disk_protected(int drv, bool value); + bool is_floppy_disk_protected(int drv); + uint32_t is_floppy_disk_accessed(); + void open_hard_disk(int drv, const _TCHAR* file_path); + void close_hard_disk(int drv); + bool is_hard_disk_inserted(int drv); + uint32_t is_hard_disk_accessed(); + bool is_frame_skippable(); void update_config(); - void save_state(FILEIO* state_fio); - bool load_state(FILEIO* state_fio); + bool process_state(FILEIO* state_fio, bool loading); // ---------------------------------------- // for each device @@ -210,9 +238,9 @@ public: // devices DEVICE* get_device(int id); - DEVICE* dummy; - DEVICE* first_device; - DEVICE* last_device; + //DEVICE* dummy; + //DEVICE* first_device; + //DEVICE* last_device; }; #endif