BASIC compiler/interpreter for PIC32MX/MZ-80K
Revisão | 87a19d019085b11b594721a3dfb4530339028a36 (tree) |
---|---|
Hora | 2019-04-15 10:08:23 |
Autor | Katsumi <kmorimatsu@sour...> |
Commiter | Katsumi |
Protozoa -> protozoea
@@ -256,11 +256,12 @@ int lib_system(int a0, int a1 ,int v0, int a3, int g_gcolor, int g_prev_x, int g | ||
256 | 256 | return v0; |
257 | 257 | } |
258 | 258 | switch(a0){ |
259 | - // Version info | |
259 | + // Version info etc | |
260 | 260 | case 0: return (int)SYSVER1; |
261 | 261 | case 1: return (int)SYSVER2; |
262 | 262 | case 2: return (int)BASVER; |
263 | 263 | case 3: return (int)FILENAME_FLASH_ADDRESS; |
264 | + case 4: return (int)CPU_CLOCK_HZ; | |
264 | 265 | // Display info |
265 | 266 | case 20: return twidth; |
266 | 267 | case 21: return twidthy; |
@@ -10,13 +10,17 @@ A-Zの26個の整数型変数が利用可能です。文字列として扱 | ||
10 | 10 | 述します。ただし、A(整数型)とA$(文字列型)を同時に使用することは出来ま |
11 | 11 | せん。 |
12 | 12 | |
13 | +USEVARなどのステートメントで指定すると、6文字までの長い名前の変数を使用出 | |
14 | +来ます。名前の最初の一文字は英字(A-Z)とアンダースコアー(_)で、二文字目から | |
15 | +はそれらに加えて数字(0-9)も使う事が出来ます。 | |
16 | + | |
13 | 17 | 整数型の定数は、10進法で記述します。16進法を使う場合、「$1200」のよう |
14 | 18 | に、頭に「$」を付加するか、「0x1200」の様に表記して下さい。 |
15 | 19 | |
16 | 20 | 文字列型の定数は、「"」で囲って記述してください。「"」を使用する場合は、 |
17 | 21 | 「CHR$($22)」のように記述することが出来ます。 |
18 | 22 | |
19 | -<命令> | |
23 | +<一般命令> | |
20 | 24 | 以下、x, y, z等は整数値を、x$, y$, z$は文字列を、x#, y#, z#は浮動 |
21 | 25 | 小数点型実数値を指します。xxx, yyy, zzz, www等は任意のステートメントを |
22 | 26 | 指します。[ ]は省略可能である事を示します。 |
@@ -81,9 +85,6 @@ GOSUB xxx [, yyy [, zzz [, ... ]]] | ||
81 | 85 | 等は、サブルーチンに引き継がれる引数(ARGS()関数を参照)。 |
82 | 86 | GOTO xxx |
83 | 87 | xxx行目(もしくはラベル)に移動する。 |
84 | -IDLE | |
85 | - アイドルモード("wait"アセンブリー)に入る。ビデオ信号作製やタイマーなどの割 | |
86 | - り込みがかかるまで、CPUが停止する。 | |
87 | 88 | IF xまたはx# THEN yyy [ ELSE zzz ] |
88 | 89 | xが0以外のとき、yyyを、0のときzzzを実行。yyyおよびzzzは、複数のステート |
89 | 90 | メントを「:」で挟んで記述可能。 |
@@ -106,16 +107,16 @@ LABEL xxx | ||
106 | 107 | [LET] x$=yyy |
107 | 108 | yyyで示された文字列(もしくは連結結果;連結演算子は「+」)を、x$に |
108 | 109 | 代入する。「LET」は省略可。 |
109 | -MUSIC x$ | |
110 | - BGMを演奏する。詳細は、下記<MUSIC>の項を参照。 | |
111 | -OPTION x[,y[,z ... ]]] | |
112 | - 各種オプションを指定する。オプションについては、下記<オプション>の項を参照。 | |
110 | +MUSIC x$[,y] | |
111 | + BGMを演奏する。詳細は、下記<MUSIC>の項を参照。Type Mでは、y=1の時右側だけ、 | |
112 | + y=2の時左側だけ、y=3もしくは省略した場合に両方から音が出る。 | |
113 | 113 | PLAYWAVE x$[,y] |
114 | 114 | 音楽用のWAVEファイル(ファイル名をx$で指定)を演奏する。WAVEのフォーマットは、 |
115 | - ステレオもしくはモノラル、ビット長は8、サンプリング周波数が15700 Hzの物を | |
116 | - 指定する。16000 Hzでも再生出来るが、音程と再生速度が少しずれる。yを指定した | |
117 | - 場合、指定の箇所から再生される(1秒目から再生したい場合は、15700を指定)。 | |
118 | - x$に長さ0の文字列を指定すると、現在再生中の音楽が停止する。 | |
115 | + Type Mの場合はステレオもしくはモノラル(Type Zではモノラルのみ)、ビット長 | |
116 | + は8、サンプリング周波数が15700 Hzの物を指定する。16000 Hzでも再生出来るが、 | |
117 | + 音程と再生速度が少しずれる。yを指定した場合、指定の箇所から再生される(1秒 | |
118 | + 目から再生したい場合は、15700を指定)。x$に長さ0の文字列を指定すると、現在 | |
119 | + 再生中の音楽が停止する。 | |
119 | 120 | PALETTE n,r,g,b |
120 | 121 | パレット指定。 |
121 | 122 | PCG x,y,z |
@@ -123,10 +124,10 @@ PCG x,y,z | ||
123 | 124 | ターデーター。詳細は、下記<PCG>の項を参照。 |
124 | 125 | POKE x,y |
125 | 126 | xで示される物理的アドレスに、yで示される値(1バイト値)を書き込む。 |
126 | -PEEK16(x) | |
127 | +PEEK16 x,y | |
127 | 128 | xで示される物理アドレスに、yで示される値(16ビット値)を書き込む。xが奇数値の |
128 | 129 | 場合、例外停止するので注意。 |
129 | -PEEK32(x) | |
130 | +PEEK32 x,y | |
130 | 131 | xで示される物理アドレスに、yで示される値(32ビット値)を書き込む。xが4の倍数で |
131 | 132 | 無い場合、例外停止するので注意。 |
132 | 133 | PRINT [ xまたはx$またはx# [ ,または; [ yまたはy$またはy# [ ... ]]]] |
@@ -144,24 +145,15 @@ RETURN | ||
144 | 145 | SCROLL x,y |
145 | 146 | 画面を横方向、もしくは縦方向(斜めも可)に動かす。動かす方向と大きさ |
146 | 147 | は、x, yでそれぞれ、横方向の移動度、縦方向の移動度として指定する。 |
147 | -SOUND xxx | |
148 | +SOUND xxx[,y] | |
148 | 149 | 効果音を再生する。詳細は、下記<SOUND>の項を参照。xxxは行番号もしく |
149 | - はラベル。 | |
150 | -SYSTEM x , y | |
151 | - 様々なシステム値の設定を行なう。<SYSTEM>の項を参照。 | |
152 | -USEGRAPHIC [x] | |
153 | - グラフィックディスプレイを使用、もしくは使用停止する。x=0で使用停止、 | |
154 | - x=1, 5, 9で使用、x=2, 6, 10で画面とパレットをクリアーして使用、x=3,7, | |
155 | - 11でグラフィック領域を確保するが表示はキャラクターディスプレイのまま。 | |
156 | - ただし、グラフィックディスプレイ未使用の状態でx=0, 4, 8の場合は、領域 | |
157 | - を確保する。xを省略した場合は、x=1と同じ。 | |
158 | - ただし、xの値が0-3の場合はType-Z互換グラフィック、4-7の場合は標準グラ | |
159 | - フィック、8-11の場合はワイドグラフィック。 | |
150 | + はラベル。Type Mでは、y=1の時右側だけ、y=2の時左側だけ、y=3もしくは | |
151 | + 省略した場合に両方から音が出る。 | |
160 | 152 | USEPCG [x] |
161 | 153 | PCGを使用、もしくは使用停止する。x=0で使用停止、x=1で使用、x=2で |
162 | 154 | キャラクターをリセットして使用。xを省略した場合は、x=1と同じ。 |
163 | 155 | USEVAR xxx [, yyy [, zzz [, ... ]]] |
164 | - 英数字で最大6文字までの変数名を使用できるようにする。 | |
156 | + 英数字とアンダースコアー(_)で最大6文字までの変数名を使用できるようにする。 | |
165 | 157 | このステートメント以降でxxx, yyy等の長い変数名が使用可能となる。 |
166 | 158 | VAR xxx [, yyy [, zzz [, ... ]]] |
167 | 159 | サブルーチン内で使う、ローカル変数を指定する。xxx, yyy等は、A-Zの |
@@ -176,106 +168,6 @@ WIDTH x | ||
176 | 168 | キャラクターディスプレイの横幅を文字数で指定。xは30、36、40、48、 |
177 | 169 | もしくは80。 |
178 | 170 | |
179 | -<グラフィック関連命令> | |
180 | - | |
181 | -BOXFILL [x1,y1],x2,y2[,c] | |
182 | - 座標(x1,y1),(x2,y2)を対角線とするカラーcで塗られた長方形を描画。 | |
183 | -CIRCLE [x,y],r[,c] | |
184 | - 座標(x,y)を中心に、半径r、カラーcの円を描画。 | |
185 | -CIRCLEFILL [x,y],r[,c] | |
186 | - 座標(x,y)を中心に、半径r、カラーcで塗られた円を描画。 | |
187 | -GCLS | |
188 | - 画面クリアー。 | |
189 | -GCOLOR c | |
190 | - それぞれの命令で、cを省略した場合の色を指定。 | |
191 | -GPALETTE n,r,g,b | |
192 | - パレット指定。 | |
193 | -GPRINT [x,y],c,bc,s$ | |
194 | - 座標(x,y)にカラーcで文字列s$を表示、bc:背景色(負数の場合背景色指定なし)。 | |
195 | -LINE [x1,y1],x2,y2[,c] | |
196 | - 座標(x1,y1)から(x2,y2)にカラーcで線分を描画。 | |
197 | -POINT x,y | |
198 | - グラフィック現在位置を、設定する。 | |
199 | -PSET [x,y][,c] | |
200 | - 座標(x,y)の位置にカラーcで点を描画。 | |
201 | -PUTBMP [x,y],m,n,bbb | |
202 | - 横m*縦nドットのキャラクター(bbbで指定)を座標(x,y)に表示。 | |
203 | - サイズm*nの配列bmpに、単純にカラー番号を並べる。 | |
204 | - ただし、カラーが0の部分は透明色として扱う。ただし、bbbはラベル名もし | |
205 | - くは配列へのポインター。 | |
206 | -(GCOLOR()関数も参照のこと) | |
207 | - | |
208 | -<ファイル関連命令> | |
209 | -FCLOSE [x] | |
210 | - ファイルを閉じる。引数(x)がある場合は、そのファイルハンドルで指定されたファ | |
211 | - イルを閉じる。 | |
212 | -FGET x,y | |
213 | - バッファー(xに配列として指定)にyバイト読み込む。関数として呼ばれた場合は、 | |
214 | - 読み込みに成功したバイト数を返す。 | |
215 | -FILE x | |
216 | - アクティブなファイルハンドル(1もしくは2)をxに指定する。 | |
217 | -FOPEN x$,y$[,z] | |
218 | - x$で示される名前のファイルを、y$で示されたモードで開く。同時に開けるファイ | |
219 | - ルの数は、2つまで。関数として呼ばれた場合は、ファイルハンドルを返す。y$と | |
220 | - しては、次のものが有効。 | |
221 | - "r" :ファイルを読み込みモードで開く。 | |
222 | - "r+" :"r"と同じだが書き込みも可能。 | |
223 | - "w" :ファイルを書き込みモードで開く。同名のファイルが在る場合は、 | |
224 | - 以前のファイルは消去される。 | |
225 | - "w+" :"w"と同じだが、読み込みも可能。 | |
226 | - "a" :ファイルを書き込みモードで開く。同名のファイルが在る場合は、 | |
227 | - ファイルは消去されず、ファイルの最後尾から書き込まれる。 | |
228 | - "a+" :"a"と同じだが、読み込みも可能。 | |
229 | - zには、割り当てたいファイルハンドル(1もしくは2)を指定する。省略した場 | |
230 | - 合、1が指定される。 | |
231 | -FPRINT [ xまたはx$またはx# [ ,または; [ yまたはy$またはy# [ ... ]]]] | |
232 | - PRINT命令と同じだが、画面ではなくファイルに情報が書き込まれる。 | |
233 | -FPUT x,y | |
234 | - バッファー(xに配列として指定)のyバイト分を書き込む。関数として呼ばれた場合 | |
235 | - は、書き込みに成功したバイト数を返す。 | |
236 | -FPUTC x | |
237 | - xで示される1バイトのデーターをファイルに書き込む。関数として呼ばれた場合 | |
238 | - は、書き込みに成功したバイト数(1もしくは0)を返す。 | |
239 | -FREMOVE x$ | |
240 | - x$で示される名前のファイルを、SDカードから削除する。関数として呼ばれた場合 | |
241 | - は、削除に成功したか(0)、失敗したか(-1)を返す。 | |
242 | -FSEEK x | |
243 | - xで示されるファイル位置に移動する。 | |
244 | -SETDIR x$ | |
245 | - カレントディレクトリーをx$に移動する。関数として呼ばれた場合、成功すれば0を、 | |
246 | - エラーが有れば0以外を返す。 | |
247 | -(FEOF(), FGETC(), FINPUT$(), FLEN(), FSEEK(), GETDIR$()関数も参照のこと) | |
248 | - | |
249 | -<タイマー及び割り込み関連命令と関数> | |
250 | -USETIMER x | |
251 | - タイマーを開始する。xはタイマーの速度を、μ秒で指定(175769以下の値)。 | |
252 | - | |
253 | -TIMER x | |
254 | - 現在のタイマー値を32ビット整数(x)で設定する。 | |
255 | - | |
256 | -TIMER() | |
257 | - タイマーの現在値を、32ビット整数値として返す。 | |
258 | - | |
259 | -INTERRUPT xxx,yyy[,z1[,z2 ... ]] | |
260 | - 割り込みを設定する。xxxは割り込みの種類、yyyは割り込み時のサブルーチンをラベ | |
261 | - ルで指定。z1, z2等を指定すると、割り込み用サブルーチンの引数となる。使用可能 | |
262 | - な割り込みの種類は以下の通り。 | |
263 | - TIMER | |
264 | - タイマー割り込み。タイマー値が1増えるごとに割り込みがかかる。 | |
265 | - DRAWCOUNT | |
266 | - 1/60秒毎の割り込み。 | |
267 | - KEYS | |
268 | - ボタンの押下状態が変化した時。 | |
269 | - INKEY | |
270 | - キーボード押下時。 | |
271 | - MUSIC | |
272 | - 音楽再生の時、最後の音の再生時に割り込み。 | |
273 | - WAVE | |
274 | - WAVEファイル再生終了時。 | |
275 | - | |
276 | -INTERRUPT STOP xxx | |
277 | - 割り込みを停止する。xxxは割り込みの種類。 | |
278 | - | |
279 | 171 | <整数型関数> |
280 | 172 | 以下、x, y, zは整数値を、x$, y$, z$は文字列を指します。[ ]は省略可能である事 |
281 | 173 | を示します。 |
@@ -296,18 +188,6 @@ CREAD() | ||
296 | 188 | DRAWCOUNT() |
297 | 189 | DRAWCOUNT値を得る。DRAWCOUNTは16ビット整数値で、1/60秒ごとに1ずつ |
298 | 190 | 増える。 |
299 | -FEOF() | |
300 | - FOPENで開いたファイルの現在のファイル位置が、末端に到達しているかどうか | |
301 | - を返す。1で末端に到達、0で未到達。 | |
302 | -FGETC() | |
303 | - FOPENで開いたファイルから1バイト読み込み、整数値として返す。ファイル | |
304 | - 末端に到達しているなどで読み込みに失敗した場合、-1を返す。 | |
305 | -FLEN() | |
306 | - FOPENで開いたファイルのファイル長を、バイト数で返す。 | |
307 | -FSEEK() | |
308 | - FOPENで開いたファイルの、現在のファイル位置を返す。 | |
309 | -GCOLOR(x,y) | |
310 | - グラフィック座標(x,y)の表示中パレット番号を返す。 | |
311 | 191 | GOSUB(xxx [, y [, z [, ... ]]]) |
312 | 192 | GOSUB命令と同じだが、戻り値(RETURNを参照)を得ることが出来る。xxxは、 |
313 | 193 | ラベルもしくは行番号。。yyy, zzz 等は、サブルーチンに引き継がれる引数( |
@@ -353,8 +233,6 @@ SGN(x) | ||
353 | 233 | xの符号(-1, 0, または1)を返す。 |
354 | 234 | STRNCMP(x$,y$,z) |
355 | 235 | 2つの文字列のうちz文字分を比較し、結果を返す。同じ文字列の場合は0。 |
356 | -SYSTEM(x) | |
357 | - 様々なシステム値を、整数値で返す。「<システム変数>」の項を参照。 | |
358 | 236 | TVRAM([x]) |
359 | 237 | ビデオRAMのx番目の内容を、バイト値で返す。xを省略した場合、ビデオ |
360 | 238 | RAMの開始位置の物理アドレスを返す。 |
@@ -429,13 +307,8 @@ CHR$(x) | ||
429 | 307 | xをアスキーコードとする文字を返す。 |
430 | 308 | DEC$(x) |
431 | 309 | xの値を、10進数の文字列として返す。 |
432 | -FINPUT$([x]) | |
433 | - FOPENで開いたファイルから、xで示された長さの文字列を読み込む。xが省略された | |
434 | - 場合は、行の最後まで読み込む(改行コードが含まれる)。 | |
435 | 310 | FLOAT$(x#) |
436 | 311 | 実数値x#を、10進数の文字列として返す。 |
437 | -GETDIR$() | |
438 | - カレントディレクトリーを文字列として返す。 | |
439 | 312 | GOSUB$(xxx [, y [, z [, ... ]]]) |
440 | 313 | GOSUB命令と同じだが、戻り値(RETURNを参照)を文字列として得ることが出来る。 |
441 | 314 | xxxは、ラベルもしくは行番号。。yyy, zzz 等は、サブルーチンに引き継がれる引数 |
@@ -447,8 +320,6 @@ INPUT$() | ||
447 | 320 | 文字列入力状態になり、入力が終了すると(Enterが押されると)文字列を返す。 |
448 | 321 | SPRINTF$(x$,y#) |
449 | 322 | x$で示される書式に従って、実数y#の内容を文字列として返す。 |
450 | -SYSTEM$(x) | |
451 | - 様々なシステム値を、文字列で返す。「<システム変数>」の項を参照。 | |
452 | 323 | READ$() |
453 | 324 | DATA文の後から、一つずつ文字列データーを読み出す。 |
454 | 325 |
@@ -544,6 +415,162 @@ x# OR y# | ||
544 | 415 | AND |
545 | 416 | OR |
546 | 417 | |
418 | +<特殊命令・関数> | |
419 | +IDLE | |
420 | + アイドルモード("wait"アセンブリー)に入る。ビデオ信号作製やタイマーなどの割 | |
421 | + り込みがかかるまで、CPUが停止する。 | |
422 | +OPTION x[,y[,z ... ]]] | |
423 | + 各種オプションを指定する。オプションについては、下記<オプション>の項を参照。 | |
424 | +SYSTEM x , y | |
425 | + 様々なシステム値の設定を行なう。<SYSTEM>の項を参照。 | |
426 | +SYSTEM(x) | |
427 | + 様々なシステム値を、整数値で返す。<システム変数>の項を参照。 | |
428 | +SYSTEM$(x) | |
429 | + 様々なシステム値を、文字列で返す。<システム変数>の項を参照。 | |
430 | + | |
431 | +<グラフィック関連命令と関数> | |
432 | + | |
433 | +BOXFILL [x1,y1],x2,y2[,c] | |
434 | + 座標(x1,y1),(x2,y2)を対角線とするカラーcで塗られた長方形を描画。 | |
435 | +CIRCLE [x,y],r[,c] | |
436 | + 座標(x,y)を中心に、半径r、カラーcの円を描画。 | |
437 | +CIRCLEFILL [x,y],r[,c] | |
438 | + 座標(x,y)を中心に、半径r、カラーcで塗られた円を描画。 | |
439 | +GCLS | |
440 | + 画面クリアー。 | |
441 | +GCOLOR c | |
442 | + それぞれの命令で、cを省略した場合の色を指定。 | |
443 | +GPALETTE n,r,g,b | |
444 | + パレット指定。 | |
445 | +GPRINT [x,y],c,bc,s$ | |
446 | + 座標(x,y)にカラーcで文字列s$を表示、bc:背景色(負数の場合背景色指定なし)。 | |
447 | +LINE [x1,y1],x2,y2[,c] | |
448 | + 座標(x1,y1)から(x2,y2)にカラーcで線分を描画。 | |
449 | +POINT x,y | |
450 | + グラフィック現在位置を、設定する。 | |
451 | +PSET [x,y][,c] | |
452 | + 座標(x,y)の位置にカラーcで点を描画。 | |
453 | +PUTBMP [x,y],m,n,bbb | |
454 | + 横m*縦nドットのキャラクター(bbbで指定)を座標(x,y)に表示。 | |
455 | + サイズm*nの配列bmpに、単純にカラー番号を並べる。 | |
456 | + ただし、カラーが0の部分は透明色として扱う。ただし、bbbはラベル名もし | |
457 | + くは配列へのポインター。 | |
458 | +USEGRAPHIC [x] | |
459 | +Type Mの場合 | |
460 | + グラフィックディスプレイを使用、もしくは使用停止する。x=0で使用停止、 | |
461 | + x=1, 5, 9で使用、x=2, 6, 10で画面とパレットをクリアーして使用、x=3,7, | |
462 | + 11でグラフィック領域を確保するが表示はキャラクターディスプレイのまま。 | |
463 | + ただし、グラフィックディスプレイ未使用の状態でx=0, 4, 8の場合は、領域 | |
464 | + を確保する。xを省略した場合は、x=1と同じ。 | |
465 | + ただし、xの値が0-3の場合はType-Z互換グラフィック、4-7の場合は標準グラ | |
466 | + フィック、8-11の場合はワイドグラフィック。 | |
467 | +Type Zの場合 | |
468 | + グラフィックディスプレイを使用、もしくは使用停止する。x=0で使用停止、 | |
469 | + x=1で使用、x=2で画面とパレットをクリアーして使用、x=3でグラフィック領 | |
470 | + 域を確保するが表示はキャラクターディスプレイのまま。ただし、グラフィッ | |
471 | + クディスプレイ未使用の状態でx=0の場合は、領域を確保する。xを省略した場 | |
472 | + 合は、x=1と同じ。 | |
473 | + | |
474 | + | |
475 | +GCOLOR(x,y) | |
476 | + グラフィック座標(x,y)の表示中パレット番号を返す。 | |
477 | + | |
478 | +<ファイル関連命令と関数> | |
479 | +ファイルは、最大2つまで同時に開く事が出来ます。 | |
480 | + | |
481 | +FCLOSE [x] | |
482 | + ファイルを閉じる。引数(x)がある場合は、そのファイルハンドルで指定されたファ | |
483 | + イルを閉じる。 | |
484 | +FGET x,y | |
485 | + バッファー(xに配列として指定)にyバイト読み込む。関数として呼ばれた場合は、 | |
486 | + 読み込みに成功したバイト数を返す。 | |
487 | +FILE x | |
488 | + アクティブなファイルハンドル(1もしくは2)をxに指定する。 | |
489 | +FOPEN x$,y$[,z] | |
490 | + x$で示される名前のファイルを、y$で示されたモードで開く。同時に開けるファイ | |
491 | + ルの数は、2つまで。関数として呼ばれた場合は、ファイルハンドルを返す。y$と | |
492 | + しては、次のものが有効。 | |
493 | + "r" :ファイルを読み込みモードで開く。 | |
494 | + "r+" :"r"と同じだが書き込みも可能。 | |
495 | + "w" :ファイルを書き込みモードで開く。同名のファイルが在る場合は、 | |
496 | + 以前のファイルは消去される。 | |
497 | + "w+" :"w"と同じだが、読み込みも可能。 | |
498 | + "a" :ファイルを書き込みモードで開く。同名のファイルが在る場合は、 | |
499 | + ファイルは消去されず、ファイルの最後尾から書き込まれる。 | |
500 | + "a+" :"a"と同じだが、読み込みも可能。 | |
501 | + zには、割り当てたいファイルハンドル(1もしくは2)を指定する。省略した場 | |
502 | + 合、1が指定される。 | |
503 | +FPRINT [ xまたはx$またはx# [ ,または; [ yまたはy$またはy# [ ... ]]]] | |
504 | + PRINT命令と同じだが、画面ではなくファイルに情報が書き込まれる。 | |
505 | +FPUT x,y | |
506 | + バッファー(xに配列として指定)のyバイト分を書き込む。関数として呼ばれた場合 | |
507 | + は、書き込みに成功したバイト数を返す。 | |
508 | +FPUTC x | |
509 | + xで示される1バイトのデーターをファイルに書き込む。関数として呼ばれた場合 | |
510 | + は、書き込みに成功したバイト数(1もしくは0)を返す。 | |
511 | +FREMOVE x$ | |
512 | + x$で示される名前のファイルを、SDカードから削除する。関数として呼ばれた場合 | |
513 | + は、削除に成功したか(0)、失敗したか(-1)を返す。 | |
514 | +FSEEK x | |
515 | + xで示されるファイル位置に移動する。 | |
516 | +SETDIR x$ | |
517 | + カレントディレクトリーをx$に移動する。関数として呼ばれた場合、成功すれば0を、 | |
518 | + エラーが有れば0以外を返す。 | |
519 | +FEOF() | |
520 | + FOPENで開いたファイルの現在のファイル位置が、末端に到達しているかどうか | |
521 | + を返す。1で末端に到達、0で未到達。 | |
522 | +FGETC() | |
523 | + FOPENで開いたファイルから1バイト読み込み、整数値として返す。ファイル | |
524 | + 末端に到達しているなどで読み込みに失敗した場合、-1を返す。 | |
525 | +FLEN() | |
526 | + FOPENで開いたファイルのファイル長を、バイト数で返す。 | |
527 | +FSEEK() | |
528 | + FOPENで開いたファイルの、現在のファイル位置を返す。 | |
529 | +FINPUT$([x]) | |
530 | + FOPENで開いたファイルから、xで示された長さの文字列を読み込む。xが省略された | |
531 | + 場合は、行の最後まで読み込む(改行コードが含まれる)。 | |
532 | +GETDIR$() | |
533 | + カレントディレクトリーを文字列として返す。 | |
534 | + | |
535 | +<タイマー関連命令と関数> | |
536 | +タイマーは、通常タイマーとコアタイマーの2つがあります。通常タイマーは速度の設定 | |
537 | +や値の変更など出来る、汎用タイマーです。コアタイマーは、CPUクロックと同期した特 | |
538 | +殊なタイマーで、値を読む事は出来るが設定する事は出来ません。 | |
539 | + | |
540 | +CORETIMER | |
541 | + コアタイマーを用いた割り込みの時期を設定する。コアタイマーの値を変更するわけ | |
542 | + ではない事に注意。 | |
543 | +USETIMER x | |
544 | + タイマーを開始する。xはタイマーの速度を、μ秒で指定(175769以下の値)。 | |
545 | +TIMER x | |
546 | + 現在のタイマー値を32ビット整数(x)で設定する。 | |
547 | +CORETIMER() | |
548 | + 現在のコアタイマーの値を、32ビット整数値として返す。 | |
549 | +TIMER() | |
550 | + タイマーの現在値を、32ビット整数値として返す。 | |
551 | + | |
552 | +<割り込み命令> | |
553 | +INTERRUPT xxx,yyy[,z1[,z2 ... ]] | |
554 | + 割り込みを設定する。xxxは割り込みの種類、yyyは割り込み時のサブルーチンをラベ | |
555 | + ルで指定。z1, z2等を指定すると、割り込み用サブルーチンの引数となる。使用可能 | |
556 | + な割り込みの種類は以下の通り。 | |
557 | + TIMER | |
558 | + タイマー割り込み。タイマー値が1増えるごとに割り込みがかかる。 | |
559 | + DRAWCOUNT | |
560 | + 1/60秒毎の割り込み。 | |
561 | + KEYS | |
562 | + ボタンの押下状態が変化した時。 | |
563 | + INKEY | |
564 | + キーボード押下時。 | |
565 | + MUSIC | |
566 | + 音楽再生の時、最後の音の再生時に割り込み。 | |
567 | + WAVE | |
568 | + WAVEファイル再生終了時。 | |
569 | + CORETIMER | |
570 | + コアタイマーの値がCORETIMER命令で設定した値と一致した時。 | |
571 | +INTERRUPT STOP xxx | |
572 | + 割り込みを停止する。xxxは割り込みの種類。 | |
573 | + | |
547 | 574 | <MUSIC> |
548 | 575 | MUSIC命令では、BGM用のデーターを文字列で指定します。文字列の書式は、ABC |
549 | 576 | notationに準拠しています。ただし、すべての記法が使えるわけではありません。 |
@@ -606,7 +633,7 @@ SYSTEM関数及びSYSTEMステートメントを用いて、各種システム | ||
606 | 633 | とが出来ます。 |
607 | 634 | |
608 | 635 | SYSTEM$(0) |
609 | - MachiKania バージョン文字列、"Zoea"を返す。 | |
636 | + MachiKania バージョン文字列、"Zoea"等を返す。 | |
610 | 637 | SYSTEM$(1) |
611 | 638 | MachiKania バージョン文字列、"1.0"等を返す。 |
612 | 639 | SYSTEM$(2) |
@@ -657,6 +684,8 @@ SYSTEM 200,x | ||
657 | 684 | ディスプレイの表示を停止(xが0のとき)、もしくは開始(xが0以外の時)する。 |
658 | 685 | |
659 | 686 | <入出力命令・関数> |
687 | +入出力機能は、Type Mでのみ使えます。 | |
688 | + | |
660 | 689 | ANALOG(x) |
661 | 690 | PORTBの下位からxビット目のアナログ入力値(10ビット値;0-1023の値)を返す。但 |
662 | 691 | し、x=16, 17, 18の場合は、PORTE5, 6, 7がそれぞれ指定される。 |
@@ -756,11 +785,9 @@ OPTIONステートメントを使って、コンパイル時もしくは実行 | ||
756 | 785 | OPTION NOLINENUM |
757 | 786 | コンパイル時に、行番号を指定する命令を挿入しない。このオプションにより、プロ |
758 | 787 | グラムサイズを小さくして実行速度を増加する効果が見込める。ただし、エラーが発 |
759 | - 生した場合に、どの行でのエラーかは分からなくなる。また、一時領域を使うような | |
760 | - 場合(主に文字列操作)は、該当箇所にLABELステートメントを入れること。 | |
788 | + 生した場合に、どの行でのエラーかは分からなくなる。 | |
761 | 789 | |
762 | 790 | <クラス・オブジェクト関連機能> |
763 | - | |
764 | 791 | クラスとオブジェクトの利用方法について、詳しくはclass.txtを参照して下さい。 |
765 | 792 | 以下は、関連する命令と関数です。 |
766 | 793 |
@@ -785,10 +812,10 @@ NEW(x[,y[,z[, ... ]]]) | ||
785 | 812 | DELETE x[,y[,z[, ... ]]] |
786 | 813 | 作成されたオブジェクトを破棄する。x,y,z等は、オブジェクトを格納する変数名。 |
787 | 814 | CALL x |
788 | - xで指定されたオブジェクトのメソッドを呼び出す。 | |
815 | + xで指定されたオブジェクトのメソッドを呼び出す。「CALL」は省略可。 | |
789 | 816 | |
790 | 817 | <ヒント> |
791 | -KM-1302以降、FOR-NEXTループ、WHILE-WENDループ、DO-LOOPループの途中で、 | |
818 | +MachiKania ver 1.2 以降、FOR-NEXTループ、WHILE-WENDループ、DO-LOOPループの途中で、 | |
792 | 819 | RETURN文が使えるようになりました。ただし、GOTO文でループの外に飛ぶと、予期せぬ結 |
793 | 820 | 果(機器のリセット等)を引き起こします。ただし、GOSUB文でサブルーチンを呼んだり、別の |
794 | 821 | ループをネストして使う事は可能です。 |
@@ -808,10 +835,12 @@ ON GOTO分やON GOSUB文はサポートしていません。ただし、例え | ||
808 | 835 | |
809 | 836 | <バージョン履歴> |
810 | 837 | ・KM-1303 2019年?月公開。 |
811 | - ・タイマー機能(USETIMER,TIMERステートメントとTIMER()関数)を追加。 | |
838 | + ・タイマー機能(USETIMER,TIMER, CORETIMERステートメントとTIMER(), CORETIMER()関 | |
839 | + 数)を追加。 | |
812 | 840 | ・割り込み機能(INTERRUPTステートメント)を追加。 |
813 | 841 | ・オプション機能(OPTIONステートメント)を追加。 |
814 | 842 | ・アイドル機能(IDLEステートメント)を追加。 |
843 | + ・EXEC()関数を追加。 | |
815 | 844 | ・KM-1302 2019年3月公開。 |
816 | 845 | ・オブジェクト指向プログラミングに対応 |
817 | 846 | ・args(0)で引数の数を取得できるようにした |
@@ -207,11 +207,12 @@ void videowidth(int width){ | ||
207 | 207 | |
208 | 208 | int lib_system(int a0, int a1 ,int v0, int a3, int g_gcolor, int g_prev_x, int g_prev_y){ |
209 | 209 | switch(a0){ |
210 | - // Version info | |
210 | + // Version info etc | |
211 | 211 | case 0: return (int)SYSVER1; |
212 | 212 | case 1: return (int)SYSVER2; |
213 | 213 | case 2: return (int)BASVER; |
214 | 214 | case 3: return (int)FILENAME_FLASH_ADDRESS; |
215 | + case 4: return (int)CPU_CLOCK_HZ; | |
215 | 216 | // Display info |
216 | 217 | case 20: return twidth; |
217 | 218 | case 21: return WIDTH_Y; |
@@ -204,11 +204,12 @@ void videowidth(int width){ | ||
204 | 204 | |
205 | 205 | int lib_system(int a0, int a1 ,int v0, int a3, int g_gcolor, int g_prev_x, int g_prev_y){ |
206 | 206 | switch(a0){ |
207 | - // Version info | |
207 | + // Version info etc | |
208 | 208 | case 0: return (int)SYSVER1; |
209 | 209 | case 1: return (int)SYSVER2; |
210 | 210 | case 2: return (int)BASVER; |
211 | 211 | case 3: return (int)FILENAME_FLASH_ADDRESS; |
212 | + case 4: return (int)CPU_CLOCK_HZ; | |
212 | 213 | // Display info |
213 | 214 | case 20: return twidth; |
214 | 215 | case 21: return WIDTH_Y; |