• R/O
  • HTTP
  • SSH
  • HTTPS

HeavyOSECPU: Commit


Commit MetaInfo

Revisión4cad1c671ee8d6ba2a0f90fb091df0d1a93831a2 (tree)
Tiempo2014-03-17 17:14:20
Autorhikarupsp <hikarupsp@user...>
Commiterhikarupsp

Log Message

マージミスを修正

Cambiar Resumen

Diferencia incremental

--- a/osecpu.h
+++ b/osecpu.h
@@ -1,244 +1,242 @@
1-#ifndef _HDLOAD_OSECPU
2-#define _HDLOAD_OSECPU 1
3-
4-/* Visual Studio で fopen()やsprintf() などの古い関数を使用する時に出る警告を抑止する*/
5-#define _CRT_SECURE_NO_WARNINGS 1
6-
7-//
8-// Including stdc headers
9-//
10-
11-#include <stdio.h>
12-#include <string.h>
13-#include <limits.h>
14-#include <time.h>
15-#include <setjmp.h>
16-#include <stdlib.h>
17-
18-
19-//
20-// Compile options
21-//
22-
23-// Target architecture
24-// 1 : i386
25-#define JITC_ARCNUM 0x0001
26-
27-// Target operating system
28-// 1 : Windows 32bit
29-// 2 : Mac OSX 32bit
30-// 3 : blike for Linux
31-#ifdef _WIN32
32-#define DRV_OSNUM 0x0001
33-#endif
34-#ifdef __APPLE__
35-#define DRV_OSNUM 0x0002
36-#endif
37-#ifdef __linux__
38-#define DRV_OSNUM 0x0003
39-#endif
40-//#define DRV_OSNUM 0x0002
41-
42-// Decoder (syslib.ose) setting
43-// syslib.ose is necessary to work OSECPU
44-#define SYSLIB_OSE "syslib.ose"
45-
46-//
47-// Define constant values
48-//
49-
50-// SIGN1: The 2nd signature of OSECPU Format(05 e1)
51-// It will be changed in OSECPU Rev.2 to "e2" (no adaptation in their binary layers)
52-#define SIGN1 0xe1
53-
54-#define USE_DEBUGGER 1
55-#define USE_TEK5 1
56-
57-/* JITC mode flags */
58-#define JITC_LV_SLOWEST 0 /* デバッグ支援は何でもやる */
59-#define JITC_LV_SLOWER 1 /* エラーモジュールはレポートできるが、行番号は分からない、テストは過剰 */
60-#define JITC_LV_SAFE 2 /* とにかく止まる、場所は不明、テストは必要最小限 */
61-#define JITC_LV_FASTER 4 /* 情報は生成するがチェックをしない */
62-#define JITC_LV_FASTEST 5 /* 情報すら生成しない */
63-#define JITC_PHASE1 0x0001
64-#define JITC_SKIPCHECK 0x0002 /* セキュリティチェックを省略する(高速危険モード) */
65-#define JITC_NOSTARTUP 0x0004
66-#define JITC_MAXLABELS 4096
67-#define PTRCTRLSIZ 4096
68-
69-#define APPSIZ1 1 * 1024 * 1024 /* 1MB for now */
70-#define APPJITSIZE 1 * 1024 * 1024 /* 1MB for now */
71-#define SYSJITSIZ1 2 * 1024 * 1024 /* 1MB for now */
72-#define SYSLIBSIZ1 1 * 1024 * 1024 /* 1MB for now */
73-#define SYSTMP0SIZ 1 * 1024 * 1024 /* 1MB for now */
74-#define SYSTMP1SIZ 2 * 1024 * 1024 /* 1MB for now */
75-
76-#define KEYBUFSIZ 4096
77-
78-#define KEY_ENTER '\n'
79-#define KEY_ESC 27
80-#define KEY_BACKSPACE 8
81-#define KEY_TAB 9
82-#define KEY_PAGEUP 0x1020
83-#define KEY_PAGEDWN 0x1021
84-#define KEY_END 0x1022
85-#define KEY_HOME 0x1023
86-#define KEY_LEFT 0x1024
87-#define KEY_UP 0x1025
88-#define KEY_RIGHT 0x1026
89-#define KEY_DOWN 0x1027
90-#define KEY_INS 0x1028
91-#define KEY_DEL 0x1029
92-
93-//
94-// HOSECPU structures
95-//
96-typedef struct PtrCtrl HOSECPU_PointerControlTag;
97-struct PtrCtrl {
98- int liveSign;
99- int size, typ;
100- unsigned char *p0;
101-};
102-
103-typedef struct Ptr HOSECPU_PointerRegisterEntry;
104-struct Ptr {
105- // 32バイト(=256bit!)
106- unsigned char *p;
107-
108- /* static char *typName[] = {
109- "T_CODE", "T_VPTR", "T_SINT8", "T_UINT8",
110- "T_SINT16", "T_UINT16", "T_SINT32", "T_UINT32",
111- "T_SINT4", "T_UINT4", "T_SINT2", "T_UINT2",
112- "T_SINT1", "T_UINT1", "T_SINT12", "T_UINT12",
113- "T_SINT20", "T_UINT20", "T_SINT24", "T_UINT24",
114- "T_SINT28", "T_UINT28"
115- } ; */
116- int typ;
117- unsigned char *p0, *p1;
118- int liveSign;
119- HOSECPU_PointerControlTag *pls;
120- int flags, dummy; /* read/writeなど */
121-};
122-
123-typedef struct LabelTable HOSECPU_LabelListTag;
124-struct LabelTable {
125- unsigned char *p, *p1;
126- int opt;
127- /*
128- * default = -1
129- * TYP_CODE = 0
130- * T_UINT8 = 3
131- *
132- * 将来的には UInt8, SInt32, Flt64, UInt8, VPtr が使えるようになる http://osecpu.osask.jp/wiki/?page0053
133- */
134- int typ;
135-};
136-
137-typedef struct Device_Window HOSECPU_Device_Window;
138-struct Device_Window {
139- int *vram;
140- int xsize, ysize;
141-};
142-
143-typedef struct Regs HOSECPU_RuntimeEnvironment;
144-struct Regs {
145- int ireg[64]; // 整数レジスタ (4 * 64) = 256
146- HOSECPU_PointerRegisterEntry preg[64]; // ポインタレジスタ (32 * 64) = 2048
147- //
148- int debugInfo0; // 2304
149- int debugInfo1; // 2308
150- int dbg_currentCode; // 2312
151- int dmy; // 2316
152- //
153- HOSECPU_PointerControlTag *ptrCtrl; // 2320
154- char winClosed, autoSleep;
155- jmp_buf setjmpEnv;
156- int appReturnCode; // アプリ自体の終了コード
157-
158- /* Main environment */
159- int mainArgc; // HOSECPU起動引数の個数
160- const char **mainArgv; // HOSECPU起動引数リスト
161- unsigned char *appBin; // 実行するアプリのバイナリ
162- int appSize0;
163- int appSize1;
164- int executionLevel;
165-
166- /* for-junkApi */
167- unsigned char *buf0, *buf1, *junkStack, lastConsoleChar, *junkStack1;
168-
169- HOSECPU_LabelListTag *label;
170- int maxLabels;
171- unsigned char *jitbuf, *jitbuf1;
172- void(*errHndl)(HOSECPU_RuntimeEnvironment *);
173- char dbgr;
174- int mapDi1s[16][16];
175-};
176-
177-//
178-// Grobal values
179-//
180-
181-extern int *keybuf, keybuf_r, keybuf_w, keybuf_c;
182-extern HOSECPU_Device_Window mainWindow;
183-// di1_serial: デバッグ用。プログラム中の随所で加算される変数
184-extern int di1_serial;
185-
186-//
187-// Functions
188-//
189-
190-// @main.c
191-void putKeybuf(int i);
192-int HeavyOSECPUMain(int argc, char **argv);
193-
194-// @comlib.c
195-unsigned char *ComLib_main(const unsigned char *p, unsigned char *q);
196-// @dpndenv.c
197-// OSに依存する関数群を定義する。
198-void *mallocRWE(int bytes); // 実行権付きメモリのmalloc.
199-void drv_openWin(int x, int y, unsigned char *buf, char *winClosed);
200-void drv_flshWin(int sx, int sy, int x0, int y0);
201-void drv_sleep(int msec);
202-
203-// @function.c
204-void dbgrMain(HOSECPU_RuntimeEnvironment *r);
205-const char *searchArg(int argc, const char **argv, const char *tag, int i); // コマンドライン引数処理.
206-void devFunc(HOSECPU_RuntimeEnvironment *r); // junkApiを処理する関数
207-
208-// @jitc.c
209-void errorHandler(HOSECPU_RuntimeEnvironment *r);
210-void PRegCopy(HOSECPU_PointerRegisterEntry *dst, HOSECPU_PointerRegisterEntry *src);
211-// @jitcx86.c
212-int jitc0(unsigned char **qq, unsigned char *q1, const unsigned char *p0, const unsigned char *p1, int level, HOSECPU_LabelListTag *label);
213-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);
214-unsigned char *jitCompCallFunc(unsigned char *dst, void *func);
215-unsigned char *jitCompInit(unsigned char *dst);
216-void jitcRunBinary(void (*bin)(char *), HOSECPU_RuntimeEnvironment *env);
217-
218-// @randmt.c
219-void randStatInit(unsigned int seed);
220-void randStatNext();
221-unsigned int randGetNextUInt32(void);
222-
223-// @screen.c
224-static int iColor1[] = {
225- 0x000000, 0xff0000, 0x00ff00, 0xffff00,
226- 0x0000ff, 0xff00ff, 0x00ffff, 0xffffff
227-};
228-void putOsaskChar(int c, HOSECPU_RuntimeEnvironment *r);
229-void checkString(HOSECPU_RuntimeEnvironment *r, int rxx, int pxx);
230-void checkRect(HOSECPU_RuntimeEnvironment *r, int rxx);
231-int loadColor(HOSECPU_RuntimeEnvironment *r, int rxx);
232-
233-// @usetek.c
234-#if (USE_TEK5 != 0)
235-#include "tek.h"
236-int appackSub2(const UCHAR **pp, char *pif);
237-int appackSub3u(const UCHAR **pp, char *pif);
238-int tek5Decomp(UCHAR *buf, UCHAR *buf1, UCHAR *tmp);
239-#endif
240-
241-
242-#endif
243-
244->>>>>>> 4d5d6fa61ff576ba035ee4bd882e8476f2ceeb2b
1+#ifndef _HDLOAD_OSECPU
2+#define _HDLOAD_OSECPU 1
3+
4+/* Visual Studio で fopen()やsprintf() などの古い関数を使用する時に出る警告を抑止する*/
5+#define _CRT_SECURE_NO_WARNINGS 1
6+
7+//
8+// Including stdc headers
9+//
10+
11+#include <stdio.h>
12+#include <string.h>
13+#include <limits.h>
14+#include <time.h>
15+#include <setjmp.h>
16+#include <stdlib.h>
17+
18+
19+//
20+// Compile options
21+//
22+
23+// Target architecture
24+// 1 : i386
25+#define JITC_ARCNUM 0x0001
26+
27+// Target operating system
28+// 1 : Windows 32bit
29+// 2 : Mac OSX 32bit
30+// 3 : blike for Linux
31+#ifdef _WIN32
32+#define DRV_OSNUM 0x0001
33+#endif
34+#ifdef __APPLE__
35+#define DRV_OSNUM 0x0002
36+#endif
37+#ifdef __linux__
38+#define DRV_OSNUM 0x0003
39+#endif
40+//#define DRV_OSNUM 0x0002
41+
42+// Decoder (syslib.ose) setting
43+// syslib.ose is necessary to work OSECPU
44+#define SYSLIB_OSE "syslib.ose"
45+
46+//
47+// Define constant values
48+//
49+
50+// SIGN1: The 2nd signature of OSECPU Format(05 e1)
51+// It will be changed in OSECPU Rev.2 to "e2" (no adaptation in their binary layers)
52+#define SIGN1 0xe1
53+
54+#define USE_DEBUGGER 1
55+#define USE_TEK5 1
56+
57+/* JITC mode flags */
58+#define JITC_LV_SLOWEST 0 /* デバッグ支援は何でもやる */
59+#define JITC_LV_SLOWER 1 /* エラーモジュールはレポートできるが、行番号は分からない、テストは過剰 */
60+#define JITC_LV_SAFE 2 /* とにかく止まる、場所は不明、テストは必要最小限 */
61+#define JITC_LV_FASTER 4 /* 情報は生成するがチェックをしない */
62+#define JITC_LV_FASTEST 5 /* 情報すら生成しない */
63+#define JITC_PHASE1 0x0001
64+#define JITC_SKIPCHECK 0x0002 /* セキュリティチェックを省略する(高速危険モード) */
65+#define JITC_NOSTARTUP 0x0004
66+#define JITC_MAXLABELS 4096
67+#define PTRCTRLSIZ 4096
68+
69+#define APPSIZ1 1 * 1024 * 1024 /* 1MB for now */
70+#define APPJITSIZE 1 * 1024 * 1024 /* 1MB for now */
71+#define SYSJITSIZ1 2 * 1024 * 1024 /* 1MB for now */
72+#define SYSLIBSIZ1 1 * 1024 * 1024 /* 1MB for now */
73+#define SYSTMP0SIZ 1 * 1024 * 1024 /* 1MB for now */
74+#define SYSTMP1SIZ 2 * 1024 * 1024 /* 1MB for now */
75+
76+#define KEYBUFSIZ 4096
77+
78+#define KEY_ENTER '\n'
79+#define KEY_ESC 27
80+#define KEY_BACKSPACE 8
81+#define KEY_TAB 9
82+#define KEY_PAGEUP 0x1020
83+#define KEY_PAGEDWN 0x1021
84+#define KEY_END 0x1022
85+#define KEY_HOME 0x1023
86+#define KEY_LEFT 0x1024
87+#define KEY_UP 0x1025
88+#define KEY_RIGHT 0x1026
89+#define KEY_DOWN 0x1027
90+#define KEY_INS 0x1028
91+#define KEY_DEL 0x1029
92+
93+//
94+// HOSECPU structures
95+//
96+typedef struct PtrCtrl HOSECPU_PointerControlTag;
97+struct PtrCtrl {
98+ int liveSign;
99+ int size, typ;
100+ unsigned char *p0;
101+};
102+
103+typedef struct Ptr HOSECPU_PointerRegisterEntry;
104+struct Ptr {
105+ // 32バイト(=256bit!)
106+ unsigned char *p;
107+
108+ /* static char *typName[] = {
109+ "T_CODE", "T_VPTR", "T_SINT8", "T_UINT8",
110+ "T_SINT16", "T_UINT16", "T_SINT32", "T_UINT32",
111+ "T_SINT4", "T_UINT4", "T_SINT2", "T_UINT2",
112+ "T_SINT1", "T_UINT1", "T_SINT12", "T_UINT12",
113+ "T_SINT20", "T_UINT20", "T_SINT24", "T_UINT24",
114+ "T_SINT28", "T_UINT28"
115+ } ; */
116+ int typ;
117+ unsigned char *p0, *p1;
118+ int liveSign;
119+ HOSECPU_PointerControlTag *pls;
120+ int flags, dummy; /* read/writeなど */
121+};
122+
123+typedef struct LabelTable HOSECPU_LabelListTag;
124+struct LabelTable {
125+ unsigned char *p, *p1;
126+ int opt;
127+ /*
128+ * default = -1
129+ * TYP_CODE = 0
130+ * T_UINT8 = 3
131+ *
132+ * 将来的には UInt8, SInt32, Flt64, UInt8, VPtr が使えるようになる http://osecpu.osask.jp/wiki/?page0053
133+ */
134+ int typ;
135+};
136+
137+typedef struct Device_Window HOSECPU_Device_Window;
138+struct Device_Window {
139+ int *vram;
140+ int xsize, ysize;
141+};
142+
143+typedef struct Regs HOSECPU_RuntimeEnvironment;
144+struct Regs {
145+ int ireg[64]; // 整数レジスタ (4 * 64) = 256
146+ HOSECPU_PointerRegisterEntry preg[64]; // ポインタレジスタ (32 * 64) = 2048
147+ //
148+ int debugInfo0; // 2304
149+ int debugInfo1; // 2308
150+ int dbg_currentCode; // 2312
151+ int dmy; // 2316
152+ //
153+ HOSECPU_PointerControlTag *ptrCtrl; // 2320
154+ char winClosed, autoSleep;
155+ jmp_buf setjmpEnv;
156+ int appReturnCode; // アプリ自体の終了コード
157+
158+ /* Main environment */
159+ int mainArgc; // HOSECPU起動引数の個数
160+ const char **mainArgv; // HOSECPU起動引数リスト
161+ unsigned char *appBin; // 実行するアプリのバイナリ
162+ int appSize0;
163+ int appSize1;
164+ int executionLevel;
165+
166+ /* for-junkApi */
167+ unsigned char *buf0, *buf1, *junkStack, lastConsoleChar, *junkStack1;
168+
169+ HOSECPU_LabelListTag *label;
170+ int maxLabels;
171+ unsigned char *jitbuf, *jitbuf1;
172+ void(*errHndl)(HOSECPU_RuntimeEnvironment *);
173+ char dbgr;
174+ int mapDi1s[16][16];
175+};
176+
177+//
178+// Grobal values
179+//
180+
181+extern int *keybuf, keybuf_r, keybuf_w, keybuf_c;
182+extern HOSECPU_Device_Window mainWindow;
183+// di1_serial: デバッグ用。プログラム中の随所で加算される変数
184+extern int di1_serial;
185+
186+//
187+// Functions
188+//
189+
190+// @main.c
191+void putKeybuf(int i);
192+int HeavyOSECPUMain(int argc, char **argv);
193+
194+// @comlib.c
195+unsigned char *ComLib_main(const unsigned char *p, unsigned char *q);
196+// @dpndenv.c
197+// OSに依存する関数群を定義する。
198+void *mallocRWE(int bytes); // 実行権付きメモリのmalloc.
199+void drv_openWin(int x, int y, unsigned char *buf, char *winClosed);
200+void drv_flshWin(int sx, int sy, int x0, int y0);
201+void drv_sleep(int msec);
202+
203+// @function.c
204+void dbgrMain(HOSECPU_RuntimeEnvironment *r);
205+const char *searchArg(int argc, const char **argv, const char *tag, int i); // コマンドライン引数処理.
206+void devFunc(HOSECPU_RuntimeEnvironment *r); // junkApiを処理する関数
207+
208+// @jitc.c
209+void errorHandler(HOSECPU_RuntimeEnvironment *r);
210+void PRegCopy(HOSECPU_PointerRegisterEntry *dst, HOSECPU_PointerRegisterEntry *src);
211+// @jitcx86.c
212+int jitc0(unsigned char **qq, unsigned char *q1, const unsigned char *p0, const unsigned char *p1, int level, HOSECPU_LabelListTag *label);
213+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);
214+unsigned char *jitCompCallFunc(unsigned char *dst, void *func);
215+unsigned char *jitCompInit(unsigned char *dst);
216+void jitcRunBinary(void (*bin)(char *), HOSECPU_RuntimeEnvironment *env);
217+
218+// @randmt.c
219+void randStatInit(unsigned int seed);
220+void randStatNext();
221+unsigned int randGetNextUInt32(void);
222+
223+// @screen.c
224+static int iColor1[] = {
225+ 0x000000, 0xff0000, 0x00ff00, 0xffff00,
226+ 0x0000ff, 0xff00ff, 0x00ffff, 0xffffff
227+};
228+void putOsaskChar(int c, HOSECPU_RuntimeEnvironment *r);
229+void checkString(HOSECPU_RuntimeEnvironment *r, int rxx, int pxx);
230+void checkRect(HOSECPU_RuntimeEnvironment *r, int rxx);
231+int loadColor(HOSECPU_RuntimeEnvironment *r, int rxx);
232+
233+// @usetek.c
234+#if (USE_TEK5 != 0)
235+#include "tek.h"
236+int appackSub2(const UCHAR **pp, char *pif);
237+int appackSub3u(const UCHAR **pp, char *pif);
238+int tek5Decomp(UCHAR *buf, UCHAR *buf1, UCHAR *tmp);
239+#endif
240+
241+
242+#endif
Show on old repository browser