OSDN Git Service

yaoさんの提案を参考に、core.autocrlf=falseとしてコミットしてみる。
[heavyosecpu/HeavyOSECPU.git] / osecpu.h
index aebe28c..abcfd5f 100644 (file)
--- a/osecpu.h
+++ b/osecpu.h
-#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_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
-//\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
+#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