X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=source%2Fsrc%2Fvm%2Fmz2500%2Fmz80b.h;h=d113386c8517f54ca8d87049c8927865bfff58e3;hb=2fc1443c0f411167f1b61ff87e13fee36cd5876b;hp=87da60e0256e18447a639136fd5186a4b594b248;hpb=91d7b0d1a14f40ebe8743ef59dc543c38d22d401;p=csp-qt%2Fcommon_source_project-fm7.git diff --git a/source/src/vm/mz2500/mz80b.h b/source/src/vm/mz2500/mz80b.h index 87da60e02..d113386c8 100644 --- a/source/src/vm/mz2500/mz80b.h +++ b/source/src/vm/mz2500/mz80b.h @@ -31,17 +31,19 @@ #define FRAMES_PER_SEC 60 #define LINES_PER_FRAME 262 #define CPU_CLOCKS 4000000 +#define CPU_CLOCKS_HIGH 6000000 #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 400 +#define WINDOW_HEIGHT_ASPECT 480 #define MAX_DRIVE 4 #define HAS_MB8876 -#define PCM1BIT_HIGH_QUALITY #ifdef SUPPORT_QUICK_DISK #endif #ifdef SUPPORT_16BIT_BOARD #define HAS_I88 #define I8259_MAX_CHIPS 1 #endif +#define PRINTER_STROBE_RISING_EDGE // memory wait #define Z80_MEMORY_WAIT @@ -49,31 +51,42 @@ // device informations for win32 #define USE_SPECIAL_RESET -#define USE_FD1 -#define USE_FD2 -#define USE_FD3 -#define USE_FD4 +#define USE_CPU_TYPE 2 +#define USE_FLOPPY_DISK 4 #ifdef SUPPORT_QUICK_DISK -#define USE_QD1 +#define USE_QUICK_DISK 1 #endif -#define USE_TAPE +#define USE_TAPE 1 #define USE_TAPE_BUTTON #define USE_SHIFT_NUMPAD_KEY #define USE_ALT_F10_KEY #define USE_AUTO_KEY 5 #define USE_AUTO_KEY_RELEASE 6 #define USE_AUTO_KEY_CAPS +#define USE_AUTO_KEY_NUMPAD +#define USE_MONITOR_TYPE 4 #ifndef _MZ80B -#define USE_MONITOR_TYPE 2 -#define USE_CRT_FILTER +#define USE_SCREEN_FILTER #endif #define USE_SCANLINE -#define USE_ACCESS_LAMP +#define USE_SOUND_VOLUME 4 +#define USE_PRINTER +#define USE_PRINTER_TYPE 4 #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 (FDD)"), _T("Noise (CMT)"), +}; +#endif + +class csp_state_utils; class EMU; class DEVICE; class EVENT; @@ -86,35 +99,42 @@ class MB8877; class PCM1BIT; class Z80; class Z80PIO; - -class CMT; -class FLOPPY; -class KEYBOARD; -class MEMORY; -class MZ1R12; -class MZ1R13; -class TIMER; - #ifdef SUPPORT_QUICK_DISK class Z80SIO; -class QUICKDISK; #endif - +#ifdef SUPPORT_QUICK_DISK +namespace MZ700 { + class QUICKDISK; +} +#endif #ifdef SUPPORT_16BIT_BOARD -class I286; -class I8259; -class MZ1M01; + class I286; + class I8259; #endif +namespace MZ2500 { + class CMT; + class FLOPPY; + class KEYBOARD; + class MZ1R12; + class MZ1R13; + class PRINTER; + class TIMER; +} +namespace MZ80B { + class MEMORY; +#ifdef SUPPORT_16BIT_BOARD + class MZ1M01; +#endif +} -class FILEIO; - -class VM +class VM : public VM_TEMPLATE { protected: - EMU* emu; + //EMU* emu; + //csp_state_utils* state_entry; // devices - EVENT* event; + //EVENT* event; DATAREC* drec; I8253* pit; @@ -125,24 +145,25 @@ protected: Z80* cpu; Z80PIO* pio; - CMT* cmt; - FLOPPY* floppy; - KEYBOARD* keyboard; - MEMORY* memory; - MZ1R12* mz1r12; - MZ1R13* mz1r13; - TIMER* timer; + MZ2500::CMT* cmt; + MZ2500::FLOPPY* floppy; + MZ2500::KEYBOARD* keyboard; + MZ80B::MEMORY* memory; + MZ2500::MZ1R12* mz1r12; + MZ2500::MZ1R13* mz1r13; + MZ2500::PRINTER* printer; + MZ2500::TIMER* timer; #ifdef SUPPORT_QUICK_DISK Z80SIO* sio; - QUICKDISK* qd; + MZ700::QUICKDISK* qd; #endif #ifdef SUPPORT_16BIT_BOARD Z80PIO* pio_to16; I286* cpu_16; I8259* pic_16; - MZ1M01* mz1m01; + MZ80B::MZ1M01* mz1m01; #endif public: @@ -169,33 +190,46 @@ 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 // user interface - void open_disk(int drv, _TCHAR* file_path, int bank); - void close_disk(int drv); - bool disk_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(); #ifdef SUPPORT_QUICK_DISK - void open_quickdisk(int drv, _TCHAR* file_path); - void close_quickdisk(int drv); - bool quickdisk_inserted(int drv); -#endif - void play_tape(_TCHAR* file_path); - void rec_tape(_TCHAR* file_path); - void close_tape(); - bool tape_inserted(); - void push_play(); - void push_stop(); - bool now_skip(); + void open_quick_disk(int drv, const _TCHAR* file_path); + void close_quick_disk(int drv); + bool is_quick_disk_inserted(int drv); + uint32_t is_quick_disk_accessed(); +#endif + 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 @@ -203,9 +237,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