BASIC compiler/interpreter for PIC32MX/MZ-80K
Revisão | f81f9d3fead459994e153f67a328ca5ad7ac1e77 (tree) |
---|---|
Hora | 2019-05-06 08:03:24 |
Autor | Katsumi <kmorimatsu@sour...> |
Commiter | Katsumi |
OBJECTSECTION in Zoea
@@ -104,7 +104,8 @@ _GEN_EXCPT_ADDR = _ebase_address + 0x180; | ||
104 | 104 | *************************************************************************/ |
105 | 105 | MEMORY |
106 | 106 | { |
107 | - kseg0_program_mem (rx) : ORIGIN = (0x9D006000 + 0x1000 + 0x490), LENGTH = 0x40000 - (0x6000 + 0x1000 + 0x490) /* All C Files will be located here */ | |
107 | + kseg0_program_mem (rx) : ORIGIN = (0x9D006000 + 0x1000 + 0x490), LENGTH = 0x40000 - 0xD000 - (0x6000 + 0x1000 + 0x490) /* Most C Functions will be located here */ | |
108 | + kseg2_program_mem (rx) : ORIGIN = (0x9D040000 - (0xD000-4)), LENGTH = 0xD000 -4 /* Some C Functions (editor and compiler) will be located here */ | |
108 | 109 | exception_mem : ORIGIN = 0x9D006000, LENGTH = 0x1000 /* Interrupt vector table */ |
109 | 110 | debug_exec_mem : ORIGIN = 0x9FC00490, LENGTH = 0x760 |
110 | 111 | kseg0_boot_mem : ORIGIN = 0x9D006000, LENGTH = 0x0 /* This memory region is dummy */ |
@@ -118,6 +119,18 @@ MEMORY | ||
118 | 119 | configsfrs : ORIGIN = 0xBFC00BF0, LENGTH = 0x10 |
119 | 120 | } |
120 | 121 | |
122 | + | |
123 | +/* | |
124 | + * MachiKania specific section containing some functions for editor and compiler | |
125 | + */ | |
126 | + | |
127 | +SECTIONS | |
128 | +{ | |
129 | + .machikania_object : { | |
130 | + KEEP(*(.machikania_object)) | |
131 | + } > kseg2_program_mem | |
132 | +} | |
133 | + | |
121 | 134 | /************************************************************************* |
122 | 135 | * Configuration-word sections. Map the config-pragma input sections to |
123 | 136 | * absolute-address output sections. |
@@ -163,11 +163,7 @@ char* compile_line(void){ | ||
163 | 163 | printstr(resolve_label(g_line)); |
164 | 164 | return ERR_MULTIPLE_LABEL; |
165 | 165 | } |
166 | -<<<<<<< HEAD | |
167 | - if (!g_nolinenum) { | |
168 | -======= | |
169 | 166 | if (!g_option_nolinenum) { |
170 | ->>>>>>> remotes/origin/timer | |
171 | 167 | check_obj_space(1); |
172 | 168 | g_object[g_objpos++]=0x34160000|g_line; //ori s6,zero,xxxx; |
173 | 169 | } |
@@ -214,11 +214,7 @@ extern int g_var_mem[ALLOC_BLOCK_NUM]; | ||
214 | 214 | extern unsigned short g_var_pointer[ALLOC_BLOCK_NUM]; |
215 | 215 | extern unsigned short g_var_size[ALLOC_BLOCK_NUM]; |
216 | 216 | extern char g_temp_area_used; |
217 | -<<<<<<< HEAD | |
218 | -extern char g_nolinenum; | |
219 | -======= | |
220 | 217 | extern char g_option_nolinenum; |
221 | ->>>>>>> remotes/origin/timer | |
222 | 218 | extern int* g_heap_mem; |
223 | 219 | extern int g_max_mem; |
224 | 220 | extern char g_disable_break; |
@@ -455,6 +451,9 @@ char* interrupt_statement(); | ||
455 | 451 | |
456 | 452 | /* Macros */ |
457 | 453 | |
454 | +// For object section | |
455 | +#define OBJECTSECTION __attribute__((section(".machikania_object"))) | |
456 | + | |
458 | 457 | // Lables as 31 bit integer |
459 | 458 | #define LABEL_INIT 0x0008727b |
460 | 459 |
@@ -228,11 +228,6 @@ static const char initext[]= | ||
228 | 228 | "#PRINT\n"; |
229 | 229 | |
230 | 230 | static const char bastext[]= |
231 | -<<<<<<< HEAD | |
232 | -"REM 1\n" | |
233 | -"REM 2\n" | |
234 | -"REM 3\n" | |
235 | -======= | |
236 | 231 | "USECLASS CLASS1,CLASS2\n" |
237 | 232 | "OPTION FASTFIELD\n" |
238 | 233 | "CLS\n" |
@@ -240,11 +235,8 @@ static const char bastext[]= | ||
240 | 235 | "o.T1=123\n" |
241 | 236 | "print o.T2()\n" |
242 | 237 | "\n" |
243 | ->>>>>>> remotes/origin/timer | |
244 | 238 | "\n" |
245 | -"CLS\n" | |
246 | 239 | "\n" |
247 | -"LABEL TST:PRINT\n" | |
248 | 240 | "\n"; |
249 | 241 | |
250 | 242 | static const char class1text[]= |
@@ -74,7 +74,7 @@ const unsigned char Message2[]="File System Error\n"; | ||
74 | 74 | const unsigned char Message3[]="Retry:[Enter] / Quit:[ESC]\n"; |
75 | 75 | const unsigned char ROOTDIR[]="\\"; |
76 | 76 | |
77 | -unsigned char * editormalloc(int size){ | |
77 | +OBJECTSECTION unsigned char * editormalloc(int size){ | |
78 | 78 | //配列RAM[]内にサイズsizeの領域を確保し、先頭アドレスを返す |
79 | 79 | //確保できない場合は、エラー表示し動作停止 |
80 | 80 | unsigned char *p; |
@@ -93,7 +93,7 @@ void wait60thsec(unsigned short n){ | ||
93 | 93 | while(drawcount!=n) asm(WAIT); |
94 | 94 | } |
95 | 95 | |
96 | -unsigned int bpixtopos(_tbuf *bp,unsigned int ix){ | |
96 | +OBJECTSECTION unsigned int bpixtopos(_tbuf *bp,unsigned int ix){ | |
97 | 97 | // テキストバッファ上の位置からテキスト全体の先頭から何文字目かを返す |
98 | 98 | // bp:テキストバッファポインタ |
99 | 99 | // ix:bp->Bufの先頭からの文字数 |
@@ -108,7 +108,7 @@ unsigned int bpixtopos(_tbuf *bp,unsigned int ix){ | ||
108 | 108 | } |
109 | 109 | return pos+ix; |
110 | 110 | } |
111 | -_tbuf * postobpix(int pos,unsigned short *pix){ | |
111 | +OBJECTSECTION _tbuf * postobpix(int pos,unsigned short *pix){ | |
112 | 112 | // テキスト全体の先頭からpos文字目のテキストバッファ上の位置を返す |
113 | 113 | // 戻り値 テキストバッファポインタ |
114 | 114 | // *pix(戻り値):戻り値テキストバッファの先頭からの位置(ポインタ渡し) |
@@ -127,7 +127,7 @@ _tbuf * postobpix(int pos,unsigned short *pix){ | ||
127 | 127 | *pix=pos; |
128 | 128 | return bp; |
129 | 129 | } |
130 | -_tbuf * linetobpix(int line,unsigned short *pix){ | |
130 | +OBJECTSECTION _tbuf * linetobpix(int line,unsigned short *pix){ | |
131 | 131 | // テキスト全体の先頭からline行目のテキストバッファ上の位置を返す |
132 | 132 | // 戻り値 テキストバッファポインタ |
133 | 133 | // *pix(戻り値):戻り値テキストバッファの先頭からの位置(ポインタ渡し) |
@@ -157,7 +157,7 @@ _tbuf * linetobpix(int line,unsigned short *pix){ | ||
157 | 157 | return bp2; |
158 | 158 | } |
159 | 159 | |
160 | -_tbuf * newTBuf(_tbuf *prev){ | |
160 | +OBJECTSECTION _tbuf * newTBuf(_tbuf *prev){ | |
161 | 161 | // 新しいテキストバッファ1行を生成 |
162 | 162 | // prev:挿入先の行(prevの後ろに追加) |
163 | 163 | // 戻り値 生成したバッファへのポインタ、生成できない場合NULL |
@@ -180,7 +180,7 @@ _tbuf * newTBuf(_tbuf *prev){ | ||
180 | 180 | return bp; |
181 | 181 | } |
182 | 182 | |
183 | -_tbuf * deleteTBuf(_tbuf *bp){ | |
183 | +OBJECTSECTION _tbuf * deleteTBuf(_tbuf *bp){ | |
184 | 184 | // テキストバッファの削除 |
185 | 185 | // bp:削除する行のポインタ |
186 | 186 | // 戻り値 削除前の次のバッファへのポインタ、ない場合NULL |
@@ -226,7 +226,7 @@ UNDOBUFSIZE | ||
226 | 226 | UNDO_CONTDEL,繰り返し数,消去文字列,開始位置,繰り返し数,UNDO_CONTDEL |
227 | 227 | */ |
228 | 228 | |
229 | -void pushundomem(unsigned char c){ | |
229 | +OBJECTSECTION void pushundomem(unsigned char c){ | |
230 | 230 | // アンドゥ用メモリの先頭に1バイトを貯める |
231 | 231 | // 空きがなくなった場合、最後尾の1命令分を無効化 |
232 | 232 | unsigned char *p; |
@@ -267,12 +267,12 @@ void pushundomem(unsigned char c){ | ||
267 | 267 | if(undobuf_top>=undobuf+UNDOBUFSIZE) undobuf_top-=UNDOBUFSIZE; |
268 | 268 | undobuf_used++; |
269 | 269 | } |
270 | -void pushundomem2(unsigned short w){ | |
270 | +OBJECTSECTION void pushundomem2(unsigned short w){ | |
271 | 271 | // アンドゥバッファに2バイト貯める、下位、上位の順 |
272 | 272 | pushundomem((unsigned char)w); |
273 | 273 | pushundomem(w>>8); |
274 | 274 | } |
275 | -unsigned char popundomem(){ | |
275 | +OBJECTSECTION unsigned char popundomem(){ | |
276 | 276 | // アンドゥバッファから1バイト読み出し、先頭を1つ戻す |
277 | 277 | // 戻り値:読み出したコード |
278 | 278 | undobuf_top--; |
@@ -280,7 +280,7 @@ unsigned char popundomem(){ | ||
280 | 280 | undobuf_used--; |
281 | 281 | return *undobuf_top; |
282 | 282 | } |
283 | -unsigned short popundomem2(){ | |
283 | +OBJECTSECTION unsigned short popundomem2(){ | |
284 | 284 | // アンドゥバッファから2バイト読み出し |
285 | 285 | // 戻り値:読み出した2バイトコード |
286 | 286 | unsigned short w; |
@@ -288,7 +288,7 @@ unsigned short popundomem2(){ | ||
288 | 288 | w+=popundomem(); |
289 | 289 | return w; |
290 | 290 | } |
291 | -void setundobuf(int com,_tbuf *bp,unsigned short ix,unsigned char c,unsigned short n){ | |
291 | +OBJECTSECTION void setundobuf(int com,_tbuf *bp,unsigned short ix,unsigned char c,unsigned short n){ | |
292 | 292 | //アンドゥバッファにデータをセットする |
293 | 293 | //com:コマンド 1:1文字削除、2:1文字上書き、3:1文字挿入、4:連続削除、5:連続挿入開始 |
294 | 294 | //bp,ix:バッファ上の実行場所(カーソル位置) |
@@ -324,7 +324,7 @@ void setundobuf(int com,_tbuf *bp,unsigned short ix,unsigned char c,unsigned sho | ||
324 | 324 | } |
325 | 325 | } |
326 | 326 | |
327 | -int insertchar(_tbuf *bp,unsigned int ix,unsigned char c,int undo){ | |
327 | +OBJECTSECTION int insertchar(_tbuf *bp,unsigned int ix,unsigned char c,int undo){ | |
328 | 328 | //テキストバッファbpの先頭からixバイトの位置にcを挿入 |
329 | 329 | //undo 0:通常(アンドゥバッファに格納する)、1:連続挿入中、2:アンドゥ中 |
330 | 330 | //戻り値 成功:0、不正または容量オーバー:-1、空きがあるはずなのに失敗:1 |
@@ -362,7 +362,7 @@ int insertchar(_tbuf *bp,unsigned int ix,unsigned char c,int undo){ | ||
362 | 362 | return 0; |
363 | 363 | } |
364 | 364 | |
365 | -int overwritechar(_tbuf *bp,unsigned int ix,unsigned char c,int undo){ | |
365 | +OBJECTSECTION int overwritechar(_tbuf *bp,unsigned int ix,unsigned char c,int undo){ | |
366 | 366 | //テキストバッファbpの先頭からixバイトの位置をcで上書き |
367 | 367 | //undo 0:通常(アンドゥバッファに格納する)、1:連続中、2:アンドゥ中 |
368 | 368 | //戻り値 成功:0、不正または容量オーバー:-1、空きがあるはずなのに失敗:1 |
@@ -383,7 +383,7 @@ int overwritechar(_tbuf *bp,unsigned int ix,unsigned char c,int undo){ | ||
383 | 383 | return 0; |
384 | 384 | } |
385 | 385 | |
386 | -void deletechar(_tbuf *bp,unsigned int ix,int undo){ | |
386 | +OBJECTSECTION void deletechar(_tbuf *bp,unsigned int ix,int undo){ | |
387 | 387 | //テキストバッファbpの先頭からixバイトの位置の1バイト削除 |
388 | 388 | //undo -1:通常BackSpace(アンドゥバッファに格納する) |
389 | 389 | // 0:通常DELETE(アンドゥバッファに格納する)、1:連続中、2:アンドゥ中 |
@@ -407,7 +407,7 @@ void deletechar(_tbuf *bp,unsigned int ix,int undo){ | ||
407 | 407 | if(bp->next==NULL) return; //全体の最後の場合、何もしない |
408 | 408 | deletechar(bp->next,0,undo); //次の行の先頭文字を削除 |
409 | 409 | } |
410 | -int gabagecollect1(void){ | |
410 | +OBJECTSECTION int gabagecollect1(void){ | |
411 | 411 | //断片化されたテキストバッファの隙間を埋めるガベージコレクション |
412 | 412 | //カーソルの前と後ろそれぞれ探索して最初の1バイト分のみ実施 |
413 | 413 | //戻り値 1バイトでも移動した場合:1、なかった場合:0 |
@@ -476,11 +476,11 @@ int gabagecollect1(void){ | ||
476 | 476 | if(bp->n == 0) deleteTBuf(bp); |
477 | 477 | return f; |
478 | 478 | } |
479 | -void gabagecollect2(void){ | |
479 | +OBJECTSECTION void gabagecollect2(void){ | |
480 | 480 | // 変化がなくなるまで1バイト分のガベージコレクションを呼び出し |
481 | 481 | while(gabagecollect1()) ; |
482 | 482 | } |
483 | -void inittextbuf(void){ | |
483 | +OBJECTSECTION void inittextbuf(void){ | |
484 | 484 | // テキストバッファの初期化 |
485 | 485 | _tbuf *bp; |
486 | 486 | for(bp=TextBuffer;bp<TextBuffer+TBUFMAXLINE;bp++) bp->prev=NULL; //未使用バッファ化 |
@@ -492,7 +492,7 @@ void inittextbuf(void){ | ||
492 | 492 | undobuf_top=undobuf; |
493 | 493 | undobuf_used=0; |
494 | 494 | } |
495 | -void redraw(){ | |
495 | +OBJECTSECTION void redraw(){ | |
496 | 496 | //画面の再描画 |
497 | 497 | unsigned char *vp; |
498 | 498 | _tbuf *bp,*bp1,*bp2; |
@@ -576,7 +576,7 @@ void redraw(){ | ||
576 | 576 | } |
577 | 577 | } |
578 | 578 | |
579 | -void cursor_left(void){ | |
579 | +OBJECTSECTION void cursor_left(void){ | |
580 | 580 | //カーソルを1つ前に移動 |
581 | 581 | //出力:下記変数を移動先の値に変更 |
582 | 582 | //cursorbp,cursorix バッファ上のカーソル位置 |
@@ -687,7 +687,7 @@ void cursor_left(void){ | ||
687 | 687 | disptopbp=bp; |
688 | 688 | disptopix=ix; |
689 | 689 | } |
690 | -void cursor_right(void){ | |
690 | +OBJECTSECTION void cursor_right(void){ | |
691 | 691 | //カーソルを1つ後ろに移動 |
692 | 692 | //出力:下記変数を移動先の値に変更 |
693 | 693 | //cursorbp,cursorix バッファ上のカーソル位置 |
@@ -746,7 +746,7 @@ void cursor_right(void){ | ||
746 | 746 | disptopbp=bp; |
747 | 747 | disptopix=ix; |
748 | 748 | } |
749 | -void cursor_up(void){ | |
749 | +OBJECTSECTION void cursor_up(void){ | |
750 | 750 | //カーソルを1つ上に移動 |
751 | 751 | //出力:下記変数を移動先の値に変更 |
752 | 752 | //cursorbp,cursorix バッファ上のカーソル位置 |
@@ -853,7 +853,7 @@ void cursor_up(void){ | ||
853 | 853 | disptopbp=bp; |
854 | 854 | disptopix=ix; |
855 | 855 | } |
856 | -void cursor_down(void){ | |
856 | +OBJECTSECTION void cursor_down(void){ | |
857 | 857 | //カーソルを1つ下に移動 |
858 | 858 | //出力:下記変数を移動先の値に変更 |
859 | 859 | //cursorbp,cursorix バッファ上のカーソル位置 |
@@ -925,7 +925,7 @@ void cursor_down(void){ | ||
925 | 925 | disptopbp=bp; |
926 | 926 | disptopix=ix; |
927 | 927 | } |
928 | -void cursor_home(void){ | |
928 | +OBJECTSECTION void cursor_home(void){ | |
929 | 929 | //カーソルを行先頭に移動 |
930 | 930 | //出力:下記変数を移動先の値に変更 |
931 | 931 | //cursorbp,cursorix バッファ上のカーソル位置 |
@@ -946,7 +946,7 @@ void cursor_home(void){ | ||
946 | 946 | } |
947 | 947 | cx2=0; |
948 | 948 | } |
949 | -void cursor_end(void){ | |
949 | +OBJECTSECTION void cursor_end(void){ | |
950 | 950 | //カーソルを行末に移動 |
951 | 951 | //出力:下記変数を移動先の値に変更 |
952 | 952 | //cursorbp,cursorix バッファ上のカーソル位置 |
@@ -970,7 +970,7 @@ void cursor_end(void){ | ||
970 | 970 | } |
971 | 971 | cx2=cx; |
972 | 972 | } |
973 | -void cursor_pageup(void){ | |
973 | +OBJECTSECTION void cursor_pageup(void){ | |
974 | 974 | //PageUpキー |
975 | 975 | //最上行が最下行になるまでスクロール |
976 | 976 | //出力:下記変数を移動先の値に変更 |
@@ -996,7 +996,7 @@ void cursor_pageup(void){ | ||
996 | 996 | //元のY座標までカーソルを下に移動、1行も動かなかった場合は最上行に留まる |
997 | 997 | if(i>0) while(cy<cy_old) cursor_down(); |
998 | 998 | } |
999 | -void cursor_pagedown(void){ | |
999 | +OBJECTSECTION void cursor_pagedown(void){ | |
1000 | 1000 | //PageDownキー |
1001 | 1001 | //最下行が最上行になるまでスクロール |
1002 | 1002 | //出力:下記変数を移動先の値に変更 |
@@ -1028,7 +1028,7 @@ void cursor_pagedown(void){ | ||
1028 | 1028 | //下端からさらに移動した行数分、カーソルを上に移動、1行も動かなかった場合は最下行に留まる |
1029 | 1029 | if(i>0) while(cy>cy_old) cursor_up(); |
1030 | 1030 | } |
1031 | -void cursor_top(void){ | |
1031 | +OBJECTSECTION void cursor_top(void){ | |
1032 | 1032 | //カーソルをテキストバッファの先頭に移動 |
1033 | 1033 | cursorbp=TBufstart; |
1034 | 1034 | cursorix=0; |
@@ -1041,7 +1041,7 @@ void cursor_top(void){ | ||
1041 | 1041 | line_no=1; |
1042 | 1042 | } |
1043 | 1043 | |
1044 | -int countarea(void){ | |
1044 | +OBJECTSECTION int countarea(void){ | |
1045 | 1045 | //テキストバッファの指定範囲の文字数をカウント |
1046 | 1046 | //範囲は(cursorbp,cursorix)と(cursorbp1,cursorix1)で指定 |
1047 | 1047 | //後ろ側の一つ前の文字までをカウント |
@@ -1076,7 +1076,7 @@ int countarea(void){ | ||
1076 | 1076 | } |
1077 | 1077 | } |
1078 | 1078 | } |
1079 | -void deletearea_len(_tbuf *bp,unsigned int ix,int n,int undo){ | |
1079 | +OBJECTSECTION void deletearea_len(_tbuf *bp,unsigned int ix,int n,int undo){ | |
1080 | 1080 | //テキストバッファの指定位置から複数文字削除 |
1081 | 1081 | //bp,ix:削除開始位置 |
1082 | 1082 | //n:削除する文字数 |
@@ -1115,7 +1115,7 @@ void deletearea_len(_tbuf *bp,unsigned int ix,int n,int undo){ | ||
1115 | 1115 | n--; |
1116 | 1116 | } |
1117 | 1117 | } |
1118 | -void deletearea(void){ | |
1118 | +OBJECTSECTION void deletearea(void){ | |
1119 | 1119 | //テキストバッファの指定範囲を削除 |
1120 | 1120 | //範囲は(cursorbp,cursorix)と(cursorbp1,cursorix1)で指定 |
1121 | 1121 | //後ろ側の一つ前の文字までを削除 |
@@ -1150,7 +1150,7 @@ void deletearea(void){ | ||
1150 | 1150 | pushundomem2(n); |
1151 | 1151 | pushundomem(UNDO_CONTDEL); |
1152 | 1152 | } |
1153 | -void clipcopy(void){ | |
1153 | +OBJECTSECTION void clipcopy(void){ | |
1154 | 1154 | // 選択範囲をクリップボードにコピー |
1155 | 1155 | _tbuf *bp1,*bp2; |
1156 | 1156 | int ix1,ix2; |
@@ -1186,7 +1186,7 @@ void clipcopy(void){ | ||
1186 | 1186 | } |
1187 | 1187 | } |
1188 | 1188 | } |
1189 | -void clippaste(void){ | |
1189 | +OBJECTSECTION void clippaste(void){ | |
1190 | 1190 | // クリップボードから貼り付け |
1191 | 1191 | int n,i; |
1192 | 1192 | unsigned char *p; |
@@ -1206,7 +1206,7 @@ void clippaste(void){ | ||
1206 | 1206 | p++; |
1207 | 1207 | } |
1208 | 1208 | } |
1209 | -void movecursor(int pos){ | |
1209 | +OBJECTSECTION void movecursor(int pos){ | |
1210 | 1210 | // カーソルを現在の位置から任意の位置に移動 |
1211 | 1211 | // pos:移動したいテキストバッファ先頭からのバイト位置 |
1212 | 1212 | int pos2,d; |
@@ -1226,7 +1226,7 @@ void movecursor(int pos){ | ||
1226 | 1226 | } |
1227 | 1227 | } |
1228 | 1228 | } |
1229 | -void undoexec(){ | |
1229 | +OBJECTSECTION void undoexec(){ | |
1230 | 1230 | //アンドゥ実行 |
1231 | 1231 | unsigned char c,c1; |
1232 | 1232 | _tbuf *bp; |
@@ -1286,7 +1286,7 @@ void undoexec(){ | ||
1286 | 1286 | } |
1287 | 1287 | } |
1288 | 1288 | |
1289 | -void set_areamode(){ | |
1289 | +OBJECTSECTION void set_areamode(){ | |
1290 | 1290 | //範囲選択モード開始時のカーソル開始位置グローバル変数設定 |
1291 | 1291 | cursorbp1=cursorbp; |
1292 | 1292 | cursorix1=cursorix; |
@@ -1294,7 +1294,7 @@ void set_areamode(){ | ||
1294 | 1294 | cy1=cy; |
1295 | 1295 | line_no1=line_no; |
1296 | 1296 | } |
1297 | -void save_cursor(void){ | |
1297 | +OBJECTSECTION void save_cursor(void){ | |
1298 | 1298 | //カーソル関連グローバル変数を一時避難 |
1299 | 1299 | cursorbp_t=cursorbp; |
1300 | 1300 | cursorix_t=cursorix; |
@@ -1304,7 +1304,7 @@ void save_cursor(void){ | ||
1304 | 1304 | cy_t=cy; |
1305 | 1305 | line_no_t=line_no; |
1306 | 1306 | } |
1307 | -void restore_cursor(void){ | |
1307 | +OBJECTSECTION void restore_cursor(void){ | |
1308 | 1308 | //カーソル関連グローバル変数を一時避難場所から戻す |
1309 | 1309 | cursorbp=cursorbp_t; |
1310 | 1310 | cursorix=cursorix_t; |
@@ -1315,7 +1315,7 @@ void restore_cursor(void){ | ||
1315 | 1315 | line_no=line_no_t; |
1316 | 1316 | } |
1317 | 1317 | |
1318 | -int filesystemretry(){ | |
1318 | +OBJECTSECTION int filesystemretry(){ | |
1319 | 1319 | // SDファイルシステムの再初期化確認と実施 |
1320 | 1320 | // SDファイルへの保存や読み込み時にファイルエラーが発生した場合に呼び出す |
1321 | 1321 | // 戻り値 0:初期化成功、-1:成功することなくEscapeで抜けた |
@@ -1337,7 +1337,7 @@ int filesystemretry(){ | ||
1337 | 1337 | } |
1338 | 1338 | } |
1339 | 1339 | |
1340 | -int sdfilecopy(char *sourcefile,char *distfile){ | |
1340 | +OBJECTSECTION int sdfilecopy(char *sourcefile,char *distfile){ | |
1341 | 1341 | // SDカード上のファイルをコピー |
1342 | 1342 | // soucefile:コピー元ファイル名 |
1343 | 1343 | // distfile:コピー先ファイル名 |
@@ -1370,7 +1370,7 @@ int sdfilecopy(char *sourcefile,char *distfile){ | ||
1370 | 1370 | FSfclose(dfp); |
1371 | 1371 | return er; |
1372 | 1372 | } |
1373 | -int savetextfile(char *filename){ | |
1373 | +OBJECTSECTION int savetextfile(char *filename){ | |
1374 | 1374 | // テキストバッファをテキストファイルに書き込み |
1375 | 1375 | // 書き込み成功で0、失敗でエラーコード(負数)を返す |
1376 | 1376 | FSFILE *fp; |
@@ -1414,7 +1414,7 @@ int savetextfile(char *filename){ | ||
1414 | 1414 | FSfclose(fp); |
1415 | 1415 | return er; |
1416 | 1416 | } |
1417 | -int loadtextfile(char *filename){ | |
1417 | +OBJECTSECTION int loadtextfile(char *filename){ | |
1418 | 1418 | // テキストファイルをテキストバッファに読み込み |
1419 | 1419 | // 読み込み成功で0、失敗でエラーコード(負数)を返す |
1420 | 1420 | FSFILE *fp; |
@@ -1463,7 +1463,7 @@ int loadtextfile(char *filename){ | ||
1463 | 1463 | } |
1464 | 1464 | return er; |
1465 | 1465 | } |
1466 | -int overwritecheck(char *fn){ | |
1466 | +OBJECTSECTION int overwritecheck(char *fn){ | |
1467 | 1467 | // ファイルの上書き確認 |
1468 | 1468 | // ファイルの存在をチェックし、存在する場合キーボードから上書き確認する |
1469 | 1469 | // fn:ファイル名へのポインタ |
@@ -1483,7 +1483,7 @@ int overwritecheck(char *fn){ | ||
1483 | 1483 | if(vk==VK_ESCAPE) return -1; |
1484 | 1484 | } |
1485 | 1485 | } |
1486 | -void printfilename(unsigned char x,unsigned char y,int f,int num_dir){ | |
1486 | +OBJECTSECTION void printfilename(unsigned char x,unsigned char y,int f,int num_dir){ | |
1487 | 1487 | // x,yの位置にファイル名またはディレクトリ名を表示 |
1488 | 1488 | |
1489 | 1489 | if(f==-2){ |
@@ -1509,7 +1509,7 @@ void printfilename(unsigned char x,unsigned char y,int f,int num_dir){ | ||
1509 | 1509 | printstr(filenames[f]); |
1510 | 1510 | } |
1511 | 1511 | } |
1512 | -int select_dir_file(int filenum,int num_dir, unsigned char* msg){ | |
1512 | +OBJECTSECTION int select_dir_file(int filenum,int num_dir, unsigned char* msg){ | |
1513 | 1513 | // filenames[]配列に読み込まれたファイルまたはディレクトリを画面表示しキーボードで選択する |
1514 | 1514 | // filenum:ファイル+ディレクトリ数 |
1515 | 1515 | // num_dir:ディレクトリ数(filenames[]は先頭からnum_dir-1までがディレクトリ) |
@@ -1665,7 +1665,7 @@ int select_dir_file(int filenum,int num_dir, unsigned char* msg){ | ||
1665 | 1665 | } |
1666 | 1666 | } |
1667 | 1667 | } |
1668 | -int getfilelist(int *p_num_dir){ | |
1668 | +OBJECTSECTION int getfilelist(int *p_num_dir){ | |
1669 | 1669 | // カレントディレクトリでのディレクトリ、.BAS、.TXT、.INIファイル一覧を読み込む |
1670 | 1670 | // *p_num_dir:ディレクトリ数を返す |
1671 | 1671 | // filenames[]:ファイル名およびディレクトリ名一覧 |
@@ -1729,7 +1729,7 @@ int getfilelist(int *p_num_dir){ | ||
1729 | 1729 | } |
1730 | 1730 | return filenum; |
1731 | 1731 | } |
1732 | -void save_as(int ow){ | |
1732 | +OBJECTSECTION void save_as(int ow){ | |
1733 | 1733 | // 現在のテキストバッファの内容をSDカードに保存 |
1734 | 1734 | // ow 0:名前を付けて保存 1:上書き保存 |
1735 | 1735 | // ファイル名はグローバル変数currentfile[] |
@@ -1817,7 +1817,7 @@ void save_as(int ow){ | ||
1817 | 1817 | } |
1818 | 1818 | } |
1819 | 1819 | |
1820 | -void newtext(void){ | |
1820 | +OBJECTSECTION void newtext(void){ | |
1821 | 1821 | // 新規テキスト作成 |
1822 | 1822 | unsigned char vk; |
1823 | 1823 | if(edited && num){ |
@@ -1841,7 +1841,7 @@ void newtext(void){ | ||
1841 | 1841 | currentfile[0]=0; //作業中ファイル名クリア |
1842 | 1842 | } |
1843 | 1843 | |
1844 | -void msra(void){ | |
1844 | +OBJECTSECTION void msra(void){ | |
1845 | 1845 | // Make Self-Running Application (自己実行アプリケーションの作成) |
1846 | 1846 | // 最初にソースファイルを名前を付けて保存 |
1847 | 1847 | // 次にBASICシステムのHEXファイルをソースファイル名の拡張子をHEXにした名前でコピー |
@@ -1951,7 +1951,7 @@ void msra(void){ | ||
1951 | 1951 | inputchar(); //1文字入力待ち |
1952 | 1952 | return; |
1953 | 1953 | } |
1954 | -int fileload(void){ | |
1954 | +OBJECTSECTION int fileload(void){ | |
1955 | 1955 | // SDカードからファイルを選択して読み込み |
1956 | 1956 | // currenfile[]にファイル名を記憶 |
1957 | 1957 | // 対象ファイル拡張子 BASおよびTXT |
@@ -2047,14 +2047,14 @@ int fileload(void){ | ||
2047 | 2047 | } |
2048 | 2048 | } |
2049 | 2049 | } |
2050 | -void changewidth(void){ | |
2050 | +OBJECTSECTION void changewidth(void){ | |
2051 | 2051 | // 30文字モードと40文字モードの切り替え |
2052 | 2052 | if(twidth==WIDTH_X1) set_width(1); |
2053 | 2053 | else set_width(0); |
2054 | 2054 | cursor_top(); //カーソルをテキストバッファの先頭に設定 |
2055 | 2055 | redraw(); //再描画 |
2056 | 2056 | } |
2057 | -void run(int test){ | |
2057 | +OBJECTSECTION void run(int test){ | |
2058 | 2058 | //KM-BASICコンパイル&実行 |
2059 | 2059 | // test 0:コンパイルと実行、0以外:コンパイルのみで終了 |
2060 | 2060 | int er,er2; |
@@ -2224,7 +2224,7 @@ void run(int test){ | ||
2224 | 2224 | edited=edited1; |
2225 | 2225 | FSremove(TEMPFILENAME); |
2226 | 2226 | } |
2227 | -void displaybottomline(void){ | |
2227 | +OBJECTSECTION void displaybottomline(void){ | |
2228 | 2228 | //エディター画面最下行の表示 |
2229 | 2229 | unsigned char *p; |
2230 | 2230 | unsigned char c; |
@@ -2259,7 +2259,7 @@ void displaybottomline(void){ | ||
2259 | 2259 | cursor=p; //カーソル位置戻し |
2260 | 2260 | cursorcolor=c; |
2261 | 2261 | } |
2262 | -void normal_code_process(unsigned char k){ | |
2262 | +OBJECTSECTION void normal_code_process(unsigned char k){ | |
2263 | 2263 | // 通常文字入力処理 |
2264 | 2264 | // k:入力された文字コード |
2265 | 2265 | int i; |
@@ -2286,7 +2286,7 @@ void normal_code_process(unsigned char k){ | ||
2286 | 2286 | if(i==0) cursor_right();//画面上、バッファ上のカーソル位置を1つ後ろに移動 |
2287 | 2287 | } |
2288 | 2288 | } |
2289 | -void control_code_process(unsigned char k,unsigned char sh){ | |
2289 | +OBJECTSECTION void control_code_process(unsigned char k,unsigned char sh){ | |
2290 | 2290 | // 制御文字入力処理 |
2291 | 2291 | // k:制御文字の仮想キーコード |
2292 | 2292 | // sh:シフト関連キー状態 |
@@ -2476,7 +2476,7 @@ void control_code_process(unsigned char k,unsigned char sh){ | ||
2476 | 2476 | break; |
2477 | 2477 | } |
2478 | 2478 | } |
2479 | -void texteditor(void){ | |
2479 | +OBJECTSECTION void texteditor(void){ | |
2480 | 2480 | //テキストエディター本体 |
2481 | 2481 | unsigned char k1,k2,sh; |
2482 | 2482 | FSFILE *fp; |
@@ -7,6 +7,7 @@ | ||
7 | 7 | |
8 | 8 | #define CPU_CLOCK_HZ (g_use_graphic ? 53693175 : 57272720) |
9 | 9 | #define PERSISTENT_RAM_SIZE (1024*52) |
10 | +#define OBJECTSECTION_ADDRESS 0x9D033000 | |
10 | 11 | |
11 | 12 | int readbuttons(); |
12 | 13 | void scroll(int x, int y); |
@@ -140,12 +140,8 @@ int compile_and_link_file(char* buff,char* appname){ | ||
140 | 140 | } |
141 | 141 | |
142 | 142 | // Option initialization(s) |
143 | -<<<<<<< HEAD | |
144 | - g_nolinenum=0; | |
145 | -======= | |
146 | 143 | g_option_nolinenum=0; |
147 | 144 | g_option_fastfield=0; |
148 | ->>>>>>> remotes/origin/timer | |
149 | 145 | |
150 | 146 | // Compile the file |
151 | 147 | err=compile_file(); |
@@ -12,7 +12,7 @@ | ||
12 | 12 | #include "compiler.h" |
13 | 13 | #include "api.h" |
14 | 14 | |
15 | -char* music_function(){ | |
15 | +OBJECTSECTION char* music_function(){ | |
16 | 16 | char* err; |
17 | 17 | next_position(); |
18 | 18 | if (g_source[g_srcpos]==')') { |
@@ -26,26 +26,26 @@ char* music_function(){ | ||
26 | 26 | return 0; |
27 | 27 | } |
28 | 28 | |
29 | -char* read_function(){ | |
29 | +OBJECTSECTION char* read_function(){ | |
30 | 30 | // This function is not valid in class file. |
31 | 31 | if (g_compiling_class) return ERR_INVALID_CLASS; |
32 | 32 | call_lib_code(LIB_READ); |
33 | 33 | return 0; |
34 | 34 | } |
35 | 35 | |
36 | -char* cread_function(){ | |
36 | +OBJECTSECTION char* cread_function(){ | |
37 | 37 | call_lib_code(LIB_CREAD); |
38 | 38 | return 0; |
39 | 39 | } |
40 | 40 | |
41 | -char* gosub_function(){ | |
41 | +OBJECTSECTION char* gosub_function(){ | |
42 | 42 | // Check if garbage collection has been done. |
43 | 43 | // This check is required because the used temporary area would be changed |
44 | 44 | // in sub routine. |
45 | 45 | if (g_temp_area_used) return ERR_GOSUB_ASH; |
46 | 46 | return gosub_statement(); |
47 | 47 | } |
48 | -char* strncmp_function(){ | |
48 | +OBJECTSECTION char* strncmp_function(){ | |
49 | 49 | char* err; |
50 | 50 | err=get_string(); |
51 | 51 | if (err) return err; |
@@ -67,7 +67,7 @@ char* strncmp_function(){ | ||
67 | 67 | g_object[g_objpos++]=0x27BD0008; // addiu sp,sp,8 |
68 | 68 | return 0; |
69 | 69 | } |
70 | -char* len_function(){ | |
70 | +OBJECTSECTION char* len_function(){ | |
71 | 71 | char* err; |
72 | 72 | err=get_string(); |
73 | 73 | if (err) return err; |
@@ -81,7 +81,7 @@ char* len_function(){ | ||
81 | 81 | return 0; |
82 | 82 | } |
83 | 83 | |
84 | -char* asc_function(){ | |
84 | +OBJECTSECTION char* asc_function(){ | |
85 | 85 | char* err; |
86 | 86 | err=get_string(); |
87 | 87 | if (err) return err; |
@@ -90,7 +90,7 @@ char* asc_function(){ | ||
90 | 90 | return 0; |
91 | 91 | } |
92 | 92 | |
93 | -char* val_function(){ | |
93 | +OBJECTSECTION char* val_function(){ | |
94 | 94 | char* err; |
95 | 95 | err=get_string(); |
96 | 96 | if (err) return err; |
@@ -98,7 +98,7 @@ char* val_function(){ | ||
98 | 98 | return 0; |
99 | 99 | } |
100 | 100 | |
101 | -char* peek_function_sub(int bits){ | |
101 | +OBJECTSECTION char* peek_function_sub(int bits){ | |
102 | 102 | char* err; |
103 | 103 | err=get_value(); |
104 | 104 | if (err) return err; |
@@ -118,7 +118,7 @@ char* peek_function_sub(int bits){ | ||
118 | 118 | return 0; |
119 | 119 | } |
120 | 120 | |
121 | -char* sgn_function(){ | |
121 | +OBJECTSECTION char* sgn_function(){ | |
122 | 122 | char* err; |
123 | 123 | err=get_value(); |
124 | 124 | if (err) return err; |
@@ -132,7 +132,7 @@ char* sgn_function(){ | ||
132 | 132 | return 0; |
133 | 133 | } |
134 | 134 | |
135 | -char* abs_function(){ | |
135 | +OBJECTSECTION char* abs_function(){ | |
136 | 136 | char* err; |
137 | 137 | err=get_value(); |
138 | 138 | if (err) return err; |
@@ -143,7 +143,7 @@ char* abs_function(){ | ||
143 | 143 | return 0; |
144 | 144 | } |
145 | 145 | |
146 | -char* not_function(){ | |
146 | +OBJECTSECTION char* not_function(){ | |
147 | 147 | char* err; |
148 | 148 | err=get_value(); |
149 | 149 | if (err) return err; |
@@ -152,19 +152,19 @@ char* not_function(){ | ||
152 | 152 | return 0; |
153 | 153 | } |
154 | 154 | |
155 | -char* rnd_function(){ | |
155 | +OBJECTSECTION char* rnd_function(){ | |
156 | 156 | call_lib_code(LIB_RND); |
157 | 157 | return 0; |
158 | 158 | } |
159 | 159 | |
160 | -char* chr_function(void){ | |
160 | +OBJECTSECTION char* chr_function(void){ | |
161 | 161 | char* err; |
162 | 162 | err=get_value(); |
163 | 163 | if (err) return err; |
164 | 164 | call_lib_code(LIB_CHR); |
165 | 165 | return 0; |
166 | 166 | } |
167 | -char* hex_function(void){ | |
167 | +OBJECTSECTION char* hex_function(void){ | |
168 | 168 | char* err; |
169 | 169 | err=get_value(); |
170 | 170 | if (err) return err; |
@@ -191,7 +191,7 @@ char* hex_function(void){ | ||
191 | 191 | return 0; |
192 | 192 | } |
193 | 193 | |
194 | -char* dec_function(void){ | |
194 | +OBJECTSECTION char* dec_function(void){ | |
195 | 195 | char* err; |
196 | 196 | err=get_value(); |
197 | 197 | if (err) return err; |
@@ -199,7 +199,7 @@ char* dec_function(void){ | ||
199 | 199 | return 0; |
200 | 200 | } |
201 | 201 | |
202 | -char* keys_function(void){ | |
202 | +OBJECTSECTION char* keys_function(void){ | |
203 | 203 | char* err; |
204 | 204 | next_position(); |
205 | 205 | if (g_source[g_srcpos]==')') { |
@@ -213,7 +213,7 @@ char* keys_function(void){ | ||
213 | 213 | return 0; |
214 | 214 | } |
215 | 215 | |
216 | -char* tvram_function(void){ | |
216 | +OBJECTSECTION char* tvram_function(void){ | |
217 | 217 | char* err; |
218 | 218 | int i; |
219 | 219 | next_position(); |
@@ -235,17 +235,17 @@ char* tvram_function(void){ | ||
235 | 235 | return 0; |
236 | 236 | } |
237 | 237 | |
238 | -char* drawcount_function(void){ | |
238 | +OBJECTSECTION char* drawcount_function(void){ | |
239 | 239 | call_lib_code(LIB_DRAWCOUNT); |
240 | 240 | return 0; |
241 | 241 | } |
242 | 242 | |
243 | -char* input_function(void){ | |
243 | +OBJECTSECTION char* input_function(void){ | |
244 | 244 | call_lib_code(LIB_INPUT); |
245 | 245 | return 0; |
246 | 246 | } |
247 | 247 | |
248 | -char* inkey_function(void){ | |
248 | +OBJECTSECTION char* inkey_function(void){ | |
249 | 249 | char* err; |
250 | 250 | next_position(); |
251 | 251 | if (g_source[g_srcpos]==')') { |
@@ -259,11 +259,11 @@ char* inkey_function(void){ | ||
259 | 259 | return 0; |
260 | 260 | } |
261 | 261 | |
262 | -char* args_function(void){ | |
262 | +OBJECTSECTION char* args_function(void){ | |
263 | 263 | return args_function_main(); |
264 | 264 | } |
265 | 265 | |
266 | -char* system_function(void){ | |
266 | +OBJECTSECTION char* system_function(void){ | |
267 | 267 | char* err; |
268 | 268 | err=get_value(); |
269 | 269 | if (err) return err; |
@@ -272,7 +272,7 @@ char* system_function(void){ | ||
272 | 272 | return 0; |
273 | 273 | } |
274 | 274 | |
275 | -char* sprintf_function(void){ | |
275 | +OBJECTSECTION char* sprintf_function(void){ | |
276 | 276 | char* err; |
277 | 277 | err=get_string(); |
278 | 278 | if (err) return err; |
@@ -292,7 +292,7 @@ char* sprintf_function(void){ | ||
292 | 292 | return 0; |
293 | 293 | } |
294 | 294 | |
295 | -char* floatstr_function(void){ | |
295 | +OBJECTSECTION char* floatstr_function(void){ | |
296 | 296 | char* err; |
297 | 297 | err=get_float(); |
298 | 298 | if (err) return err; |
@@ -303,7 +303,7 @@ char* floatstr_function(void){ | ||
303 | 303 | return 0; |
304 | 304 | } |
305 | 305 | |
306 | -char* floatsharp_function(void){ | |
306 | +OBJECTSECTION char* floatsharp_function(void){ | |
307 | 307 | char* err; |
308 | 308 | err=get_value(); |
309 | 309 | if (err) return err; |
@@ -311,7 +311,7 @@ char* floatsharp_function(void){ | ||
311 | 311 | return 0; |
312 | 312 | } |
313 | 313 | |
314 | -char* valsharp_function(void){ | |
314 | +OBJECTSECTION char* valsharp_function(void){ | |
315 | 315 | char* err; |
316 | 316 | err=get_string(); |
317 | 317 | if (err) return err; |
@@ -319,7 +319,7 @@ char* valsharp_function(void){ | ||
319 | 319 | return 0; |
320 | 320 | } |
321 | 321 | |
322 | -char* int_function(void){ | |
322 | +OBJECTSECTION char* int_function(void){ | |
323 | 323 | char* err; |
324 | 324 | err=get_float(); |
325 | 325 | if (err) return err; |
@@ -327,22 +327,22 @@ char* int_function(void){ | ||
327 | 327 | return 0; |
328 | 328 | } |
329 | 329 | |
330 | -char* fseek_function(){ | |
330 | +OBJECTSECTION char* fseek_function(){ | |
331 | 331 | call_lib_code(LIB_FILE | FUNC_FTELL); |
332 | 332 | return 0; |
333 | 333 | } |
334 | 334 | |
335 | -char* flen_function(){ | |
335 | +OBJECTSECTION char* flen_function(){ | |
336 | 336 | call_lib_code(LIB_FILE | FUNC_FLEN); |
337 | 337 | return 0; |
338 | 338 | } |
339 | 339 | |
340 | -char* fgetc_function(){ | |
340 | +OBJECTSECTION char* fgetc_function(){ | |
341 | 341 | call_lib_code(LIB_FILE | FUNC_FGETC); |
342 | 342 | return 0; |
343 | 343 | } |
344 | 344 | |
345 | -char* finput_function(){ | |
345 | +OBJECTSECTION char* finput_function(){ | |
346 | 346 | char* err; |
347 | 347 | next_position(); |
348 | 348 | if (g_source[g_srcpos]!=')') { |
@@ -357,12 +357,12 @@ char* finput_function(){ | ||
357 | 357 | return 0; |
358 | 358 | } |
359 | 359 | |
360 | -char* feof_function(){ | |
360 | +OBJECTSECTION char* feof_function(){ | |
361 | 361 | call_lib_code(LIB_FILE | FUNC_FEOF); |
362 | 362 | return 0; |
363 | 363 | } |
364 | 364 | |
365 | -char* playwave_function(){ | |
365 | +OBJECTSECTION char* playwave_function(){ | |
366 | 366 | char* err; |
367 | 367 | next_position(); |
368 | 368 | if (g_source[g_srcpos]!=')') { |
@@ -378,7 +378,7 @@ char* playwave_function(){ | ||
378 | 378 | return 0; |
379 | 379 | } |
380 | 380 | |
381 | -char* setdir_function(){ | |
381 | +OBJECTSECTION char* setdir_function(){ | |
382 | 382 | char* err; |
383 | 383 | err=get_string(); |
384 | 384 | if (err) return err; |
@@ -386,21 +386,21 @@ char* setdir_function(){ | ||
386 | 386 | return 0; |
387 | 387 | } |
388 | 388 | |
389 | -char* getdir_function(){ | |
389 | +OBJECTSECTION char* getdir_function(){ | |
390 | 390 | call_lib_code(LIB_GETDIR); |
391 | 391 | return 0; |
392 | 392 | } |
393 | 393 | |
394 | -char* exec_function(){ | |
394 | +OBJECTSECTION char* exec_function(){ | |
395 | 395 | return exec_statement(); |
396 | 396 | } |
397 | 397 | |
398 | -char* readkey_function(){ | |
398 | +OBJECTSECTION char* readkey_function(){ | |
399 | 399 | call_lib_code(LIB_READKEY); |
400 | 400 | return 0; |
401 | 401 | } |
402 | 402 | |
403 | -char* float_constant(float val){ | |
403 | +OBJECTSECTION char* float_constant(float val){ | |
404 | 404 | volatile int i; |
405 | 405 | ((float*)(&i))[0]=val; |
406 | 406 | if (i&0xFFFF0000) { |
@@ -416,7 +416,7 @@ char* float_constant(float val){ | ||
416 | 416 | return 0; |
417 | 417 | } |
418 | 418 | |
419 | -char* float_1param_function(enum functions func){ | |
419 | +OBJECTSECTION char* float_1param_function(enum functions func){ | |
420 | 420 | char* err; |
421 | 421 | err=get_float(); |
422 | 422 | if (err) return err; |
@@ -424,7 +424,7 @@ char* float_1param_function(enum functions func){ | ||
424 | 424 | return 0; |
425 | 425 | } |
426 | 426 | |
427 | -char* float_2param_function(enum functions func){ | |
427 | +OBJECTSECTION char* float_2param_function(enum functions func){ | |
428 | 428 | char* err; |
429 | 429 | err=get_float(); |
430 | 430 | if (err) return err; |
@@ -444,7 +444,7 @@ char* float_2param_function(enum functions func){ | ||
444 | 444 | return 0; |
445 | 445 | } |
446 | 446 | |
447 | -char* float_function(void){ | |
447 | +OBJECTSECTION char* float_function(void){ | |
448 | 448 | char* err; |
449 | 449 | if (nextCodeIs("FLOAT#(")) { |
450 | 450 | err=floatsharp_function(); |
@@ -524,7 +524,7 @@ static const void* str_func_list[]={ | ||
524 | 524 | ADDITIONAL_STR_FUNCTIONS |
525 | 525 | }; |
526 | 526 | |
527 | -char* str_function(void){ | |
527 | +OBJECTSECTION char* str_function(void){ | |
528 | 528 | char* err; |
529 | 529 | int i; |
530 | 530 | char* (*f)(); |
@@ -549,23 +549,23 @@ char* str_function(void){ | ||
549 | 549 | |
550 | 550 | // Aliases follow |
551 | 551 | |
552 | -char* peek_function(){ | |
552 | +OBJECTSECTION char* peek_function(){ | |
553 | 553 | return peek_function_sub(8); |
554 | 554 | } |
555 | 555 | |
556 | -char* peek16_function(){ | |
556 | +OBJECTSECTION char* peek16_function(){ | |
557 | 557 | return peek_function_sub(16); |
558 | 558 | } |
559 | 559 | |
560 | -char* peek32_function(){ | |
560 | +OBJECTSECTION char* peek32_function(){ | |
561 | 561 | return peek_function_sub(32); |
562 | 562 | } |
563 | 563 | |
564 | -char* gcolor_function(){ | |
564 | +OBJECTSECTION char* gcolor_function(){ | |
565 | 565 | return graphic_statement(FUNC_GCOLOR); |
566 | 566 | } |
567 | 567 | |
568 | -char* fopen_function(){ | |
568 | +OBJECTSECTION char* fopen_function(){ | |
569 | 569 | return fopen_statement_main(FUNC_FOPEN); |
570 | 570 | } |
571 | 571 |
@@ -613,7 +613,7 @@ static const void* int_func_list[]={ | ||
613 | 613 | ADDITIONAL_INT_FUNCTIONS |
614 | 614 | }; |
615 | 615 | |
616 | -char* function(void){ | |
616 | +OBJECTSECTION char* function(void){ | |
617 | 617 | char* err; |
618 | 618 | int i; |
619 | 619 | char* (*f)(); |
@@ -12,6 +12,9 @@ | ||
12 | 12 | #include "compiler.h" |
13 | 13 | #include "main.h" |
14 | 14 | |
15 | +// Flag (NOP assembly) to use OBJECTSECTION for object. | |
16 | +const __attribute__((address(OBJECTSECTION_ADDRESS))) int g_objectsection=0; | |
17 | + | |
15 | 18 | // Contain the valus of $gp and $s6 (GPR of MIPS32) |
16 | 19 | int g_gp; |
17 | 20 | int g_s6; |
@@ -56,11 +59,7 @@ unsigned short g_var_size[ALLOC_BLOCK_NUM]; | ||
56 | 59 | char g_temp_area_used; |
57 | 60 | |
58 | 61 | // Flag to use option nolinenum |
59 | -<<<<<<< HEAD | |
60 | -char g_nolinenum; | |
61 | -======= | |
62 | 62 | char g_option_nolinenum; |
63 | ->>>>>>> remotes/origin/timer | |
64 | 63 | |
65 | 64 | // Heap area |
66 | 65 | int* g_heap_mem; |
@@ -863,7 +863,7 @@ ON GOTO分やON GOSUB文はサポートしていません。ただし、例え | ||
863 | 863 | を扱いたい場合は、同名の変数をVAR指定しないようにして下さい。 |
864 | 864 | |
865 | 865 | <バージョン履歴> |
866 | -・KM-1208 2019年5月公開。 | |
866 | +・KM-1208 2019年?月公開。 | |
867 | 867 | ・タイマー機能(USETIMER,TIMER, CORETIMERステートメントとTIMER(), CORETIMER()関 |
868 | 868 | 数)を追加。 |
869 | 869 | ・割り込み機能(INTERRUPTステートメント)を追加。 |
@@ -12,7 +12,7 @@ | ||
12 | 12 | #include "api.h" |
13 | 13 | #include "compiler.h" |
14 | 14 | |
15 | -char* rem_statement(){ | |
15 | +OBJECTSECTION char* rem_statement(){ | |
16 | 16 | if (g_source[g_srcpos-4]<0x20) { |
17 | 17 | // This line contains only "REM" statement |
18 | 18 | // Delete $s6-setting command if exists. |
@@ -24,7 +24,7 @@ char* rem_statement(){ | ||
24 | 24 | return 0; |
25 | 25 | } |
26 | 26 | |
27 | -char* sound_statement(){ | |
27 | +OBJECTSECTION char* sound_statement(){ | |
28 | 28 | char *err; |
29 | 29 | err=get_label(); |
30 | 30 | if (err) return err; |
@@ -62,7 +62,7 @@ char* sound_statement(){ | ||
62 | 62 | call_lib_code(LIB_SOUND); |
63 | 63 | return 0; |
64 | 64 | } |
65 | -char* music_statement(){ | |
65 | +OBJECTSECTION char* music_statement(){ | |
66 | 66 | char *err; |
67 | 67 | err=get_string(); |
68 | 68 | if (err) return err; |
@@ -88,7 +88,7 @@ char* music_statement(){ | ||
88 | 88 | return 0; |
89 | 89 | } |
90 | 90 | |
91 | -char* exec_statement(){ | |
91 | +OBJECTSECTION char* exec_statement(){ | |
92 | 92 | char *err; |
93 | 93 | char b1; |
94 | 94 | int i,prevpos; |
@@ -123,7 +123,7 @@ char* exec_statement(){ | ||
123 | 123 | return 0; |
124 | 124 | } |
125 | 125 | |
126 | -char* cdata_statement(){ | |
126 | +OBJECTSECTION char* cdata_statement(){ | |
127 | 127 | // 0x00000020, 0x00000021, 0x00000022, and 0x00000023 (add/addu/sub/subu zero,zero,zero) |
128 | 128 | // are the sign of data region |
129 | 129 | int beginpos,prevpos; |
@@ -191,7 +191,7 @@ char* cdata_statement(){ | ||
191 | 191 | return 0; |
192 | 192 | } |
193 | 193 | |
194 | -char* data_statement(){ | |
194 | +OBJECTSECTION char* data_statement(){ | |
195 | 195 | // 0x00000020, 0x00000021, 0x00000022, and 0x00000023 (add/addu/sub/subu zero,zero,zero) |
196 | 196 | // are the sign of data region |
197 | 197 | int i,prevpos; |
@@ -232,12 +232,12 @@ char* data_statement(){ | ||
232 | 232 | } |
233 | 233 | } |
234 | 234 | |
235 | -char* clear_statement(){ | |
235 | +OBJECTSECTION char* clear_statement(){ | |
236 | 236 | call_lib_code(LIB_CLEAR); |
237 | 237 | return 0; |
238 | 238 | } |
239 | 239 | |
240 | -char* poke_statement_sub(int bits){ | |
240 | +OBJECTSECTION char* poke_statement_sub(int bits){ | |
241 | 241 | char* err; |
242 | 242 | err=get_value(); |
243 | 243 | if (err) return err; |
@@ -266,7 +266,7 @@ char* poke_statement_sub(int bits){ | ||
266 | 266 | return 0; |
267 | 267 | } |
268 | 268 | |
269 | -char* dim_statement(){ | |
269 | +OBJECTSECTION char* dim_statement(){ | |
270 | 270 | char* err; |
271 | 271 | char b1; |
272 | 272 | int i; |
@@ -309,7 +309,7 @@ char* dim_statement(){ | ||
309 | 309 | return 0; |
310 | 310 | } |
311 | 311 | |
312 | -char* label_statement(){ | |
312 | +OBJECTSECTION char* label_statement(){ | |
313 | 313 | char* err; |
314 | 314 | char b1; |
315 | 315 | b1=g_source[g_srcpos]; |
@@ -329,7 +329,7 @@ char* label_statement(){ | ||
329 | 329 | return 0; |
330 | 330 | } |
331 | 331 | |
332 | -char* restore_statement(){ | |
332 | +OBJECTSECTION char* restore_statement(){ | |
333 | 333 | char* err; |
334 | 334 | // This statement is not valid in class file. |
335 | 335 | if (g_compiling_class) return ERR_INVALID_CLASS; |
@@ -351,7 +351,7 @@ char* restore_statement(){ | ||
351 | 351 | return 0; |
352 | 352 | } |
353 | 353 | |
354 | -char* gosub_statement_sub(){ | |
354 | +OBJECTSECTION char* gosub_statement_sub(){ | |
355 | 355 | char* err; |
356 | 356 | err=get_label(); |
357 | 357 | if (err) return err; |
@@ -388,7 +388,7 @@ char* gosub_statement_sub(){ | ||
388 | 388 | return 0; |
389 | 389 | } |
390 | 390 | |
391 | -char* gosub_statement(){ | |
391 | +OBJECTSECTION char* gosub_statement(){ | |
392 | 392 | char* err; |
393 | 393 | int opos,spos,stack; |
394 | 394 | // Skip label first (see below) |
@@ -417,7 +417,7 @@ char* gosub_statement(){ | ||
417 | 417 | return 0; |
418 | 418 | } |
419 | 419 | |
420 | -char* return_statement(){ | |
420 | +OBJECTSECTION char* return_statement(){ | |
421 | 421 | char* err; |
422 | 422 | char b1; |
423 | 423 | next_position(); |
@@ -435,7 +435,7 @@ char* return_statement(){ | ||
435 | 435 | return 0; |
436 | 436 | } |
437 | 437 | |
438 | -char* goto_statement(){ | |
438 | +OBJECTSECTION char* goto_statement(){ | |
439 | 439 | char* err; |
440 | 440 | err=get_label(); |
441 | 441 | if (err) return err; |
@@ -458,7 +458,7 @@ char* goto_statement(){ | ||
458 | 458 | return 0; |
459 | 459 | } |
460 | 460 | |
461 | -char* if_statement(){ | |
461 | +OBJECTSECTION char* if_statement(){ | |
462 | 462 | char* err; |
463 | 463 | int prevpos,bpos; |
464 | 464 | // Get value. |
@@ -537,7 +537,7 @@ char* if_statement(){ | ||
537 | 537 | return 0; |
538 | 538 | } |
539 | 539 | |
540 | -char* elseif_statement(void){ | |
540 | +OBJECTSECTION char* elseif_statement(void){ | |
541 | 541 | // Multiple line mode |
542 | 542 | char* err; |
543 | 543 | g_object[g_objpos++]=0x08160100; // breakif (see linker) |
@@ -560,7 +560,7 @@ char* elseif_statement(void){ | ||
560 | 560 | |
561 | 561 | } |
562 | 562 | |
563 | -char* else_statement(void){ | |
563 | +OBJECTSECTION char* else_statement(void){ | |
564 | 564 | // Multiple line mode |
565 | 565 | g_object[g_objpos++]=0x08160100; // breakif (see linker) |
566 | 566 | g_object[g_objpos++]=0x30008000; // nop (see linker) |
@@ -575,7 +575,7 @@ char* else_statement(void){ | ||
575 | 575 | return 0; |
576 | 576 | } |
577 | 577 | |
578 | -char* endif_statement(void){ | |
578 | +OBJECTSECTION char* endif_statement(void){ | |
579 | 579 | // Multiple line mode |
580 | 580 | g_object[g_objpos++]=0x30008000; // nop (see linker) |
581 | 581 | g_object[g_objpos++]=0x30008000; // nop (see linker) |
@@ -589,7 +589,7 @@ char* endif_statement(void){ | ||
589 | 589 | return 0; |
590 | 590 | } |
591 | 591 | |
592 | -char* end_statement(void){ | |
592 | +OBJECTSECTION char* end_statement(void){ | |
593 | 593 | int i; |
594 | 594 | i=(int)&g_end_addr; |
595 | 595 | i-=g_gp; |
@@ -600,7 +600,7 @@ char* end_statement(void){ | ||
600 | 600 | return 0; |
601 | 601 | } |
602 | 602 | |
603 | -char* let_dim_sub(int i){ | |
603 | +OBJECTSECTION char* let_dim_sub(int i){ | |
604 | 604 | char* err; |
605 | 605 | g_srcpos++; |
606 | 606 | err=get_value(); |
@@ -626,7 +626,7 @@ char* let_dim_sub(int i){ | ||
626 | 626 | return 0; |
627 | 627 | }; |
628 | 628 | |
629 | -char* let_statement(){ | |
629 | +OBJECTSECTION char* let_statement(){ | |
630 | 630 | char* err; |
631 | 631 | char b2,b3; |
632 | 632 | int i,spos,opos; |
@@ -718,7 +718,7 @@ char* let_statement(){ | ||
718 | 718 | return 0; |
719 | 719 | } |
720 | 720 | |
721 | -char* print_statement_main(enum libs lib_printstr, enum libs lib_string){ | |
721 | +OBJECTSECTION char* print_statement_main(enum libs lib_printstr, enum libs lib_string){ | |
722 | 722 | char* err; |
723 | 723 | char b1; |
724 | 724 | int i; |
@@ -773,21 +773,21 @@ char* print_statement_main(enum libs lib_printstr, enum libs lib_string){ | ||
773 | 773 | return 0; |
774 | 774 | } |
775 | 775 | |
776 | -char* break_statement(){ | |
776 | +OBJECTSECTION char* break_statement(){ | |
777 | 777 | check_obj_space(2); |
778 | 778 | g_object[g_objpos++]=0x08160000; // j xxxx (See link() function) |
779 | 779 | g_object[g_objpos++]=0x00000000; // nop |
780 | 780 | return 0; |
781 | 781 | } |
782 | 782 | |
783 | -char* continue_statement(){ | |
783 | +OBJECTSECTION char* continue_statement(){ | |
784 | 784 | check_obj_space(2); |
785 | 785 | g_object[g_objpos++]=0x08160008; // j xxxx (See link() function) |
786 | 786 | g_object[g_objpos++]=0x00000000; // nop |
787 | 787 | return 0; |
788 | 788 | } |
789 | 789 | |
790 | -char* for_statement(){ | |
790 | +OBJECTSECTION char* for_statement(){ | |
791 | 791 | char* err; |
792 | 792 | // char b1; |
793 | 793 | int i; |
@@ -852,7 +852,7 @@ char* for_statement(){ | ||
852 | 852 | return 0; |
853 | 853 | } |
854 | 854 | |
855 | -char* next_statement(){ | |
855 | +OBJECTSECTION char* next_statement(){ | |
856 | 856 | // Return to address stored in 4($sp) |
857 | 857 | // while set $v0 to 8($sp) (see for_statement) |
858 | 858 | // Following assembly must be 4 words. |
@@ -865,7 +865,7 @@ char* next_statement(){ | ||
865 | 865 | return 0; |
866 | 866 | } |
867 | 867 | |
868 | -char* do_statement(){ | |
868 | +OBJECTSECTION char* do_statement(){ | |
869 | 869 | char* err; |
870 | 870 | // Usage of stack: |
871 | 871 | // 4(sp): Address to return to in "DO" statement. |
@@ -899,7 +899,7 @@ char* do_statement(){ | ||
899 | 899 | } |
900 | 900 | } |
901 | 901 | |
902 | -char* loop_statement(){ | |
902 | +OBJECTSECTION char* loop_statement(){ | |
903 | 903 | char* err; |
904 | 904 | int opos; |
905 | 905 | opos=g_objpos; |
@@ -928,7 +928,7 @@ char* loop_statement(){ | ||
928 | 928 | return 0; |
929 | 929 | } |
930 | 930 | |
931 | -char* while_statement(){ | |
931 | +OBJECTSECTION char* while_statement(){ | |
932 | 932 | char* err; |
933 | 933 | check_obj_space(3); |
934 | 934 | g_object[g_objpos++]=0x04130001; // bgezall zero,label1: |
@@ -944,7 +944,7 @@ char* while_statement(){ | ||
944 | 944 | // label2: |
945 | 945 | } |
946 | 946 | |
947 | -char* wend_statement(){ | |
947 | +OBJECTSECTION char* wend_statement(){ | |
948 | 948 | check_obj_space(4); |
949 | 949 | g_object[g_objpos++]=0x8FBF0004; // lw ra,4(sp) |
950 | 950 | g_object[g_objpos++]=0x03E00008; // jr ra |
@@ -954,7 +954,7 @@ char* wend_statement(){ | ||
954 | 954 | return 0; |
955 | 955 | } |
956 | 956 | |
957 | -char* param4_statement(enum libs lib){ | |
957 | +OBJECTSECTION char* param4_statement(enum libs lib){ | |
958 | 958 | // lib is either LIB_PALETTE or LIB_GPALETTE |
959 | 959 | // PALETTE N,R,G,B |
960 | 960 | char* err; |
@@ -989,7 +989,7 @@ char* param4_statement(enum libs lib){ | ||
989 | 989 | return 0; |
990 | 990 | } |
991 | 991 | |
992 | -char* param3_statement(enum libs lib){ | |
992 | +OBJECTSECTION char* param3_statement(enum libs lib){ | |
993 | 993 | char* err; |
994 | 994 | // Get 1st parameter |
995 | 995 | err=get_value(); |
@@ -1015,17 +1015,17 @@ char* param3_statement(enum libs lib){ | ||
1015 | 1015 | return 0; |
1016 | 1016 | } |
1017 | 1017 | |
1018 | -char* bgcolor_statement(){ | |
1018 | +OBJECTSECTION char* bgcolor_statement(){ | |
1019 | 1019 | // BGCOLOR R,G,B |
1020 | 1020 | return param3_statement(LIB_BGCOLOR); |
1021 | 1021 | } |
1022 | 1022 | |
1023 | -char* pcg_statement(){ | |
1023 | +OBJECTSECTION char* pcg_statement(){ | |
1024 | 1024 | // PCG ASCII,D1,D2 |
1025 | 1025 | return param3_statement(LIB_PCG); |
1026 | 1026 | } |
1027 | 1027 | |
1028 | -char* usepcg_statement(){ | |
1028 | +OBJECTSECTION char* usepcg_statement(){ | |
1029 | 1029 | int objpos=g_objpos; |
1030 | 1030 | if (get_value()) { |
1031 | 1031 | // Getting integer failed. |
@@ -1039,7 +1039,7 @@ char* usepcg_statement(){ | ||
1039 | 1039 | return 0; |
1040 | 1040 | } |
1041 | 1041 | |
1042 | -char* usegraphic_statement(){ | |
1042 | +OBJECTSECTION char* usegraphic_statement(){ | |
1043 | 1043 | int objpos=g_objpos; |
1044 | 1044 | if (get_value()) { |
1045 | 1045 | // Getting integer failed. |
@@ -1053,17 +1053,17 @@ char* usegraphic_statement(){ | ||
1053 | 1053 | return 0; |
1054 | 1054 | } |
1055 | 1055 | |
1056 | -char* cls_statement(){ | |
1056 | +OBJECTSECTION char* cls_statement(){ | |
1057 | 1057 | call_lib_code(LIB_CLS); |
1058 | 1058 | return 0; |
1059 | 1059 | } |
1060 | 1060 | |
1061 | -char* gcls_statement(){ | |
1061 | +OBJECTSECTION char* gcls_statement(){ | |
1062 | 1062 | call_lib_code(LIB_GCLS); |
1063 | 1063 | return 0; |
1064 | 1064 | } |
1065 | 1065 | |
1066 | -char* color_statement(){ | |
1066 | +OBJECTSECTION char* color_statement(){ | |
1067 | 1067 | char* err; |
1068 | 1068 | err=get_value(); |
1069 | 1069 | if (err) return err; |
@@ -1071,7 +1071,7 @@ char* color_statement(){ | ||
1071 | 1071 | return 0; |
1072 | 1072 | } |
1073 | 1073 | |
1074 | -char* gcolor_statement(){ | |
1074 | +OBJECTSECTION char* gcolor_statement(){ | |
1075 | 1075 | char* err; |
1076 | 1076 | err=get_value(); |
1077 | 1077 | if (err) return err; |
@@ -1079,7 +1079,7 @@ char* gcolor_statement(){ | ||
1079 | 1079 | return 0; |
1080 | 1080 | } |
1081 | 1081 | |
1082 | -char* param2_statement(enum libs lib){ | |
1082 | +OBJECTSECTION char* param2_statement(enum libs lib){ | |
1083 | 1083 | char* err; |
1084 | 1084 | // Get 1st |
1085 | 1085 | err=get_value(); |
@@ -1098,7 +1098,7 @@ char* param2_statement(enum libs lib){ | ||
1098 | 1098 | return 0; |
1099 | 1099 | } |
1100 | 1100 | |
1101 | -char* system_statement(){ | |
1101 | +OBJECTSECTION char* system_statement(){ | |
1102 | 1102 | // SYSTEM X,Y |
1103 | 1103 | char* err; |
1104 | 1104 | // Get 1st |
@@ -1119,17 +1119,17 @@ char* system_statement(){ | ||
1119 | 1119 | return 0; |
1120 | 1120 | } |
1121 | 1121 | |
1122 | -char* cursor_statement(){ | |
1122 | +OBJECTSECTION char* cursor_statement(){ | |
1123 | 1123 | // CURSOR X,Y |
1124 | 1124 | return param2_statement(LIB_CURSOR); |
1125 | 1125 | } |
1126 | 1126 | |
1127 | -char* scroll_statement(){ | |
1127 | +OBJECTSECTION char* scroll_statement(){ | |
1128 | 1128 | // SCROLL X,Y |
1129 | 1129 | return param2_statement(LIB_SCROLL); |
1130 | 1130 | } |
1131 | 1131 | |
1132 | -char* drawcount_statement(){ | |
1132 | +OBJECTSECTION char* drawcount_statement(){ | |
1133 | 1133 | char* err; |
1134 | 1134 | err=get_value(); |
1135 | 1135 | if (err) return err; |
@@ -1137,7 +1137,7 @@ char* drawcount_statement(){ | ||
1137 | 1137 | return 0; |
1138 | 1138 | } |
1139 | 1139 | |
1140 | -char* wait_statement(){ | |
1140 | +OBJECTSECTION char* wait_statement(){ | |
1141 | 1141 | char* err; |
1142 | 1142 | err=get_value(); |
1143 | 1143 | if (err) return err; |
@@ -1145,7 +1145,7 @@ char* wait_statement(){ | ||
1145 | 1145 | return 0; |
1146 | 1146 | } |
1147 | 1147 | |
1148 | -char* width_statement(){ | |
1148 | +OBJECTSECTION char* width_statement(){ | |
1149 | 1149 | char* err; |
1150 | 1150 | err=get_value(); |
1151 | 1151 | if (err) return err; |
@@ -1153,7 +1153,7 @@ char* width_statement(){ | ||
1153 | 1153 | return 0; |
1154 | 1154 | } |
1155 | 1155 | |
1156 | -char* var_statement_sub(int a0, int a1){ | |
1156 | +OBJECTSECTION char* var_statement_sub(int a0, int a1){ | |
1157 | 1157 | // Construct parameter-setting scripts |
1158 | 1158 | if (a0&0xffff0000) { |
1159 | 1159 | check_obj_space(1); |
@@ -1184,7 +1184,7 @@ char* var_statement_sub(int a0, int a1){ | ||
1184 | 1184 | return 0; |
1185 | 1185 | } |
1186 | 1186 | |
1187 | -char* var_statement(){ | |
1187 | +OBJECTSECTION char* var_statement(){ | |
1188 | 1188 | char* err; |
1189 | 1189 | int i,j,a0,a1; |
1190 | 1190 | static int prevpos; |
@@ -1243,7 +1243,7 @@ char* var_statement(){ | ||
1243 | 1243 | } |
1244 | 1244 | |
1245 | 1245 | |
1246 | -char* graphic_statement(enum functions func){ | |
1246 | +OBJECTSECTION char* graphic_statement(enum functions func){ | |
1247 | 1247 | /* |
1248 | 1248 | PSET X1,Y1[,C] |
1249 | 1249 | LINE X1,Y1,X2,Y2[,C] |
@@ -1376,7 +1376,7 @@ char* graphic_statement(enum functions func){ | ||
1376 | 1376 | return 0; |
1377 | 1377 | } |
1378 | 1378 | |
1379 | -char* fopen_statement_main(enum functions func){ | |
1379 | +OBJECTSECTION char* fopen_statement_main(enum functions func){ | |
1380 | 1380 | // func is either FUNC_FOPENST or FUNC_FOPEN |
1381 | 1381 | char* err; |
1382 | 1382 | // Get 1st |
@@ -1408,7 +1408,7 @@ char* fopen_statement_main(enum functions func){ | ||
1408 | 1408 | return 0; |
1409 | 1409 | } |
1410 | 1410 | |
1411 | -char* file_statement(){ | |
1411 | +OBJECTSECTION char* file_statement(){ | |
1412 | 1412 | char* err; |
1413 | 1413 | err=get_value(); |
1414 | 1414 | if (err) return err; |
@@ -1416,7 +1416,7 @@ char* file_statement(){ | ||
1416 | 1416 | return 0; |
1417 | 1417 | } |
1418 | 1418 | |
1419 | -char* fclose_statement(){ | |
1419 | +OBJECTSECTION char* fclose_statement(){ | |
1420 | 1420 | char* err; |
1421 | 1421 | int orgpos=g_srcpos; |
1422 | 1422 | if (endOfStatement()) { |
@@ -1445,15 +1445,15 @@ int FindNext (SearchRec * rec); | ||
1445 | 1445 | |
1446 | 1446 | */ |
1447 | 1447 | |
1448 | -char* fget_statement(){ | |
1448 | +OBJECTSECTION char* fget_statement(){ | |
1449 | 1449 | return param2_statement(LIB_FILE | FUNC_FGET); |
1450 | 1450 | } |
1451 | 1451 | |
1452 | -char* fput_statement(){ | |
1452 | +OBJECTSECTION char* fput_statement(){ | |
1453 | 1453 | return param2_statement(LIB_FILE | FUNC_FPUT); |
1454 | 1454 | } |
1455 | 1455 | |
1456 | -char* fseek_statement(){ | |
1456 | +OBJECTSECTION char* fseek_statement(){ | |
1457 | 1457 | char* err; |
1458 | 1458 | err=get_value(); |
1459 | 1459 | if (err) return err; |
@@ -1461,7 +1461,7 @@ char* fseek_statement(){ | ||
1461 | 1461 | return 0; |
1462 | 1462 | } |
1463 | 1463 | |
1464 | -char* fputc_statement(){ | |
1464 | +OBJECTSECTION char* fputc_statement(){ | |
1465 | 1465 | char* err; |
1466 | 1466 | err=get_value(); |
1467 | 1467 | if (err) return err; |
@@ -1469,7 +1469,7 @@ char* fputc_statement(){ | ||
1469 | 1469 | return 0; |
1470 | 1470 | } |
1471 | 1471 | |
1472 | -char* fremove_statement(){ | |
1472 | +OBJECTSECTION char* fremove_statement(){ | |
1473 | 1473 | char* err; |
1474 | 1474 | err=get_string(); |
1475 | 1475 | if (err) return err; |
@@ -1477,7 +1477,7 @@ char* fremove_statement(){ | ||
1477 | 1477 | return 0; |
1478 | 1478 | } |
1479 | 1479 | |
1480 | -char* usevar_statement(){ | |
1480 | +OBJECTSECTION char* usevar_statement(){ | |
1481 | 1481 | char* err; |
1482 | 1482 | int i; |
1483 | 1483 | do { |
@@ -1497,7 +1497,7 @@ char* usevar_statement(){ | ||
1497 | 1497 | return 0; |
1498 | 1498 | } |
1499 | 1499 | |
1500 | -char* playwave_statement(){ | |
1500 | +OBJECTSECTION char* playwave_statement(){ | |
1501 | 1501 | char* err; |
1502 | 1502 | err=get_string(); |
1503 | 1503 | if (err) return err; |
@@ -1520,7 +1520,7 @@ char* playwave_statement(){ | ||
1520 | 1520 | return 0; |
1521 | 1521 | } |
1522 | 1522 | |
1523 | -char* useclass_statement(){ | |
1523 | +OBJECTSECTION char* useclass_statement(){ | |
1524 | 1524 | char* err; |
1525 | 1525 | int i; |
1526 | 1526 | int* cmpdata; |
@@ -1556,7 +1556,7 @@ char* useclass_statement(){ | ||
1556 | 1556 | return 0; |
1557 | 1557 | } |
1558 | 1558 | |
1559 | -char* setdir_statement(){ | |
1559 | +OBJECTSECTION char* setdir_statement(){ | |
1560 | 1560 | char* err; |
1561 | 1561 | err=get_string(); |
1562 | 1562 | if (err) return err; |
@@ -1564,13 +1564,10 @@ char* setdir_statement(){ | ||
1564 | 1564 | return 0; |
1565 | 1565 | } |
1566 | 1566 | |
1567 | -char* option_statement(){ | |
1567 | +OBJECTSECTION char* option_statement(){ | |
1568 | 1568 | while(1){ |
1569 | 1569 | next_position(); |
1570 | 1570 | if (nextCodeIs("NOLINENUM")) { |
1571 | -<<<<<<< HEAD | |
1572 | - g_nolinenum=1; | |
1573 | -======= | |
1574 | 1571 | g_option_nolinenum=1; |
1575 | 1572 | } else if (nextCodeIs("FASTFIELD")) { |
1576 | 1573 | g_option_fastfield=1; |
@@ -1584,7 +1581,6 @@ char* option_statement(){ | ||
1584 | 1581 | // End the compile of main file |
1585 | 1582 | return ERR_OPTION_CLASSCODE; |
1586 | 1583 | } |
1587 | ->>>>>>> remotes/origin/timer | |
1588 | 1584 | } else { |
1589 | 1585 | return ERR_SYNTAX; |
1590 | 1586 | } |
@@ -1598,15 +1594,12 @@ char* option_statement(){ | ||
1598 | 1594 | return 0; |
1599 | 1595 | } |
1600 | 1596 | |
1601 | -<<<<<<< HEAD | |
1602 | -======= | |
1603 | -char* idle_statement(){ | |
1597 | +OBJECTSECTION char* idle_statement(){ | |
1604 | 1598 | check_obj_space(2); |
1605 | 1599 | g_object[g_objpos++]=0x42000020; // wait |
1606 | 1600 | return 0; |
1607 | 1601 | } |
1608 | 1602 | |
1609 | ->>>>>>> remotes/origin/timer | |
1610 | 1603 | #ifdef __DEBUG |
1611 | 1604 | char* debug_statement(){ |
1612 | 1605 | call_lib_code(LIB_DEBUG); |
@@ -1616,67 +1609,67 @@ char* idle_statement(){ | ||
1616 | 1609 | |
1617 | 1610 | // Aliases follow |
1618 | 1611 | |
1619 | -char* poke_statement(){ | |
1612 | +OBJECTSECTION char* poke_statement(){ | |
1620 | 1613 | return poke_statement_sub(8); |
1621 | 1614 | } |
1622 | 1615 | |
1623 | -char* poke16_statement(){ | |
1616 | +OBJECTSECTION char* poke16_statement(){ | |
1624 | 1617 | return poke_statement_sub(16); |
1625 | 1618 | } |
1626 | 1619 | |
1627 | -char* poke32_statement(){ | |
1620 | +OBJECTSECTION char* poke32_statement(){ | |
1628 | 1621 | return poke_statement_sub(32); |
1629 | 1622 | } |
1630 | 1623 | |
1631 | -char* palette_statement(){ | |
1624 | +OBJECTSECTION char* palette_statement(){ | |
1632 | 1625 | return param4_statement(LIB_PALETTE); |
1633 | 1626 | } |
1634 | 1627 | |
1635 | -char* gpalette_statement(){ | |
1628 | +OBJECTSECTION char* gpalette_statement(){ | |
1636 | 1629 | return param4_statement(LIB_GPALETTE); |
1637 | 1630 | } |
1638 | 1631 | |
1639 | -char* print_statement(){ | |
1632 | +OBJECTSECTION char* print_statement(){ | |
1640 | 1633 | return print_statement_main(LIB_PRINTSTR,LIB_STRING); |
1641 | 1634 | } |
1642 | 1635 | |
1643 | -char* pset_statement(){ | |
1636 | +OBJECTSECTION char* pset_statement(){ | |
1644 | 1637 | return graphic_statement(FUNC_PSET); |
1645 | 1638 | } |
1646 | 1639 | |
1647 | -char* line_statement(){ | |
1640 | +OBJECTSECTION char* line_statement(){ | |
1648 | 1641 | return graphic_statement(FUNC_LINE); |
1649 | 1642 | } |
1650 | 1643 | |
1651 | -char* boxfill_statement(){ | |
1644 | +OBJECTSECTION char* boxfill_statement(){ | |
1652 | 1645 | return graphic_statement(FUNC_BOXFILL); |
1653 | 1646 | } |
1654 | 1647 | |
1655 | -char* circle_statement(){ | |
1648 | +OBJECTSECTION char* circle_statement(){ | |
1656 | 1649 | return graphic_statement(FUNC_CIRCLE); |
1657 | 1650 | } |
1658 | 1651 | |
1659 | -char* circlefill_statement(){ | |
1652 | +OBJECTSECTION char* circlefill_statement(){ | |
1660 | 1653 | return graphic_statement(FUNC_CIRCLEFILL); |
1661 | 1654 | } |
1662 | 1655 | |
1663 | -char* gprint_statement(){ | |
1656 | +OBJECTSECTION char* gprint_statement(){ | |
1664 | 1657 | return graphic_statement(FUNC_GPRINT); |
1665 | 1658 | } |
1666 | 1659 | |
1667 | -char* putbmp_statement(){ | |
1660 | +OBJECTSECTION char* putbmp_statement(){ | |
1668 | 1661 | return graphic_statement(FUNC_PUTBMP); |
1669 | 1662 | } |
1670 | 1663 | |
1671 | -char* point_statement(){ | |
1664 | +OBJECTSECTION char* point_statement(){ | |
1672 | 1665 | return graphic_statement(FUNC_POINT); |
1673 | 1666 | } |
1674 | 1667 | |
1675 | -char* fopen_statement(){ | |
1668 | +OBJECTSECTION char* fopen_statement(){ | |
1676 | 1669 | return fopen_statement_main(FUNC_FOPENST); |
1677 | 1670 | } |
1678 | 1671 | |
1679 | -char* fprint_statement(){ | |
1672 | +OBJECTSECTION char* fprint_statement(){ | |
1680 | 1673 | return print_statement_main(LIB_FILE | FUNC_FPRINTSTR,LIB_FILE | FUNC_FSTRING); |
1681 | 1674 | } |
1682 | 1675 |
@@ -1756,19 +1749,16 @@ static const void* statement_list[]={ | ||
1756 | 1749 | "STATIC ",static_statement, |
1757 | 1750 | "SETDIR ",setdir_statement, |
1758 | 1751 | "OPTION ",option_statement, |
1759 | -<<<<<<< HEAD | |
1760 | -======= | |
1761 | 1752 | "USETIMER ",usetimer_statement, |
1762 | 1753 | "TIMER ",timer_statement, |
1763 | 1754 | "INTERRUPT ",interrupt_statement, |
1764 | 1755 | "IDLE",idle_statement, |
1765 | 1756 | "CORETIMER",coretimer_statement, |
1766 | ->>>>>>> remotes/origin/timer | |
1767 | 1757 | // List of additional statements follows |
1768 | 1758 | ADDITIONAL_STATEMENTS |
1769 | 1759 | }; |
1770 | 1760 | |
1771 | -char* statement(void){ | |
1761 | +OBJECTSECTION char* statement(void){ | |
1772 | 1762 | char* err; |
1773 | 1763 | int prevpos; |
1774 | 1764 | int i; |
@@ -18,120 +18,6 @@ | ||
18 | 18 | */ |
19 | 19 | |
20 | 20 | static const int reserved_var_names[]={ |
21 | -<<<<<<< HEAD | |
22 | - 0x000106b8, /*ABS*/ | |
23 | - 0x0001f67c, /*ACOS*/ | |
24 | - 0x0002414c, /*ARGS*/ | |
25 | - 0x0001090c, /*ASC*/ | |
26 | - 0x0002469f, /*ASIN*/ | |
27 | - 0x00024a8f, /*ATAN*/ | |
28 | - 0x002f7c1e, /*ATAN2*/ | |
29 | - 0x0047c31c, /*BREAK*/ | |
30 | - 0x00035869, /*CALL*/ | |
31 | - 0x00575afe, /*CDATA*/ | |
32 | - 0x00036c3d, /*CEIL*/ | |
33 | - 0x000111af, /*CHR*/ | |
34 | - 0x0cb1b682, /*CIRCLE*/ | |
35 | - 0x005d1ea3, /*CLEAR*/ | |
36 | - 0x00011240, /*CLS*/ | |
37 | - 0x005f66cb, /*COLOR*/ | |
38 | - 0x000112ac, /*COS*/ | |
39 | - 0x0003a041, /*COSH*/ | |
40 | - 0x00616415, /*CREAD*/ | |
41 | - 0x0de593fb, /*CURSOR*/ | |
42 | - 0x00040fbe, /*DATA*/ | |
43 | - 0x00011644, /*DEC*/ | |
44 | - 0x0fe19c42, /*DELETE*/ | |
45 | - 0x000116de, /*DIM*/ | |
46 | - 0x000100a8, /*DO*/ | |
47 | - 0x0004fd8e, /*ELSE*/ | |
48 | - 0x1434a177, /*ELSEIF*/ | |
49 | - 0x00011c99, /*END*/ | |
50 | - 0x0091c927, /*ENDIF*/ | |
51 | - 0x00053854, /*EXEC*/ | |
52 | - 0x00011e0d, /*EXP*/ | |
53 | - 0x000579c8, /*FABS*/ | |
54 | - 0x16e3d4be, /*FCLOSE*/ | |
55 | - 0x00058fcf, /*FEOF*/ | |
56 | - 0x00059895, /*FGET*/ | |
57 | - 0x00a67500, /*FGETC*/ | |
58 | - 0x00a7e061, /*FIELD*/ | |
59 | - 0x0005a3a2, /*FILE*/ | |
60 | - 0x177f0ca5, /*FINPUT*/ | |
61 | - 0x0005b1df, /*FLEN*/ | |
62 | - 0x00aa3445, /*FLOAT*/ | |
63 | - 0x00aa363b, /*FLOOR*/ | |
64 | - 0x0005b84d, /*FMOD*/ | |
65 | - 0x00ac5c9f, /*FOPEN*/ | |
66 | - 0x000121db, /*FOR*/ | |
67 | - 0x18352839, /*FPRINT*/ | |
68 | - 0x0005c865, /*FPUT*/ | |
69 | - 0x00ad2e40, /*FPUTC*/ | |
70 | - 0x00aefdec, /*FSEEK*/ | |
71 | - 0x00063b90, /*GCLS*/ | |
72 | - 0x1a808bcb, /*GCOLOR*/ | |
73 | - 0x1ab733b3, /*GETDIR*/ | |
74 | - 0x00c60f03, /*GOSUB*/ | |
75 | - 0x0006796c, /*GOTO*/ | |
76 | - 0x1bcfcc39, /*GPRINT*/ | |
77 | - 0x00012a99, /*HEX*/ | |
78 | - 0x00010153, /*IF*/ | |
79 | - 0x00f8701a, /*INKEY*/ | |
80 | - 0x00f88ba5, /*INPUT*/ | |
81 | - 0x000130e9, /*INT*/ | |
82 | - 0x00092084, /*KEYS*/ | |
83 | - 0x013be43d, /*LABEL*/ | |
84 | - 0x00013ecf, /*LEN*/ | |
85 | - 0x00013ed5, /*LET*/ | |
86 | - 0x0009e96a, /*LINE*/ | |
87 | - 0x00014030, /*LOG*/ | |
88 | - 0x0145f324, /*LOG10*/ | |
89 | - 0x000a07f9, /*LOOP*/ | |
90 | - 0x000abca3, /*MODF*/ | |
91 | - 0x016418d4, /*MUSIC*/ | |
92 | - 0x000b4321, /*NEXT*/ | |
93 | - 0x000148f8, /*NEW*/ | |
94 | - 0x00014a5d, /*NOT*/ | |
95 | - 0x38a658d7, /*OPTION*/ | |
96 | - 0x000152c0, /*PCG*/ | |
97 | - 0x000cacec, /*PEEK*/ | |
98 | - 0x3b1c6aea, /*PEEK16*/ | |
99 | - 0x3b1c6b2e, /*PEEK32*/ | |
100 | - 0x00010252, /*PI*/ | |
101 | - 0x01ac8479, /*POINT*/ | |
102 | - 0x000ce05e, /*POKE*/ | |
103 | - 0x3c20dc0a, /*POKE16*/ | |
104 | - 0x3c20dc4e, /*POKE32*/ | |
105 | - 0x00015480, /*POW*/ | |
106 | - 0x01aea739, /*PRINT*/ | |
107 | - 0x000cf3d5, /*PSET*/ | |
108 | - 0x3cb45fa4, /*PUBLIC*/ | |
109 | - 0x3cc0fe21, /*PUTBMP*/ | |
110 | - 0x000e18d5, /*READ*/ | |
111 | - 0x00015d2e, /*REM*/ | |
112 | - 0x425c9703, /*RETURN*/ | |
113 | - 0x00015e69, /*RND*/ | |
114 | - 0x45c26d49, /*SCROLL*/ | |
115 | - 0x45f6e3b3, /*SETDIR*/ | |
116 | - 0x00016287, /*SGN*/ | |
117 | - 0x000162cf, /*SIN*/ | |
118 | - 0x000ee52d, /*SINH*/ | |
119 | - 0x01f9a429, /*SOUND*/ | |
120 | - 0x000f0e49, /*SQRT*/ | |
121 | - 0x47f711de, /*SYSTEM*/ | |
122 | - 0x000166bf, /*TAN*/ | |
123 | - 0x000f72ed, /*TANH*/ | |
124 | - 0x02182fee, /*TVRAM*/ | |
125 | - 0x022c2a2d, /*UNTIL*/ | |
126 | - 0x4e8887d0, /*USEPCG*/ | |
127 | - 0x4e88a5f3, /*USEVAR*/ | |
128 | - 0x000170dd, /*VAL*/ | |
129 | - 0x000170e3, /*VAR*/ | |
130 | - 0x00119505, /*WAIT*/ | |
131 | - 0x0011a9e9, /*WEND*/ | |
132 | - 0x025aef62, /*WHILE*/ | |
133 | - 0x025b8d75, /*WIDTH*/ | |
134 | -======= | |
135 | 21 | 0x0001070c, /*ABS*/ |
136 | 22 | 0x0002099d, /*ACOS*/ |
137 | 23 | 0x000258ac, /*ARGS*/ |
@@ -246,7 +132,6 @@ static const int reserved_var_names[]={ | ||
246 | 132 | 0x00131519, /*WEND*/ |
247 | 133 | 0x02a044ad, /*WHILE*/ |
248 | 134 | 0x02a0f0f8, /*WIDTH*/ |
249 | ->>>>>>> remotes/origin/timer | |
250 | 135 | // Additional names follow |
251 | 136 | ADDITIONAL_RESERVED_VAR_NAMES |
252 | 137 | }; |