X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=source%2Fsrc%2Fvm%2Fhc40%2Fhc40.h;h=ae7ea35baebec94334e964e4d005282a5ff3d0a7;hb=2fc1443c0f411167f1b61ff87e13fee36cd5876b;hp=a5f9abbb04e9bb4a319d75c1e03c61a166635e31;hpb=9ee0352b1b34c807b2cddba6424f17c48e3b5424;p=csp-qt%2Fcommon_source_project-fm7.git diff --git a/source/src/vm/hc40/hc40.h b/source/src/vm/hc40/hc40.h index a5f9abbb0..ae7ea35ba 100644 --- a/source/src/vm/hc40/hc40.h +++ b/source/src/vm/hc40/hc40.h @@ -22,26 +22,31 @@ #define MAX_DRIVE 4 // device informations for win32 -#define WINDOW_WIDTH (SCREEN_WIDTH * 2) -#define WINDOW_HEIGHT (SCREEN_HEIGHT * 2) - +#define WINDOW_MODE_BASE 2 #define USE_SPECIAL_RESET -#define USE_FD1 -#define USE_FD2 -#define USE_FD3 -#define USE_FD4 -#define USE_TAPE +#define USE_FLOPPY_DISK 4 +#define USE_TAPE 1 +#define USE_TAPE_BUTTON #define NOTIFY_KEY_DOWN #define USE_ALT_F10_KEY -#define USE_AUTO_KEY 6 +#define USE_AUTO_KEY 6 #define USE_AUTO_KEY_RELEASE 10 -#define USE_ACCESS_LAMP +#define USE_SOUND_VOLUME 3 #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"), _T("CMT (Signal)"), _T("Noise (CMT)"), +}; +#endif +class csp_state_utils; class EMU; class DEVICE; class EVENT; @@ -51,24 +56,26 @@ class DATAREC; class PTF20; class Z80; -class IO; -class MEMORY; - -class VM +namespace HC40 { + class IO; + class MEMORY; +} +class VM : public VM_TEMPLATE { protected: - EMU* emu; + //EMU* emu; + //csp_state_utils *state_entry; // devices - EVENT* event; + //EVENT* event; BEEP* beep; DATAREC* drec; PTF20* tf20; Z80* cpu; - IO* io; - MEMORY* memory; + HC40::IO* io; + HC40::MEMORY* memory; public: // ---------------------------------------- @@ -94,35 +101,44 @@ 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); - void play_tape(const _TCHAR* file_path); - void rec_tape(const _TCHAR* file_path); - void close_tape(); - bool tape_inserted(); - bool tape_playing(); - bool tape_recording(); - int tape_position(); - 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 play_tape(int drv, const _TCHAR* file_path); + void rec_tape(int drv, const _TCHAR* file_path); + void close_tape(int drv); + bool is_tape_inserted(int drv); + bool is_tape_playing(int drv); + bool is_tape_recording(int drv); + int get_tape_position(int drv); + const _TCHAR* get_tape_message(int drv); + void push_play(int drv); + void push_stop(int drv); + void push_fast_forward(int drv); + void push_fast_rewind(int drv); + void push_apss_forward(int drv) {} + void push_apss_rewind(int drv) {} + 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 @@ -130,9 +146,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