MachiKania
Jeans & Development | 電子ブロック工房 | 三日坊主 | フロントページ |
MachiKania type Pの開発環境 [MachiKania]
2022年9月30日
MachiKania type Pのver 1.1では、USBケーブルで接続したPC上で、BASICプログラムの開発や、クラスライブラリーの開発が行えます。
下の写真は、開発環境の実行例です。操作としては、PC上のテキストエディターでBASICプログラムを編集し、MachiKaniaのリセットボタンを押すだけです。MMC/SDカードの抜き差しや、BASICファイルのドラッグ&ドロップは必要ありません。
この機能は結構便利で、私自身が常用しています。MMC/SDカードの抜き差しをほとんどしなくなりました。以下で、開発環境の構築方法について述べます。
下の写真は、開発環境の実行例です。操作としては、PC上のテキストエディターでBASICプログラムを編集し、MachiKaniaのリセットボタンを押すだけです。MMC/SDカードの抜き差しや、BASICファイルのドラッグ&ドロップは必要ありません。
この機能は結構便利で、私自身が常用しています。MMC/SDカードの抜き差しをほとんどしなくなりました。以下で、開発環境の構築方法について述べます。
MachiKania type Pに、BASICプログラムを埋め込む [MachiKania]
2022年8月10日
MachiKania type Pでは、起動時に自動的に実行するBASICプログラムを指定することができます。これにより、Raspberry Pi Picoの電源を入れると指定のBASICプログラムがすぐに実行されます。
これを行うには、2つの異なる方法があります。
1.MMC/SDカードに、MACHIKAP.BASを保存する
2.MachiKania本体に、実行するBASICプログラムを埋め込む
1の方法は、単にMMC/SDカードのルートに、MACHIKAP.BASという名でBASICプログラムを保存するだけです。特に説明は必要ないと思います。また、MACHIKAP.INIを編集すると、起動時にMACHIKAP.BASとは異なるファイル名のBASICプログラムを実行することもできます。
この記事では、2の方法について述べます。1の方法と異なり、MMC/SDカードも液晶ディスプレイの接続も必須ではありません。Raspberry Pi Pico単体でMachiKaniaおよび埋め込んだBASICプログラムが走ります。従って、様々な組み込み用途でMachiKaniaを使用することができます。
これを行うには、2つの異なる方法があります。
1.MMC/SDカードに、MACHIKAP.BASを保存する
2.MachiKania本体に、実行するBASICプログラムを埋め込む
1の方法は、単にMMC/SDカードのルートに、MACHIKAP.BASという名でBASICプログラムを保存するだけです。特に説明は必要ないと思います。また、MACHIKAP.INIを編集すると、起動時にMACHIKAP.BASとは異なるファイル名のBASICプログラムを実行することもできます。
この記事では、2の方法について述べます。1の方法と異なり、MMC/SDカードも液晶ディスプレイの接続も必須ではありません。Raspberry Pi Pico単体でMachiKaniaおよび埋め込んだBASICプログラムが走ります。従って、様々な組み込み用途でMachiKaniaを使用することができます。
MachiKania type Pの実行速度 [MachiKania]
2022年7月26日
現在、Raspberry Pi Pico用のMachiKaniaを、ケンケンさんと共同で開発中です。これは、MachiKania Type M, Type ZとコンパチブルなBASICコンパイラーを搭載し、表示装置にLCDを使った、Raspberry Pi Pico用のMachiKaniaで、コードネームにPhyllosomaと名付けたものです。正式名称は、MachiKania Type Pになる予定です。近々、公式にversion 1.0を公開します。
Type MやType Zでは、プログラムの実行にMMC/SDカードやNTSCディスプレイが必要でしたが、Type Pではそういったものが無い環境でもBASICプログラムを高速で実行し、I2CやSPIなどのインターフェースで外部機器を制御することが可能です。従って、組み込み用途でのMachiKania Type Pの利用も、ニーズとしてあると考えています。
Raspberry Pi Pico用には、C/C++による開発環境やMicroPythonによる開発環境がすでに提供されていて、これらはニーズに応じて便利に使えます。C/C++で開発すると最速の実行速度が得られる一方、開発環境の構築に手間がかかり、かつ、外部機器との接続用のSDKの呼び出し方も複雑です。他方で、MicroPythonでの開発は外部機器の制御も分かりやすく、開発にかける時間を少なくできますが、実行速度がそれほど速くはありません。
MachiKaniaはC/C++と同じコンパイル形式なので、最速でないにせよ、ある程度の高速実行が可能です。また、Pythonほど強力ではありませんが、オブジェクト指向プログラミングも可能です。
そこで、MachiKaniaの利便性を評価するため、MachiKania・C/C++・MicroPythonで、実行速度の差がどれぐらいあるのか、調べてみました。
Type MやType Zでは、プログラムの実行にMMC/SDカードやNTSCディスプレイが必要でしたが、Type Pではそういったものが無い環境でもBASICプログラムを高速で実行し、I2CやSPIなどのインターフェースで外部機器を制御することが可能です。従って、組み込み用途でのMachiKania Type Pの利用も、ニーズとしてあると考えています。
Raspberry Pi Pico用には、C/C++による開発環境やMicroPythonによる開発環境がすでに提供されていて、これらはニーズに応じて便利に使えます。C/C++で開発すると最速の実行速度が得られる一方、開発環境の構築に手間がかかり、かつ、外部機器との接続用のSDKの呼び出し方も複雑です。他方で、MicroPythonでの開発は外部機器の制御も分かりやすく、開発にかける時間を少なくできますが、実行速度がそれほど速くはありません。
MachiKaniaはC/C++と同じコンパイル形式なので、最速でないにせよ、ある程度の高速実行が可能です。また、Pythonほど強力ではありませんが、オブジェクト指向プログラミングも可能です。
そこで、MachiKaniaの利便性を評価するため、MachiKania・C/C++・MicroPythonで、実行速度の差がどれぐらいあるのか、調べてみました。
FZ/KM mega の紹介 [MachiKania]
2020年2月2日
MachiKaniaで始めるオブジェクト指向プログラミング(その1) [MachiKania]
2019年5月5日
MachiKania ver 1.2から、使用しているBASICコンパイラーがオブジェクト指向に対応しています。MachiKaniaでは、クラスベースのオブジェクト指向プログラミングを採用しています。一つ前の記事では、クラスの使い方について書きました。ここでは、どの様にクラスを作製するかについて、述べます。この記事では、今までオブジェクト指向プログラミングを行なった事がない人でも分かりやすいような説明を、試みてみます。
クラスを作製し利用すると、何がどの様に便利になるのでしょうか。幾つか、挙げてみます。
1. 機能ごとにプログラムが抽象化・パッケージ化され、プログラム全体が見やすくなる
2. よく使う機能をクラスとして作製すれば、再利用が容易になる
3. 作製したクラスをライブラリー登録すれば、いつでも使える
最低でも、これだけの長所が挙げられます。一つ一つ見ていきましょう。
クラスを作製し利用すると、何がどの様に便利になるのでしょうか。幾つか、挙げてみます。
1. 機能ごとにプログラムが抽象化・パッケージ化され、プログラム全体が見やすくなる
2. よく使う機能をクラスとして作製すれば、再利用が容易になる
3. 作製したクラスをライブラリー登録すれば、いつでも使える
最低でも、これだけの長所が挙げられます。一つ一つ見ていきましょう。
MachiKaniaで始めるオブジェクト指向プログラミング(その2) [MachiKania]
2019年5月5日
前回の記事では、クラスを作製して呼び出した際の、プログラムの実行の流れについて見ました。今回は、オブジェクト指向プログラミングの基本中の基本、オブジェクトについて述べます。
MachiKaniaでクラスを使う [MachiKania]
2019年4月5日
MachiKania ver 1.2に於いて、使用しているBASICコンパイラーがオブジェクト指向に対応しました。MachiKaniaではこれまで、黎明期のパソコンで使われた行番号形式のBASICから、構造化プログラミングに対応したBASICまでを扱ってきました。これらのプログラミング形式に加えて、今後はオブジェクト指向プログラミングが出来るようになります。
さて、MachiKaniaのユーザーの皆様の中には、オブジェクト指向プログラミングに対してなじみが無いという方もいらっしゃると思います。この記事では、オブジェクト指向プログラミングとは何かに付いては置いておいて、この新しい機能を使うとMachiKaniaがどんな風に便利になるのかについて、紹介したいと思います。オブジェクト指向プログラミングになじみが深い方々も、MachiKania BASICではそれをどの様に扱うのか、参考にして頂けたらと思います。
MachiKaniaで採用しているオブジェクト指向プログラミングは、クラスベースと呼ばれるものです。従って、この新しい機能を使うには、クラスをどの様に使うかという理解が必要です。ここで、オブジェクト指向プログラミングになじみのない方は、「クラスをどの様に使うか」と言われてもと思うかも知れませんが、とにかく「クラス」なる物があって、それをどう使うのかが大事だということだけ理解しておいて下さい。
さて、MachiKaniaのユーザーの皆様の中には、オブジェクト指向プログラミングに対してなじみが無いという方もいらっしゃると思います。この記事では、オブジェクト指向プログラミングとは何かに付いては置いておいて、この新しい機能を使うとMachiKaniaがどんな風に便利になるのかについて、紹介したいと思います。オブジェクト指向プログラミングになじみが深い方々も、MachiKania BASICではそれをどの様に扱うのか、参考にして頂けたらと思います。
MachiKaniaで採用しているオブジェクト指向プログラミングは、クラスベースと呼ばれるものです。従って、この新しい機能を使うには、クラスをどの様に使うかという理解が必要です。ここで、オブジェクト指向プログラミングになじみのない方は、「クラスをどの様に使うか」と言われてもと思うかも知れませんが、とにかく「クラス」なる物があって、それをどう使うのかが大事だということだけ理解しておいて下さい。
MachiKania BASIC 高速化テクニックあれこれ [MachiKania]
2019年3月27日
MachiKania BASICは、インタープリターではなくコンパイラーです。なので、かなり高速に動作します。しかしながら、もっと速くコードの実行を行ないたいという場面もあるかも知れません。この記事では、開発者だから分かるBASICコード高速実行のテクニックについて、幾つかを紹介します。
MachiKania BASICのオブジェクト指向化について [MachiKania]
2019年3月25日
MachiKania ver 1.2以降では、BASICでのコーディングに於いて、オブジェクト指向プログラミングが行えるようになった。ここでは、その実装方法について、メモを残しておきたい。
MachiKania BASICでは、クラスベースのオブジェクト指向プログラミングを採用している。その文法などについては、ダウンロードファイルの「class.txt」ファイルを参照して頂きたい。
MachiKania BASICでは、クラスベースのオブジェクト指向プログラミングを採用している。その文法などについては、ダウンロードファイルの「class.txt」ファイルを参照して頂きたい。
あのCMのメロディー [MachiKania]
2018年5月26日
関西電気保安協会のメロディーを、MachiKaniaで。Type Z, Type N, 及び KM-BASIC webで再生及びひらがな表示が出来ます。
print music "GGEDDGEDGGAGAzA" USEPCG PCG 0x80,0x2020f42a,0x4a48b000 PCG 0x81,0x10102020,0x50528c00 PCG 0x82,0x08087e04,0x24403c00 PCG 0x83,0x00888482,0x82502000 PCG 0x84,0x0000807e,0x00000000 PCG 0x85,0x0e740a10,0x10080600 PCG 0x86,0x107c087e,0x24403c00 PCG 0x87,0x80be88be,0x88bcba00 PCG 0x88,0x207c203c,0x6ab26400 PCG 0x89,0x0008080c,0x38483400 gosub JPN for j=1 to 14 gosub wm gosub JPN next label waitk if inkey()=0 then waitk end DATA 0x8180,0,0,0x82,0,0x83,0,0x84,0 DATA 0x85,0,0x81,0,0x86,0 DATA 0x87,0,0x84,0,0x88,0,0x81,0 DATA 0x8986,0,0x84,0,0x8380,0 label JPN d=read() if d=0 then return label JPN2 print chr$(d % 256);:d=d/256 if 0<d then JPN2 goto JPN label wm i=music() label waitm2 wait 1 if i=music() then waitm2 return