X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=source%2Fsrc%2Fvm%2Fhc80%2Fhc80.h;h=b119a812ce23a1350447bc912070ddd1a2d759b0;hb=2fc1443c0f411167f1b61ff87e13fee36cd5876b;hp=3e5d4321b6caeb32e70ae72801a11e5130d7a312;hpb=5c5e7c581fb82e64c81869a60173d542be165225;p=csp-qt%2Fcommon_source_project-fm7.git diff --git a/source/src/vm/hc80/hc80.h b/source/src/vm/hc80/hc80.h index 3e5d4321b..b119a812c 100644 --- a/source/src/vm/hc80/hc80.h +++ b/source/src/vm/hc80/hc80.h @@ -1,122 +1,140 @@ -/* - EPSON HC-80 Emulator 'eHC-80' - - Author : Takeda.Toshiya - Date : 2008.03.14 - - - [ virtual machine ] -*/ - -#ifndef _HC80_H_ -#define _HC80_H_ - -#define DEVICE_NAME "EPSON HC-80" -#define CONFIG_NAME "hc80" - -// device informations for virtual machine -#define FRAMES_PER_SEC 64 -#define LINES_PER_FRAME 64 -#define CPU_CLOCKS 2457600 -#define SCREEN_WIDTH 480 -#define SCREEN_HEIGHT 64 -#define MAX_DRIVE 4 - -// device informations for win32 -#define USE_SPECIAL_RESET -#define USE_DEVICE_TYPE 3 -#define USE_FD1 -#define USE_FD2 -#define USE_FD3 -#define USE_FD4 -#define NOTIFY_KEY_DOWN -#define USE_ALT_F10_KEY -#define USE_AUTO_KEY 6 -#define USE_AUTO_KEY_RELEASE 10 -#define USE_ACCESS_LAMP -#define USE_DEBUGGER - -#include "../../common.h" - -class EMU; -class DEVICE; -class EVENT; - -class BEEP; -class I8251; -class TF20; -class Z80; - -class IO; -class MEMORY; - -class VM -{ -protected: - EMU* emu; - - // devices - EVENT* event; - - BEEP* beep; - I8251* sio; - TF20* tf20; - Z80* cpu; - - IO* io; - MEMORY* memory; - -public: - // ---------------------------------------- - // initialize - // ---------------------------------------- - - VM(EMU* parent_emu); - ~VM(); - - // ---------------------------------------- - // for emulation class - // ---------------------------------------- - - // drive virtual machine - void reset(); - void special_reset(); - void run(); - -#ifdef USE_DEBUGGER - // debugger - DEVICE *get_cpu(int index); -#endif - - // 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(); - - // notify key - void key_down(int code, bool repeat); - void key_up(int code); - - // user interface - void open_disk(int drv, _TCHAR* file_path, int offset); - void close_disk(int drv); - bool disk_inserted(int drv); - bool now_skip(); - - void update_config(); - - // ---------------------------------------- - // for each device - // ---------------------------------------- - - // devices - DEVICE* get_device(int id); - DEVICE* dummy; - DEVICE* first_device; - DEVICE* last_device; -}; - -#endif +/* + EPSON HC-80 Emulator 'eHC-80' + + Author : Takeda.Toshiya + Date : 2008.03.14 - + + [ virtual machine ] +*/ + +#ifndef _HC80_H_ +#define _HC80_H_ + +#define DEVICE_NAME "EPSON HC-80" +#define CONFIG_NAME "hc80" + +// device informations for virtual machine +#define FRAMES_PER_SEC 64 +#define LINES_PER_FRAME 64 +#define CPU_CLOCKS 2457600 +#define SCREEN_WIDTH 480 +#define SCREEN_HEIGHT 64 +#define MAX_DRIVE 4 + +// device informations for win32 +#define USE_SPECIAL_RESET +#define USE_DEVICE_TYPE 3 +// Nonintelligent ram disk +#define DEVICE_TYPE_DEFAULT 2 +#define USE_FLOPPY_DISK 4 +#define NOTIFY_KEY_DOWN +#define USE_ALT_F10_KEY +#define USE_AUTO_KEY 6 +#define USE_AUTO_KEY_RELEASE 10 +#define USE_SOUND_VOLUME 1 +#define USE_DEBUGGER +#define USE_STATE +#define USE_CPU_Z80 + +#include "../../common.h" +#include "../../fileio.h" +#include "../vm_template.h" + +#ifdef USE_SOUND_VOLUME +static const _TCHAR *sound_device_caption[] = { + _T("Beep"), +}; +#endif + +class csp_state_utils; +class EMU; +class DEVICE; +class EVENT; + +class BEEP; +class I8251; +class PTF20; +class Z80; + +namespace HC80 { + class IO; + class MEMORY; +} +class VM : public VM_TEMPLATE +{ +protected: + //EMU* emu; + //csp_state_utils *state_entry; + + // devices + //EVENT* event; + + BEEP* beep; + I8251* sio; + PTF20* tf20; + Z80* cpu; + + HC80::IO* io; + HC80::MEMORY* memory; + +public: + // ---------------------------------------- + // initialize + // ---------------------------------------- + + VM(EMU* parent_emu); + ~VM(); + + // ---------------------------------------- + // for emulation class + // ---------------------------------------- + + // drive virtual machine + void reset(); + void special_reset(); + void run(); + +#ifdef USE_DEBUGGER + // debugger + DEVICE *get_cpu(int index); +#endif + + // draw screen + void draw_screen(); + + // sound generation + void initialize_sound(int rate, int samples); + 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_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(); + bool is_frame_skippable(); + + void update_config(); + bool process_state(FILEIO* state_fio, bool loading); + + // ---------------------------------------- + // for each device + // ---------------------------------------- + + // devices + DEVICE* get_device(int id); + //DEVICE* dummy; + //DEVICE* first_device; + //DEVICE* last_device; +}; + +#endif