-#ifndef _HDLOAD_OSECPU
-#define _HDLOAD_OSECPU 1
-
-/* Visual Studio で fopen()やsprintf() などの古い関数を使用する時に出る警告を抑止する*/
-#define _CRT_SECURE_NO_WARNINGS 1
-
-//
-// Including stdc headers
-//
-
-#include <stdio.h>
-#include <string.h>
-#include <limits.h>
-#include <time.h>
-#include <setjmp.h>
-#include <stdlib.h>
-
-
-//
-// Compile options
-//
-
-// Target architecture
-// 1 : i386
-#define JITC_ARCNUM 0x0001
-
-// Target operating system
-// 1 : Windows 32bit
-// 2 : Mac OSX 32bit
-// 3 : blike for Linux
-#ifdef _WIN32
-#define DRV_OSNUM 0x0001
-#endif
-#ifdef __APPLE__
-#define DRV_OSNUM 0x0002
-#endif
-#ifdef __linux__
-#define DRV_OSNUM 0x0003
-#endif
-//#define DRV_OSNUM 0x0002
-
-// Decoder (syslib.ose) setting
-// syslib.ose is necessary to work OSECPU
-#define SYSLIB_OSE "syslib.ose"
-
-//
-// Define constant values
-//
-
-// SIGN1: The 2nd signature of OSECPU Format(05 e1)
-// It will be changed in OSECPU Rev.2 to "e2" (no adaptation in their binary layers)
-#define SIGN1 0xe1
-
-#define USE_DEBUGGER 1
-#define USE_TEK5 1
-
-/* JITC mode flags */
-#define JITC_LV_SLOWEST 0 /* デバッグ支援は何でもやる */
-#define JITC_LV_SLOWER 1 /* エラーモジュールはレポートできるが、行番号は分からない、テストは過剰 */
-#define JITC_LV_SAFE 2 /* とにかく止まる、場所は不明、テストは必要最小限 */
-#define JITC_LV_FASTER 4 /* 情報は生成するがチェックをしない */
-#define JITC_LV_FASTEST 5 /* 情報すら生成しない */
-#define JITC_PHASE1 0x0001
-#define JITC_SKIPCHECK 0x0002 /* セキュリティチェックを省略する(高速危険モード) */
-#define JITC_NOSTARTUP 0x0004
-#define JITC_MAXLABELS 4096
-#define PTRCTRLSIZ 4096
-
-#define APPSIZ1 1 * 1024 * 1024 /* 1MB for now */
-#define APPJITSIZE 1 * 1024 * 1024 /* 1MB for now */
-#define SYSJITSIZ1 2 * 1024 * 1024 /* 1MB for now */
-#define SYSLIBSIZ1 1 * 1024 * 1024 /* 1MB for now */
-#define SYSTMP0SIZ 1 * 1024 * 1024 /* 1MB for now */
-#define SYSTMP1SIZ 2 * 1024 * 1024 /* 1MB for now */
-
-#define KEYBUFSIZ 4096
-
-#define KEY_ENTER '\n'
-#define KEY_ESC 27
-#define KEY_BACKSPACE 8
-#define KEY_TAB 9
-#define KEY_PAGEUP 0x1020
-#define KEY_PAGEDWN 0x1021
-#define KEY_END 0x1022
-#define KEY_HOME 0x1023
-#define KEY_LEFT 0x1024
-#define KEY_UP 0x1025
-#define KEY_RIGHT 0x1026
-#define KEY_DOWN 0x1027
-#define KEY_INS 0x1028
-#define KEY_DEL 0x1029
-
-//
-// HOSECPU structures
-//
-typedef struct PtrCtrl HOSECPU_PointerControlTag;
-struct PtrCtrl {
- int liveSign;
- int size, typ;
- unsigned char *p0;
-};
-
-typedef struct Ptr HOSECPU_PointerRegisterEntry;
-struct Ptr {
- // 32バイト(=256bit!)
- unsigned char *p;
-
- /* static char *typName[] = {
- "T_CODE", "T_VPTR", "T_SINT8", "T_UINT8",
- "T_SINT16", "T_UINT16", "T_SINT32", "T_UINT32",
- "T_SINT4", "T_UINT4", "T_SINT2", "T_UINT2",
- "T_SINT1", "T_UINT1", "T_SINT12", "T_UINT12",
- "T_SINT20", "T_UINT20", "T_SINT24", "T_UINT24",
- "T_SINT28", "T_UINT28"
- } ; */
- int typ;
- unsigned char *p0, *p1;
- int liveSign;
- HOSECPU_PointerControlTag *pls;
- int flags, dummy; /* read/writeなど */
-};
-
-typedef struct LabelTable HOSECPU_LabelListTag;
-struct LabelTable {
- unsigned char *p, *p1;
- int opt;
- /*
- * default = -1
- * TYP_CODE = 0
- * T_UINT8 = 3
- *
- * 将来的には UInt8, SInt32, Flt64, UInt8, VPtr が使えるようになる http://osecpu.osask.jp/wiki/?page0053
- */
- int typ;
-};
-
-typedef struct Device_Window HOSECPU_Device_Window;
-struct Device_Window {
- int *vram;
- int xsize, ysize;
-};
-
-typedef struct Regs HOSECPU_RuntimeEnvironment;
-struct Regs {
- int ireg[64]; // 整数レジスタ (4 * 64) = 256
- HOSECPU_PointerRegisterEntry preg[64]; // ポインタレジスタ (32 * 64) = 2048
- //
- int debugInfo0; // 2304
- int debugInfo1; // 2308
- int dbg_currentCode; // 2312
- int dmy; // 2316
- //
- HOSECPU_PointerControlTag *ptrCtrl; // 2320
- char winClosed, autoSleep;
- jmp_buf setjmpEnv;
- int appReturnCode; // アプリ自体の終了コード
-
- /* Main environment */
- int mainArgc; // HOSECPU起動引数の個数
- const char **mainArgv; // HOSECPU起動引数リスト
- unsigned char *appBin; // 実行するアプリのバイナリ
- int appSize0;
- int appSize1;
- int executionLevel;
-
- /* for-junkApi */
- unsigned char *buf0, *buf1, *junkStack, lastConsoleChar, *junkStack1;
-
- HOSECPU_LabelListTag *label;
- int maxLabels;
- unsigned char *jitbuf, *jitbuf1;
- void(*errHndl)(HOSECPU_RuntimeEnvironment *);
- char dbgr;
- int mapDi1s[16][16];
-};
-
-//
-// Grobal values
-//
-
-extern int *keybuf, keybuf_r, keybuf_w, keybuf_c;
-extern HOSECPU_Device_Window mainWindow;
-// di1_serial: デバッグ用。プログラム中の随所で加算される変数
-extern int di1_serial;
-
-//
-// Functions
-//
-
-// @main.c
-void putKeybuf(int i);
-int HeavyOSECPUMain(int argc, char **argv);
-
-// @comlib.c
-unsigned char *ComLib_main(const unsigned char *p, unsigned char *q);
-// @dpndenv.c
-// OSに依存する関数群を定義する。
-void *mallocRWE(int bytes); // 実行権付きメモリのmalloc.
-void drv_openWin(int x, int y, unsigned char *buf, char *winClosed);
-void drv_flshWin(int sx, int sy, int x0, int y0);
-void drv_sleep(int msec);
-
-// @function.c
-void dbgrMain(HOSECPU_RuntimeEnvironment *r);
-const char *searchArg(int argc, const char **argv, const char *tag, int i); // コマンドライン引数処理.
-void devFunc(HOSECPU_RuntimeEnvironment *r); // junkApiを処理する関数
-
-// @jitc.c
-void errorHandler(HOSECPU_RuntimeEnvironment *r);
-void PRegCopy(HOSECPU_PointerRegisterEntry *dst, HOSECPU_PointerRegisterEntry *src);
-// @jitcx86.c
-int jitc0(unsigned char **qq, unsigned char *q1, const unsigned char *p0, const unsigned char *p1, int level, HOSECPU_LabelListTag *label);
-int jitCompiler(unsigned char *dst, unsigned char *dst1, const unsigned char *src, const unsigned char *src1, const unsigned char *src0, HOSECPU_LabelListTag *label, int maxLabels, int level, int debugInfo1, int flags);
-unsigned char *jitCompCallFunc(unsigned char *dst, void *func);
-unsigned char *jitCompInit(unsigned char *dst);
-void jitcRunBinary(void (*bin)(char *), HOSECPU_RuntimeEnvironment *env);
-
-// @randmt.c
-void randStatInit(unsigned int seed);
-void randStatNext();
-unsigned int randGetNextUInt32(void);
-
-// @screen.c
-static int iColor1[] = {
- 0x000000, 0xff0000, 0x00ff00, 0xffff00,
- 0x0000ff, 0xff00ff, 0x00ffff, 0xffffff
-};
-void putOsaskChar(int c, HOSECPU_RuntimeEnvironment *r);
-void checkString(HOSECPU_RuntimeEnvironment *r, int rxx, int pxx);
-void checkRect(HOSECPU_RuntimeEnvironment *r, int rxx);
-int loadColor(HOSECPU_RuntimeEnvironment *r, int rxx);
-
-// @usetek.c
-#if (USE_TEK5 != 0)
-#include "tek.h"
-int appackSub2(const UCHAR **pp, char *pif);
-int appackSub3u(const UCHAR **pp, char *pif);
-int tek5Decomp(UCHAR *buf, UCHAR *buf1, UCHAR *tmp);
-#endif
-
-
-#endif
+#ifndef _HDLOAD_OSECPU\r
+#define _HDLOAD_OSECPU 1\r
+\r
+/* Visual Studio で fopen()やsprintf() などの古い関数を使用する時に出る警告を抑止する*/\r
+#define _CRT_SECURE_NO_WARNINGS 1\r
+\r
+//\r
+// Including stdc headers\r
+//\r
+\r
+#include <stdio.h>\r
+#include <string.h>\r
+#include <limits.h>\r
+#include <time.h>\r
+#include <setjmp.h>\r
+#include <stdlib.h>\r
+\r
+\r
+//\r
+// Compile options\r
+//\r
+\r
+// Target architecture\r
+// 1 : i386\r
+#define JITC_ARCNUM 0x0001\r
+\r
+// Target operating system\r
+// 1 : Windows 32bit\r
+// 2 : Mac OSX 32bit\r
+// 3 : blike for Linux\r
+#ifdef _WIN32\r
+#define DRV_OSNUM 0x0001\r
+#endif\r
+#ifdef __APPLE__\r
+#define DRV_OSNUM 0x0002\r
+#endif\r
+#ifdef __linux__\r
+#define DRV_OSNUM 0x0003\r
+#endif\r
+//#define DRV_OSNUM 0x0002\r
+\r
+// Decoder (syslib.ose) setting\r
+// syslib.ose is necessary to work OSECPU\r
+#define SYSLIB_OSE "syslib.ose"\r
+\r
+//\r
+// Define constant values\r
+//\r
+\r
+// SIGN1: The 2nd signature of OSECPU Format(05 e1)\r
+// It will be changed in OSECPU Rev.2 to "e2" (no adaptation in their binary layers)\r
+#define SIGN1 0xe1\r
+\r
+#define USE_DEBUGGER 1\r
+#define USE_TEK5 1\r
+\r
+/* JITC mode flags */\r
+#define JITC_LV_SLOWEST 0 /* デバッグ支援は何でもやる */\r
+#define JITC_LV_SLOWER 1 /* エラーモジュールはレポートできるが、行番号は分からない、テストは過剰 */\r
+#define JITC_LV_SAFE 2 /* とにかく止まる、場所は不明、テストは必要最小限 */\r
+#define JITC_LV_FASTER 4 /* 情報は生成するがチェックをしない */\r
+#define JITC_LV_FASTEST 5 /* 情報すら生成しない */\r
+#define JITC_PHASE1 0x0001\r
+#define JITC_SKIPCHECK 0x0002 /* セキュリティチェックを省略する(高速危険モード) */\r
+#define JITC_NOSTARTUP 0x0004\r
+#define JITC_MAXLABELS 4096\r
+#define PTRCTRLSIZ 4096\r
+\r
+#define APPSIZ1 1 * 1024 * 1024 /* 1MB for now */\r
+#define APPJITSIZE 1 * 1024 * 1024 /* 1MB for now */\r
+#define SYSJITSIZ1 2 * 1024 * 1024 /* 1MB for now */\r
+#define SYSLIBSIZ1 1 * 1024 * 1024 /* 1MB for now */\r
+#define SYSTMP0SIZ 1 * 1024 * 1024 /* 1MB for now */\r
+#define SYSTMP1SIZ 2 * 1024 * 1024 /* 1MB for now */\r
+\r
+#define KEYBUFSIZ 4096\r
+\r
+#define KEY_EMPTY -1\r
+#define KEY_ENTER '\n'\r
+#define KEY_ESC 27\r
+#define KEY_BACKSPACE 8\r
+#define KEY_TAB 9\r
+#define KEY_PAGEUP 0x1020\r
+#define KEY_PAGEDWN 0x1021\r
+#define KEY_END 0x1022\r
+#define KEY_HOME 0x1023\r
+#define KEY_LEFT 0x1024\r
+#define KEY_UP 0x1025\r
+#define KEY_RIGHT 0x1026\r
+#define KEY_DOWN 0x1027\r
+#define KEY_INS 0x1028\r
+#define KEY_DEL 0x1029\r
+\r
+#define KEY_MODIFIER_SHIFT_L (1 << 16) // [C]\r
+#define KEY_MODIFIER_CONTROL_L (1 << 17)\r
+#define KEY_MODIFIER_MENU_L (1 << 18)\r
+#define KEY_MODIFIER_NUMLOCK (1 << 22) // [C]\r
+#define KEY_MODIFIER_CAPITAL (1 << 23) // [C]\r
+#define KEY_MODIFIER_SHIFT_R (1 << 24) // [C]\r
+#define KEY_MODIFIER_CONTROL_R (1 << 25)\r
+#define KEY_MODIFIER_MENU_R (1 << 26)\r
+\r
+\r
+//\r
+// HOSECPU structures\r
+//\r
+typedef struct PtrCtrl HOSECPU_PointerControlTag;\r
+struct PtrCtrl {\r
+ int liveSign;\r
+ int size, typ;\r
+ unsigned char *p0;\r
+};\r
+\r
+typedef struct Ptr HOSECPU_PointerRegisterEntry;\r
+struct Ptr {\r
+ // 32バイト(=256bit!)\r
+ unsigned char *p;\r
+ \r
+ /* static char *typName[] = {\r
+ "T_CODE", "T_VPTR", "T_SINT8", "T_UINT8",\r
+ "T_SINT16", "T_UINT16", "T_SINT32", "T_UINT32",\r
+ "T_SINT4", "T_UINT4", "T_SINT2", "T_UINT2",\r
+ "T_SINT1", "T_UINT1", "T_SINT12", "T_UINT12",\r
+ "T_SINT20", "T_UINT20", "T_SINT24", "T_UINT24",\r
+ "T_SINT28", "T_UINT28"\r
+ } ; */\r
+ int typ;\r
+ unsigned char *p0, *p1;\r
+ int liveSign;\r
+ HOSECPU_PointerControlTag *pls;\r
+ int flags, dummy; /* read/writeなど */\r
+};\r
+\r
+typedef struct LabelTable HOSECPU_LabelListTag;\r
+struct LabelTable {\r
+ unsigned char *p, *p1;\r
+ int opt;\r
+ /*\r
+ * default = -1\r
+ * TYP_CODE = 0\r
+ * T_UINT8 = 3\r
+ *\r
+ * 将来的には UInt8, SInt32, Flt64, UInt8, VPtr が使えるようになる http://osecpu.osask.jp/wiki/?page0053\r
+ */\r
+ int typ;\r
+};\r
+\r
+typedef struct Device_Window HOSECPU_Device_Window;\r
+struct Device_Window {\r
+ int *vram;\r
+ int xsize, ysize;\r
+};\r
+\r
+typedef struct Regs HOSECPU_RuntimeEnvironment;\r
+struct Regs {\r
+ int ireg[64]; // 整数レジスタ (4 * 64) = 256\r
+ HOSECPU_PointerRegisterEntry preg[64]; // ポインタレジスタ (32 * 64) = 2048\r
+ //\r
+ int debugInfo0; // 2304\r
+ int debugInfo1; // 2308\r
+ int dbg_currentCode; // 2312\r
+ int dmy; // 2316\r
+ //\r
+ HOSECPU_PointerControlTag *ptrCtrl; // 2320\r
+ char winClosed, autoSleep;\r
+ jmp_buf setjmpEnv;\r
+ int appReturnCode; // アプリ自体の終了コード\r
+ \r
+ /* Main environment */\r
+ int mainArgc; // HOSECPU起動引数の個数\r
+ const char **mainArgv; // HOSECPU起動引数リスト\r
+ unsigned char *appBin; // 実行するアプリのバイナリ\r
+ int appSize0;\r
+ int appSize1;\r
+ int executionLevel;\r
+ \r
+ /* for-junkApi */\r
+ unsigned char *buf0, *buf1, *junkStack, lastConsoleChar, *junkStack1;\r
+ \r
+ HOSECPU_LabelListTag *label;\r
+ int maxLabels;\r
+ unsigned char *jitbuf, *jitbuf1;\r
+ void(*errHndl)(HOSECPU_RuntimeEnvironment *);\r
+ char dbgr;\r
+ int mapDi1s[16][16];\r
+};\r
+\r
+//\r
+// Grobal values\r
+//\r
+\r
+extern int *keybuf, keybuf_r, keybuf_w, keybuf_c;\r
+extern HOSECPU_Device_Window mainWindow;\r
+// di1_serial: デバッグ用。プログラム中の随所で加算される変数\r
+extern int di1_serial;\r
+\r
+//\r
+// Functions\r
+//\r
+\r
+// @main.c\r
+void putKeybuf(int i);\r
+int HeavyOSECPUMain(int argc, char **argv);\r
+\r
+// @comlib.c\r
+unsigned char *ComLib_main(const unsigned char *p, unsigned char *q);\r
+// @dpndenv.c\r
+// OSに依存する関数群を定義する。\r
+void *mallocRWE(int bytes); // 実行権付きメモリのmalloc.\r
+void drv_openWin(int x, int y, unsigned char *buf, char *winClosed);\r
+void drv_flshWin(int sx, int sy, int x0, int y0);\r
+void drv_sleep(int msec);\r
+\r
+// @function.c\r
+void dbgrMain(HOSECPU_RuntimeEnvironment *r);\r
+const char *searchArg(int argc, const char **argv, const char *tag, int i); // コマンドライン引数処理.\r
+void devFunc(HOSECPU_RuntimeEnvironment *r); // junkApiを処理する関数\r
+\r
+// @jitc.c\r
+void errorHandler(HOSECPU_RuntimeEnvironment *r);\r
+void PRegCopy(HOSECPU_PointerRegisterEntry *dst, HOSECPU_PointerRegisterEntry *src);\r
+// @jitcx86.c\r
+int jitc0(unsigned char **qq, unsigned char *q1, const unsigned char *p0, const unsigned char *p1, int level, HOSECPU_LabelListTag *label);\r
+int jitCompiler(unsigned char *dst, unsigned char *dst1, const unsigned char *src, const unsigned char *src1, const unsigned char *src0, HOSECPU_LabelListTag *label, int maxLabels, int level, int debugInfo1, int flags);\r
+unsigned char *jitCompCallFunc(unsigned char *dst, void *func);\r
+unsigned char *jitCompInit(unsigned char *dst);\r
+void jitcRunBinary(void (*bin)(char *), HOSECPU_RuntimeEnvironment *env);\r
+\r
+// @randmt.c\r
+void randStatInit(unsigned int seed);\r
+void randStatNext();\r
+unsigned int randGetNextUInt32(void);\r
+\r
+// @screen.c\r
+static int iColor1[] = {\r
+ 0x000000, 0xff0000, 0x00ff00, 0xffff00,\r
+ 0x0000ff, 0xff00ff, 0x00ffff, 0xffffff\r
+};\r
+void putOsaskChar(int c, HOSECPU_RuntimeEnvironment *r);\r
+void checkString(HOSECPU_RuntimeEnvironment *r, int rxx, int pxx);\r
+void checkRect(HOSECPU_RuntimeEnvironment *r, int rxx);\r
+int loadColor(HOSECPU_RuntimeEnvironment *r, int rxx);\r
+\r
+// @usetek.c\r
+#if (USE_TEK5 != 0)\r
+#include "tek.h"\r
+int appackSub2(const UCHAR **pp, char *pif);\r
+int appackSub3u(const UCHAR **pp, char *pif);\r
+int tek5Decomp(UCHAR *buf, UCHAR *buf1, UCHAR *tmp);\r
+#endif\r
+\r
+\r
+#endif\r