• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

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

BASIC compiler/interpreter for PIC32MX/MZ-80K


コミットメタ情報

リビジョン5c100a6ec2988c0dafc8ad068e3bee6593419ee0 (tree)
日時2019-05-14 06:03:43
作者Katsumi <kmorimatsu@sour...>
コミッターKatsumi

ログメッセージ

Add clib.txt

変更サマリ

差分

--- /dev/null
+++ b/mips/megalopa/clib.txt
@@ -0,0 +1,108 @@
1+<Cライブラリーの利用方法>
2+
3+まず、Cライブラリーの使い方について述べます。作成方法については、下の方を参照して
4+下さい。
5+
6+Cライブラリーの本体は、「*.HEX」ファイルです。拡張子が「HEX」のファイルが、BASIC
7+プログラムが置かれているのと同じディレクトリーか、LIBディレクトリーの所定の場所に
8+ある事を確認して下さい。
9+
10+BASICプログラム中では、まず冒頭でUSECLIBステートメントを記述して下さい。
11+
12+USECLIB x[,y[,z[, ... ]]]
13+ Cライブラリーの利用を宣言する。x,y,z等は、ライブラリー名を6文字以内の英数字
14+ で指定。
15+
16+ここでは、「*.HEX」ファイルのファイル名を、指定します。「TCLIB.HEX」なら
17+「USECLIB TCLIB」と記述します。
18+
19+Cライブラリー内の関数を呼び出すには、以下のいずれかの方法を取ります。それぞれの
20+関数の詳しい使用方法については、Cライブラリーに付属のドキュメントを参照して下さ
21+い。
22+
23+CLIB xxx::yyy[,z1[,z2 ...]]
24+ Cライブラリー内の関数を呼び出す。xxxはライブラリー名、yyyは関数名。z1, z2等
25+ は引数(オプション)。
26+CLIB(xxx::yyy[,z1[,z2 ... ]])
27+ Cライブラリー内の関数を呼び出し、整数を返す。xxxはライブラリー名、yyyは関数
28+ 名。z1, z2等は引数(オプション)。xxx::yyy([z1[,z2 ... ]])と書いても同じ。
29+CLIB$(xxx::yyy[,z1[,z2 ... ]])
30+ Cライブラリー内の関数を呼び出し、文字列を返す。xxxはライブラリー名、yyyは関
31+ 数名。z1, z2等は引数(オプション)。xxx::yyy$([z1[,z2 ... ]])と書いても同じ。
32+CLIB#(xxx::yyy[,z1[,z2 ... ]])
33+ Cライブラリー内の関数を呼び出し、実数を返す。xxxはライブラリー名、yyyは関
34+ 数名。z1, z2等は引数(オプション)。xxx::yyy#([z1[,z2 ... ]])と書いても同じ。
35+
36+<使用例>
37+
38+USECLIB TCLIB
39+PRINT TCLIB::TEST$(0)
40+PRINT TCLIB::TEST$(1)
41+
42+<Cライブラリーの作成方法>
43+
44+Cライブラリーを作製する場合には、MPLAB X IDEとXC32コンパイラーのver 1.42以降が
45+必要です。
46+
47+まず、ライブラリー作成用のテンプレートをダウンロードして下さい。少なくとも、次の
48+ファイルが含まれているはずです。
49+
50+clib.c
51+clib.h
52+clib_p32MX370F512H.ld
53+example.c
54+
55+「File->Project Properties」を選択します。次の設定を確認し、異なっていれば値を
56+変更してください。
57+ Categories: Conf
58+ Compiler Toochains: XC32 (v1.42以降)
59+ Categories: xc32-gcc
60+ Additinal options: -mgen-pie-static
61+ Option categories: Optimization
62+ optimization-level: 1
63+ Generated Command Line: -g -O1
64+ Categories: xc32-ld
65+ Additional options: --no-data-init
66+ Option categories: General
67+ Remove unused sections: チェックを入れる
68+ Option categories: Libraries
69+ Exclude Standard Libraries: チェックを入れる
70+ Generated Command Line: --gc-sections --no-code-in-dinit --no-dinit-in-serial-mem -nostdlib -Map="${DISTDIR}/${PROJECTNAME}.${IMAGE_TYPE}.map"
71+
72+clib.c, clib.h, clib_p32MX370F512H.ldの3つは、通常は編集せずにそのまま使います。
73+example.cを編集(必要ならばファイル名を変更)する事で、Cライブラリーを作製して下さ
74+い。コンパイルして出来たHEXファイルが、完成した本体です。
75+
76+<Cライブラリーの仕様>
77+
78+Cライブラリーを作成するにあたり、以下の規約に従って下さい。
79+
80+1.グローバル変数・スタティック変数領域の容量は、128バイト。
81+ ・50個ほどのグローバル変数・スタティック変数が使用可能。
82+ ・大きなメモリー領域が必要な場合は、malloc(), calloc(), free()を使用する。
83+ ・グローバル変数の初期化は、init()関数で行なわなければならない。
84+ ・スタティック変数は実行前の初期化はできない(常に0で初期化される)。
85+
86+2.パブリック関数を、その呼び出し名と共にリストアップする事。
87+ ・functions[]グローバル変数に指定する。
88+ ・フォーマットについては、example.cを参照。
89+
90+3.パブリック関数の引数は、4つまで。
91+
92+4.割り込みは使用出来ない。
93+
94+<グローバル変数領域のサイズ変更>
95+
96+より大きな変数領域が必要な場合は、calloc()で領域を割り当てる事が推奨されます。
97+それでも、グローバル変数領域が足りない場合は、以下の方法でサイズ変更出来ます。
98+
99+1.clib_p[32MC370F512H.ldを編集する。
100+ ・「kseg1_data_mem」の設定の所、「-0x080」と「LENGTH = 0x080」となっている所
101+  を適当なサイズに変更する。
102+
103+2.clib.hを編集する。
104+ ・「#define CLIB_DATA_MEM_SIZE 0x0080」の所、上記で変更した値と同じになるよう
105+  に、編集する。
106+
107+<バージョン履歴>
108+・KM-1209/KM1304 2019年?月公開。
--- a/mips/megalopa/sharedfiles.js
+++ b/mips/megalopa/sharedfiles.js
@@ -38,6 +38,7 @@ var filearray=[
3838 'reservednames.js',
3939 'sharedfiles.js',
4040 'class.txt',
41+ 'clib.txt',
4142 ];
4243
4344 var WshShell = WScript.CreateObject("WScript.Shell");