IC・トランジスタで出来たコンピューターを設計・製作するためのブログ
Jeans & Development | 電子ブロック工房 | 三日坊主 | フロントページ |
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
ハンダゴテを買い換え [一般的なこと]
2017年5月20日
PIC32MXで、USBメモリーを扱う [PIC]
2017年4月1日
ちょっと訳あって、マイコンからUSBメモリーへのアクセスの方法を探っている。この手のことをする場合、最近はほとんどMicrochip社のPIC32MXを使っているので、今回もこれでどうやるのかを探ってみた。
回路は、以下の通り。なお、パスコンはすべて0.1 μFで。

回路は、以下の通り。なお、パスコンはすべて0.1 μFで。

MachiKaniaでI2C接続 技術編 [MachiKania]
2017年3月12日
「MachiKaniaでI2C接続」の技術的なことに関するメモ。なお、この記事はver 0.5に基づいて記述されている。
I2C接続のBASICコードのSVNレポジトリーは、こちら。
https://osdn.net/users/kmorimatsu/pf/kmbasic/scm/tree/head/applications/trunk/i2c/
主に、I2Cnauplia.txtで記述しているコードについて、解説したい。以下の図の黒字で記述された部分は、I2C仕様書からの引用である。

このシグナルを、BASICコードでどの様にして扱っているかについて(赤字での記述)、述べる。
I2C接続のBASICコードのSVNレポジトリーは、こちら。
https://osdn.net/users/kmorimatsu/pf/kmbasic/scm/tree/head/applications/trunk/i2c/
主に、I2Cnauplia.txtで記述しているコードについて、解説したい。以下の図の黒字で記述された部分は、I2C仕様書からの引用である。

このシグナルを、BASICコードでどの様にして扱っているかについて(赤字での記述)、述べる。
MachiKaniaでI2C接続 紹介編 [MachiKania]
2017年3月4日
MachiKania type N 及び type Zで使える、I2C接続のためのBASICコードを作成しました。実行中の動画は、次のリンク先で見ることが出来ます。
https://twitter.com/kats_me/status/802376453098590209(MachiKaniaのディスプレイ上の表示が、若干異なる可能性があります。)
I2C接続のためのテストには、Microchip社のMCP23017を使用しました。これは、汎用のI/Oポートを持ったICで、I2C接続で用いることが出来ます。回路図は、以下の通りです(2017-03-12、変更)。

MachiKaniaへの接続は、PIC32MXのRB7及びRB10を用います。それぞれ、16番及び21番ピンで、down/upボタンに接続されています。MCP23017の使用方法については、Microchipの説明書(PDFファイル)を参照して下さい。
https://twitter.com/kats_me/status/802376453098590209(MachiKaniaのディスプレイ上の表示が、若干異なる可能性があります。)
I2C接続のためのテストには、Microchip社のMCP23017を使用しました。これは、汎用のI/Oポートを持ったICで、I2C接続で用いることが出来ます。回路図は、以下の通りです(2017-03-12、変更)。

MachiKaniaへの接続は、PIC32MXのRB7及びRB10を用います。それぞれ、16番及び21番ピンで、down/upボタンに接続されています。MCP23017の使用方法については、Microchipの説明書(PDFファイル)を参照して下さい。
MachiKania type Zで使われている多次元配列の実装について [MachiKania]
2016年10月23日
MachiKania type Zでは、多次元配列をサポートしている。そのアルゴリズム及び実装方法についてのメモ。
MachiKaniaで和音出力(ちょっと失敗編) [MachiKania]
2016年6月5日
PIC32MXは、コンパレーター用のD/Aコンバーターを内蔵している。以前、NTSCビデオシグナルの作成用に使えないかと色々調べた時、データーシートにsetting timeが10 μseconds(100 kHz)とあるのを見て、MHz単位でのシグナル変化が要求されるビデオシグナルには使えないことを知り、諦めた。
他方、100 kHzのsetting timeは、音声出力には十分の筈である。CDのサンプリングレートである44.1 kHzを、超えている。この機能を用いて、PIC32MX / MachiKaniaで音声出力が出来ないか、調べてみた。
CVrefoutは、28ピンのPIC32MXでは、25番ピン(RB14)に出力できる。MachiKaniaでは"Fire"ボタンの入力に用いられているものの、テスト目的であれば、ボタンを押さなければ出力にも使えるはずである。ここから、トランジスターのベースにつなぎ、エミッターフォロワーにして、スピーカー(もしくは、TVの音声入力)につないでみた。

他方、100 kHzのsetting timeは、音声出力には十分の筈である。CDのサンプリングレートである44.1 kHzを、超えている。この機能を用いて、PIC32MX / MachiKaniaで音声出力が出来ないか、調べてみた。
CVrefoutは、28ピンのPIC32MXでは、25番ピン(RB14)に出力できる。MachiKaniaでは"Fire"ボタンの入力に用いられているものの、テスト目的であれば、ボタンを押さなければ出力にも使えるはずである。ここから、トランジスターのベースにつなぎ、エミッターフォロワーにして、スピーカー(もしくは、TVの音声入力)につないでみた。

MachiKaniaで日本語表示 [MachiKania]
2016年5月4日
MachiKania では、PCG機能を用いて、8x8ドットの任意のキャラクターを表示することが出来ます。この機能を用いて日本語を容易に表示するツールを作ってみました。

