OSDN Git Service

[VM][FM7] Add temporally machine-definition files.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Tue, 30 Dec 2014 17:49:53 +0000 (02:49 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Tue, 30 Dec 2014 17:49:53 +0000 (02:49 +0900)
source/src/vm/fm7/fm7.h [new file with mode: 0644]
source/src/vm/vm.h

diff --git a/source/src/vm/fm7/fm7.h b/source/src/vm/fm7/fm7.h
new file mode 100644 (file)
index 0000000..a2c0228
--- /dev/null
@@ -0,0 +1,209 @@
+/*\r
+       FUJITSU FM16pi Emulator 'eFM16pi'\r
+\r
+       Author : Takeda.Toshiya\r
+       Date   : 2010.12.25-\r
+\r
+       [ virtual machine ]\r
+*/\r
+\r
+#ifndef _FM7_H_\r
+#define _FM7_H_\r
+\r
+#define DEVICE_NAME            "FUJITSU FM7"\r
+#define CONFIG_NAME            "fm7"\r
+\r
+// device informations for virtual machine\r
+\r
+// TODO: check refresh rate\r
+#define FRAMES_PER_SEC         60\r
+#define LINES_PER_FRAME        400\r
+#define CPU_CLOCKS             2000000\r
+#define SCREEN_WIDTH           640\r
+#define SCREEN_HEIGHT          400\r
+#define MAX_DRIVE              4\r
+#define HAS_MC6809              \r
+#define MB8877_MAX_CHIPS       1\r
+#define MEMORY_ADDR_MAX                0x10000\r
+#define MEMORY_BANK_SIZE       0x1000\r
+//#define IO_ADDR_MAX          0x10000\r
+\r
+// device informations for win32\r
+#define USE_FD1\r
+#define USE_FD2\r
+#define NOTIFY_KEY_DOWN\r
+#define USE_ALT_F10_KEY\r
+#define USE_AUTO_KEY           5\r
+#define USE_AUTO_KEY_RELEASE   6\r
+#define USE_POWER_OFF\r
+#define USE_ACCESS_LAMP\r
+#define USE_DEBUGGER\r
+\r
+#include "../../common.h"\r
+\r
+class EMU;\r
+class DEVICE;\r
+class EVENT;\r
+\r
+class BEEP;\r
+class MC6809;\r
+class YM2203;\r
+class SN76489AN;\r
+class MB8877;\r
+class MEMORY;\r
+\r
+#if 0\r
+class Z80;\r
+#endif\r
+class VM\r
+{\r
+protected:\r
+       EMU* emu;\r
+       \r
+       // devices\r
+       EVENT* event;\r
+       \r
+       MC6809* maincpu;\r
+       MB8877* fdc;\r
+       MEMORY* mainmemory;\r
+        YM2203* opn;\r
+        YM2203* whg;\r
+        YM2203* thg;\r
+        SN76489AN* psg; // Is right? AY-3-8910 is right device.\r
+        BEEP* beep;\r
+#if 0\r
+        Z80* z80cpu;\r
+#endif\r
+#if 0 // WILL Implement\r
+        FM7_CMT* cmt;\r
+        FM7_OPNJOY* joystick_opn;\r
+        FM7_LPT* printer;\r
+        FM7_MOUSE* mouse_opn;\r
+        FM7_MAINIRQ* main_interrupt;\r
+        FM7_SHAREDBUS* mainsub_bus;\r
+        FM7_DPALET* ttl_palette;\r
+        \r
+        FM7_APALET* analog_palette;\r
+        FM7_MMR* mmr;\r
+        FM7_WINDOW *fm7_window;\r
+        FM7_DMA* dma;\r
+#endif \r
+       MC6809* subcpu;\r
+        MEMORY* submemory;\r
+#if 0 // WILL Implement\r
+        FM7_DISPLAY* display;\r
+        FM7_KBD* keyboard;\r
+        FM7_SUBIRQ* sub_interrupt;\r
+   \r
+        FM7_RTC* rtc;\r
+        FM7_ALU* alu;\r
+#endif \r
+   \r
+       int machine_version; // 0 = FM8 / 1 = FM7 / 2 = FM77AV / 3 = FM77AV40, etc...\r
+        Uint32 bootmode;   \r
+        Uint32 connected_opns;\r
+        bool cycle_steal = true;\r
+        bool clock_low = false;\r
+        int mainfreq_type;\r
+        Uint32 mainfreq_low;\r
+        Uint32 mainfreq_high;\r
+        Uint32 mainfreq_mmr;\r
+        Uint32 mainfreq_high_mmr;\r
\r
+        Uint32 fdd_type[MAX_DRIVES];\r
+        BOOL   fdd_connect[MAX_DRIVES];\r
+\r
+        FILEIO* cmt_fileio;\r
+        bool cmt_enabled = true; // 77AV40SX is disabled.\r
+        bool cmt_play;\r
+        bool cmt_rec;\r
+        Uint32 cmt_bufptr;\r
+   \r
+       // memory\r
+       // MAIN\r
+       uint8 mainram_b1[0x10000]; // 0x10000, RAM\r
+       uint8 mainram_b2[0x10000]; // 0x20000, RAM\r
+       uint8 mainram_b3a[0x8000]; // 0x30000, RAM\r
+        uint8 basicrom[0x7c00]; // 0x38000, ROM\r
+        uint8 mainram_b3b[0x7c00]; // 0x38000, RAM\r
+        uint8 shadowram[0x80]; // 0x3fc00, RAM\r
+        uint8 sharedram[0x80]; // 0x3fc80, Shared RAM\r
+        uint8 mainio[0x100]; // 0xfd00 - 0xfdff I/O\r
+        uint8 boot_bas[0x1f0]; // 0xfe00, BOOT(BAS)\r
+        uint8 boot_dos[0x1f0];\r
+        uint8 boot_bubl[0x1f0];\r
+        uint8 boot_ram[0x1f0];\r
+        uint8 main_vector[0x10]; // 0xfff0, VECTOR(main)\r
+        uint8 initiate[0x2000]; // Initiate RAM.\r
+\r
+        uint8 dictrom[0x40000];\r
+       uint8 kanjirom1[0x20000];\r
+       uint8 kanjirom2[0x20000];\r
+        // SUB\r
+       uint8 vram_b1[0xc000];\r
+        uint8 vram_b2[0xc000];\r
+       uint8 vram_b3[0xc000];\r
+        uint8 subchar[0x1000];\r
+        uint8 subwork[0x0380];\r
+        //uint8 sharedram_sub[0x80];\r
+        uint8 subio[0x400]; // Really?\r
+        uint8 cgrom[0x2000];\r
+        uint8 submon_a[0x2000];\r
+        uint8 submon_b[0x2000];\r
+        uint8 submon_c[0x2800];\r
+        uint8 extsubrom[0xc000];\r
+public:\r
+       // ----------------------------------------\r
+       // initialize\r
+       // ----------------------------------------\r
+       \r
+       VM(EMU* parent_emu);\r
+       ~VM();\r
+       \r
+       // ----------------------------------------\r
+       // for emulation class\r
+       // ----------------------------------------\r
+       \r
+       // drive virtual machine\r
+       void reset();\r
+       void notify_power_off();\r
+       void run();\r
+       \r
+#ifdef USE_DEBUGGER\r
+       // debugger\r
+       DEVICE *get_cpu(int index);\r
+#endif\r
+       \r
+       // draw screen\r
+       void draw_screen();\r
+       int access_lamp();\r
+       \r
+       // sound generation\r
+       void initialize_sound(int rate, int samples);\r
+       uint16* create_sound(int* extra_frames);\r
+       int sound_buffer_ptr();\r
+       \r
+       // notify key\r
+       void key_down(int code, bool repeat);\r
+       void key_up(int code);\r
+       \r
+       // user interface\r
+       void open_disk(int drv, _TCHAR* file_path, int offset);\r
+       void close_disk(int drv);\r
+       bool disk_inserted(int drv);\r
+       bool now_skip();\r
+       \r
+       void update_config();\r
+       \r
+       // ----------------------------------------\r
+       // for each device\r
+       // ----------------------------------------\r
+       \r
+       // devices\r
+       DEVICE* get_device(int id);\r
+       DEVICE* dummy;\r
+       DEVICE* first_device;\r
+       DEVICE* last_device;\r
+};\r
+\r
+#endif\r
index 59475f8..857f0c0 100644 (file)
 #include "familybasic/familybasic.h"\r
 #endif\r
 \r
+// FUJITSU FM7\r
+#ifdef _FM7\r
+#include "fm7/fm7.h"\r
+#endif\r
+\r
 // FUJITSU FM16pi\r
 #ifdef _FM16PI\r
 #include "fm16pi/fm16pi.h"\r