X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=source%2Fsrc%2Fvm%2Fpc6001%2Fpc6001.h;h=a02cc0a3242642872eff0bbf46698c17248b6fa8;hb=1a7386afa4c2ce25de158ba8285bc795446a8584;hp=bc22fbda1fae4b70cc4736393251215a860346f2;hpb=2e83185ef0c20787c68dbacc089adb9b97563328;p=csp-qt%2Fcommon_source_project-fm7.git diff --git a/source/src/vm/pc6001/pc6001.h b/source/src/vm/pc6001/pc6001.h index bc22fbda1..a02cc0a32 100644 --- a/source/src/vm/pc6001/pc6001.h +++ b/source/src/vm/pc6001/pc6001.h @@ -28,6 +28,7 @@ #define SUB_CPU_ROM_FILE_NAME "SUBCPU.62" #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 +#define WINDOW_HEIGHT_ASPECT 480 #define CPU_CLOCKS 4000000 #define HAS_AY_3_8910 #elif defined(_PC6001MK2SR) @@ -36,6 +37,7 @@ #define SUB_CPU_ROM_FILE_NAME "SUBCPU.68" #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 +#define WINDOW_HEIGHT_ASPECT 480 #define CPU_CLOCKS 3580000 #elif defined(_PC6601) #define DEVICE_NAME "NEC PC-6601" @@ -43,6 +45,7 @@ #define SUB_CPU_ROM_FILE_NAME "SUBCPU.66" #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 +#define WINDOW_HEIGHT_ASPECT 480 #define CPU_CLOCKS 4000000 #define HAS_AY_3_8910 #elif defined(_PC6601SR) @@ -53,6 +56,7 @@ #define SUB_CPU_3_ROM_FILE_NAME "SUBCPU3.68" #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 +#define WINDOW_HEIGHT_ASPECT 480 #define CPU_CLOCKS 3580000 #endif @@ -72,29 +76,51 @@ #define MC6847_ATTR_INV 0x01 // device informations for win32 -#define USE_CART1 -#define USE_FD1 -#define USE_FD2 +#define USE_CART 1 #if defined(_PC6601) || defined(_PC6601SR) -#define USE_FD3 -#define USE_FD4 +#define USE_FLOPPY_DISK 4 +#else +#define USE_FLOPPY_DISK 2 #endif -#define USE_TAPE +#define USE_TAPE 1 +#define USE_TAPE_BUTTON #define TAPE_PC6001 +#define NOTIFY_KEY_DOWN +#define USE_SHIFT_NUMPAD_KEY #define USE_ALT_F10_KEY #define USE_AUTO_KEY 6 #define USE_AUTO_KEY_RELEASE 10 #define USE_AUTO_KEY_CAPS #if !defined(_PC6001) -#define USE_CRT_FILTER +#define USE_SCREEN_FILTER #define USE_SCANLINE #endif -#define USE_ACCESS_LAMP +#if defined(_PC6001) +#define USE_SOUND_VOLUME 4 +#else +#define USE_SOUND_VOLUME 5 +#endif +#define USE_JOYSTICK +#define USE_PRINTER +#define USE_PRINTER_TYPE 3 #define USE_DEBUGGER #define USE_STATE +#define USE_CPU_MCS48 +#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("PSG"), +#if !defined(_PC6001) + _T("Voice"), +#endif + _T("CMT (Signal)"), _T("Noise (FDD)"), _T("Noise (CMT)"), +}; +#endif class EMU; class DEVICE; class EVENT; @@ -106,60 +132,77 @@ class MC6847; #else class UPD7752; #endif +class NOISE; class PC6031; class PC80S31K; class UPD765A; +#if defined(_PC6001MK2SR) || defined(_PC6601SR) class YM2203; +#else +class AY_3_891X; +#endif class Z80; class DATAREC; class MCS48; #ifdef _PC6001 -class DISPLAY; +namespace PC6001 { + class DISPLAY; +} #endif #if defined(_PC6601) || defined(_PC6601SR) -class FLOPPY; -#endif -class JOYSTICK; -class MEMORY; -class PRINTER; -class PSUB; -class SUB; -class TIMER; +namespace PC6001 { + class FLOPPY; +} +#endif -class FILEIO; +namespace PC6001 { + class JOYSTICK; + class MEMORY; + class PSUB; + class SUB; + class TIMER; +} -class VM +class VM : public VM_TEMPLATE { protected: - EMU* emu; + //EMU* emu; + int vdata; // devices - EVENT* event; + //EVENT* event; + DEVICE* printer; I8255* pio_sub; IO* io; + NOISE* noise_seek; + NOISE* noise_head_down; + NOISE* noise_head_up; +#if defined(_PC6001MK2SR) || defined(_PC6601SR) YM2203* psg; +#else + AY_3_891X* psg; +#endif Z80* cpu; #ifdef _PC6001 MC6847* vdp; - DISPLAY* display; + PC6001::DISPLAY* display; #else UPD7752* voice; #endif #if defined(_PC6601) || defined(_PC6601SR) - FLOPPY* floppy; + PC6001::FLOPPY* floppy; #endif - JOYSTICK* joystick; - MEMORY* memory; - PRINTER *printer; - PSUB* psub; - TIMER* timer; + PC6001::JOYSTICK* joystick; + PC6001::MEMORY* memory; + PC6001::PSUB* psub; + PC6001::TIMER* timer; MCS48* cpu_sub; - SUB* sub; + PC6001::SUB* sub; DATAREC* drec; PC6031* pc6031; @@ -195,31 +238,47 @@ public: // draw screen void draw_screen(); + // 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_cart(int drv,_TCHAR* file_path); + void open_cart(int drv, const _TCHAR* file_path); void close_cart(int drv); - bool cart_inserted(int drv); - int access_lamp(); - void open_disk(int drv, _TCHAR* file_path, int bank); - void close_disk(int drv); - bool disk_inserted(int drv); - bool is_write_protect_fd(int drv); - void write_protect_fd(int drv, bool flag); - void play_tape(_TCHAR* file_path); - void rec_tape(_TCHAR* file_path); - void close_tape(); - bool tape_inserted(); - int get_tape_ptr(); - bool now_skip(); + bool is_cart_inserted(int drv); + 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 @@ -227,9 +286,9 @@ public: // devices DEVICE* get_device(int id); - DEVICE* dummy; - DEVICE* first_device; - DEVICE* last_device; + //DEVICE* dummy; + //DEVICE* first_device; + //DEVICE* last_device; int sr_mode; };