• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

BASIC compiler/interpreter for PIC32MX/MZ-80K


Commit MetaInfo

Revisão8f8f7404e4911d01d5bc31708137ce2277b5efe3 (tree)
Hora2019-05-15 04:50:35
AutorKatsumi <kmorimatsu@sour...>
CommiterKatsumi

Mensagem de Log

CLIB: Call init() at beginning of execution but at compiling.

Mudança Sumário

Diff

--- a/mips/clib/clib.c
+++ b/mips/clib/clib.c
@@ -39,12 +39,13 @@ const void* const clibdata[]={
3939 * static start address at 0xA0008000. When editing this function is required,
4040 * the size of kseg2_program_mem and address of kseg0_program_mem
4141 * in linker script must be changed.
42+ * This function is called twice, for exchanging data and for calling init().
4243 */
4344 void* CLIBINIT clib_init(void** data){
4445 // Store pointer to data
45- g_data=data;
46+ if (data) g_data=data;
4647 // Call user initialization routine
47- init();
48+ else init();
4849 // Return pointer to clibdata
4950 return (void*)&clibdata[0];
5051 }
--- a/mips/clib/clib_p32MX370F512H.ld
+++ b/mips/clib/clib_p32MX370F512H.ld
@@ -103,8 +103,8 @@ _GEN_EXCPT_ADDR = _ebase_address + 0x180;
103103 MEMORY
104104 {
105105 kseg1_data_mem (w!x) : ORIGIN = (0xA0008000-0x080), LENGTH = 0x080
106- kseg2_program_mem (rx) : ORIGIN = (0xA0008000) , LENGTH = 0x040
107- kseg0_program_mem (rx) : ORIGIN = (0xA0008000+0x040), LENGTH = (0x18000-0x040)
106+ kseg2_program_mem (rx) : ORIGIN = (0xA0008000) , LENGTH = 0x050
107+ kseg0_program_mem (rx) : ORIGIN = (0xA0008000+0x050), LENGTH = (0x18000-0x050)
108108 kseg0_boot_mem : ORIGIN = (0x9D006000+0x1000+0x490), LENGTH = 0 /* dummy */
109109 exception_mem : ORIGIN = 0x9D006000, LENGTH = 0x1000
110110 kseg1_boot_mem : ORIGIN = (0x9D006000+0x1000), LENGTH = 0x490
--- a/mips/clib/nbproject/Makefile-genesis.properties
+++ b/mips/clib/nbproject/Makefile-genesis.properties
@@ -1,5 +1,5 @@
11 #
2-#Sun May 12 18:25:29 PDT 2019
2+#Tue May 14 12:14:44 PDT 2019
33 default.com-microchip-mplab-nbide-toolchainXC32-XC32LanguageToolchain.md5=f2639e8ffe4e3a80ef2cdaeba61da340
44 default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.42\\bin
55 configurations-xml=d396d647be909bd57511217de4e29ec7
--- a/mips/megalopa/clib.c
+++ b/mips/megalopa/clib.c
@@ -195,6 +195,10 @@ char* clib_main(){
195195 }
196196 // Initial assembly is a jump statement to jump to the the following routine.
197197 g_object[0]=0x08000000 | ((((int)(&g_object[g_objpos]))&0x0FFFFFFF)>>2); // j xxxxxxxx
198+ // Insert initialization code
199+ g_object[g_objpos++]=0x3C050000|((((unsigned int)(0xA0008000+adjust))>>16)&0x0000FFFF); // lui a1,xxxx
200+ g_object[g_objpos++]=0x34A50000|(((unsigned int)(0xA0008000+adjust))&0x0000FFFF); // ori a1,a1,xxxx
201+ call_quicklib_code(call_clib_init,ASM_ADDIU_A0_ZERO_ | 0);
198202 // All done
199203 return 0;
200204 }
--- a/mips/megalopa/clib.txt
+++ b/mips/megalopa/clib.txt
@@ -78,7 +78,7 @@ example.cを編集(必要ならばファイル名を変更)する事で、Cラ
7878 Cライブラリーを作成するにあたり、以下の規約に従って下さい。
7979
8080 1.グローバル変数・スタティック変数領域の容量は、128バイト。
81- ・50個ほどのグローバル変数・スタティック変数が使用可能。
81+ ・20個ほどのグローバル変数・スタティック変数が使用可能。
8282  ・大きなメモリー領域が必要な場合は、malloc(), calloc(), free()を使用する。
8383  ・グローバル変数の初期化は、init()関数で行なわなければならない。
8484  ・スタティック変数は実行前の初期化はできない(常に0で初期化される)。
--- a/mips/megalopa/compiler.h
+++ b/mips/megalopa/compiler.h
@@ -517,9 +517,10 @@ char* hex_construct_line();
517517 #define ASM_ADDU_A1_V0_ZERO 0x00402821
518518 #define ASM_ADDU_A2_V0_ZERO 0x00403021
519519 #define ASM_ADDU_A3_V0_ZERO 0x00403821
520-#define ASM_ORI_A0_ZERO_ 0x34040000
521-#define ASM_LW_A0_XXXX_S8 0x8FC40000
522-#define ASM_LW_A0_XXXX_S5 0x8EA40000
520+#define ASM_ORI_A0_ZERO_ 0x34040000
521+#define ASM_ADDIU_A0_ZERO_ 0x24040000
522+#define ASM_LW_A0_XXXX_S8 0x8FC40000
523+#define ASM_LW_A0_XXXX_S5 0x8EA40000
523524
524525 // Interrupt macros
525526 // 32 different type interruptions are possible
--- a/mips/megalopa/debug.c
+++ b/mips/megalopa/debug.c
@@ -262,35 +262,28 @@ static const char class2text[]=
262262 static const char hextext[]=
263263 ":020000040000fa\n"
264264 ":1080000000001c3c707f9c2721e09903e0ffbd2706\n"
265-":108010001c00bfaf1000bcaf1880828f000044acc2\n"
266-":108020001c80998f09f82003000000001000bc8f0d\n"
267-":108030002080828f1c00bf8f0800e0032000bd2736\n"
265+":108010001c00bfaf1000bcaf030080101880828f1f\n"
266+":1080200005000010000044ac1c80998f09f8200363\n"
267+":10803000000000001000bc8f2080828f1c00bf8fca\n"
268+":088040000800e0032000bd2749\n"
268269 ":020000040000fa\n"
269-":107f80000000000000000080a87f00a0408000a04a\n"
270-":107f9000408100a0000001a0f08000a0048100a0aa\n"
271-":087fa000488000a00000000071\n"
270+":107f80000000000000000080a07f00a0508000a042\n"
271+":107f9000dc8000a0000001a0588000a000000000cc\n"
272272 ":020000040000fa\n"
273-":108040000800e0030000000000001c3c287f9c2783\n"
274-":1080500021e09903040080542480828f2480828f41\n"
275-":108060000800e003188142240800e003288142242c\n"
276-":1080700000001c3c007f9c2721e09903d8ffbd270e\n"
277-":108080002400bfaf2000b1af1c00b0af1000bcafe8\n"
278-":10809000218880001880908f040004240000058e41\n"
279-":1080a0002880998f09f82003000000001000bc8f81\n"
280-":1080b000212040000000058e2c80998f09f82003b4\n"
281-":1080c000000000001000bc8f212020023080998f1a\n"
282-":1080d00009f82003000000001000bc8f2400bf8faf\n"
283-":1080e0002000b18f1c00b08f0800e0032800bd27de\n"
284-":1080f0000000a28c080040000800bc8c0800e003cf\n"
285-":10810000000000000400a28c080040000800bc8ca5\n"
286-":088110000800e003000000007c\n"
273+":108050000800e0030000000000001c3c187f9c2783\n"
274+":1080600021e09903040080542480828f2480828f31\n"
275+":108070000800e003b48042240800e003c4804224e6\n"
276+":1080800000001c3cf07e9c2721e09903e0ffbd2707\n"
277+":108090001c00bfaf1000bcaf2880998f09f82003e7\n"
278+":1080a000000000001000bc8f1c00bf8f0800e00320\n"
279+":0480b0002000bd27c8\n"
287280 ":020000040000fa\n"
288-":1081180048656c6c6f20576f726c6421000000001a\n"
289-":108128005468697320697320612074657374000052\n"
290-":088138005445535400000000ff\n"
281+":1080b40048656c6c6f20576f726c6421000000007f\n"
282+":1080c40054686973206973206120746573740000b7\n"
283+":0880d400544553540000000064\n"
291284 ":020000040000fa\n"
292-":108140004001000080000000508100a000000000fd\n"
293-":0c815000388100a0708000a0000000003a\n"
285+":1080dc004001000080000000ec8000a000000000c7\n"
286+":0c80ec00d48000a0808000a000000000f4\n"
294287 ":00000001FF\n"
295288 ;
296289
--- a/mips/megalopa/help.txt
+++ b/mips/megalopa/help.txt
@@ -837,6 +837,26 @@ DELETE x[,y[,z[, ... ]]]
837837 CALL x
838838 xで指定されたオブジェクトのメソッドを呼び出す。「CALL」は省略可。
839839
840+<Cライブラリー呼び出し機能>
841+Cライブラリーの使い方について、詳しくはclib.txtを参照して下さい。以下は、関連す
842+る命令と関数です。
843+
844+USECLIB x[,y[,z[, ... ]]]
845+ Cライブラリーの利用を宣言する。x,y,z等は、ライブラリー名を6文字以内の英数字
846+ で指定。
847+CLIB xxx::yyy[,z1[,z2 ...]]
848+ Cライブラリー内の関数を呼び出す。xxxはライブラリー名、yyyは関数名。z1, z2等
849+ は引数(オプション)。
850+CLIB(xxx::yyy[,z1[,z2 ... ]])
851+ Cライブラリー内の関数を呼び出し、整数を返す。xxxはライブラリー名、yyyは関数
852+ 名。z1, z2等は引数(オプション)。xxx::yyy([z1[,z2 ... ]])と書いても同じ。
853+CLIB$(xxx::yyy[,z1[,z2 ... ]])
854+ Cライブラリー内の関数を呼び出し、文字列を返す。xxxはライブラリー名、yyyは関
855+ 数名。z1, z2等は引数(オプション)。xxx::yyy$([z1[,z2 ... ]])と書いても同じ。
856+CLIB#(xxx::yyy[,z1[,z2 ... ]])
857+ Cライブラリー内の関数を呼び出し、実数を返す。xxxはライブラリー名、yyyは関
858+ 数名。z1, z2等は引数(オプション)。xxx::yyy#([z1[,z2 ... ]])と書いても同じ。
859+
840860 <ヒント>
841861 MachiKania ver 1.2 以降、FOR-NEXTループ、WHILE-WENDループ、DO-LOOPループの途中で、
842862 RETURN文が使えるようになりました。ただし、GOTO文でループの外に飛ぶと、予期せぬ結
@@ -863,7 +883,10 @@ ON GOTO分やON GOSUB文はサポートしていません。ただし、例え
863883 を扱いたい場合は、同名の変数をVAR指定しないようにして下さい。
864884
865885 <バージョン履歴>
866-・KM-1303 2019年?月公開。
886+・KM-1304 2019年?月公開。
887+ ・Cライブラリー呼び出し機能を追加
888+ ・特殊な状況でクラス読み込みに失敗する不具合を修正。
889+・KM-1303 2019年5月公開。
867890  ・タイマー機能(USETIMER,TIMER, CORETIMERステートメントとTIMER(), CORETIMER()関
868891   数)を追加。
869892  ・割り込み機能(INTERRUPTステートメント)を追加。
--- a/mips/megalopa/megalopa.mcp
+++ b/mips/megalopa/megalopa.mcp
@@ -74,6 +74,7 @@ file_046=.
7474 file_047=.
7575 file_048=.
7676 file_049=.
77+file_050=.
7778 [GENERATED_FILES]
7879 file_000=no
7980 file_001=no
@@ -125,6 +126,7 @@ file_046=no
125126 file_047=no
126127 file_048=no
127128 file_049=no
129+file_050=no
128130 [OTHER_FILES]
129131 file_000=no
130132 file_001=no
@@ -176,6 +178,7 @@ file_046=yes
176178 file_047=yes
177179 file_048=yes
178180 file_049=yes
181+file_050=yes
179182 [FILE_INFO]
180183 file_000=compiler.c
181184 file_001=debug.c
@@ -227,6 +230,7 @@ file_046=help.txt
227230 file_047=reservednames.js
228231 file_048=class.txt
229232 file_049=sharedfiles.js
233+file_050=clib.txt
230234 [SUITE_INFO]
231235 suite_guid={62D235D8-2DB2-49CD-AF24-5489A6015337}
232236 suite_state=