「GMC-4(FXマイコン)専用ちびBASICクロス・コンパイラ(G4CBASIC)」を更新しました。
Ver0.205です。DIM文やら色々追加しました。
http://softyasu.net/g4cbasic.html
かなり変更したのでバグが出るかもしれません。
今回の変更。
・ARRAY配列宣言専用のDIM文を追加。
・RND2の書き方が変わりました。DIM文でRND2専用の配列を宣言します。
・配列や変数のメモリアドレスが可変になりました。
・変数がA-Zまで使えるようになりましたが、個数は制限があります。
・LED_DISP()のパラメータなしの書き方を追加。L1,L2変数でLEDを制御します。
・DATA文の書き方がかわりました。変数の初期値を宣言できます。
・アセンブラがYasuhoさんの「GMC-4 アセンブラ」専用になりました。
http://www.geocities.jp/yasuho68k/gmc4/index.html
・2進数を追加しました。
・分かり辛かったFOR~NEXTやDO~UNTILの対応間違いの警告をするようにしました。
・FOR~NEXT ダウンカウントが可能になりました。
・レジスタを直接扱うデンジャラスな特殊変数$Arと$Yrを追加しました。
特にレジスタを直接扱う$Arと$Yrはデンジャラスです(^^ゞ
このデンジャラスなレジスタ変数でこんな書き方が出来ます。
FOR $Yr = 3 TO 0 LED_ON($Yr) TIMER(4) LED_OFF($Yr) $Yr = $Yr - 1 NEXT |
2009/07/30 | プログラミング | COMMENT(0) | TRACKBACK(0) TOP
「GMC-4(FXマイコン)専用ちびBASICクロス・コンパイラ(G4CBASIC)」を更新しました。
Ver0.103です。DATA文と乱数を追加しました。
http://softyasu.net/g4cbasic.html
ちまちま最適化も色々行っています。
かなりむちゃな最適化しているのでバグっている可能性がありますが、もし見つけたら教えてください。
ざっと内容は
・条件式の<や>の特定パターンの最適化。
・特定パターンのコードの最適化を色々と。
・エラーメッセージをすべて日本語で分かりやすくしてみました。
・乱数を追加。高精度と低精度の2種類です。
・大人の科学のサンプル・プログラムの7~10を追加。全部クリアしました!
・IFINPUTでキーの値を保存しない条件を追加。
・DATA文を追加。読み出しはARRAY[]で。変数の初期化も出来ます。
※シミュレート機能を未サポートにします。新機能に対応できないためです。
今後のVer0.200では、DATA文の拡張とDIM文の追加、変数のアドレス割付変更を予定しています。
LED_DISP()関数のパラメータもメモリやコード節約のため変更予定。
$Yrや$Arと言う内部レジスタを直接扱う記述も可能にする予定です。
BASICで書いたゲームも開発中ですが、今のままではメモリが足りない・・・。
このBASICでこんなプログラムを作ったよとか、バグ見つけましたとか教えてくださいね。
ではでは。
2009/07/23 | プログラミング | COMMENT(0) | TRACKBACK(0) TOP
「GMC-4(FXマイコン)専用ちびBASICクロス・コンパイラ(G4CBASIC)」新バージョン作成中。
ざっと更新予定の内容は
・条件式の<や>の特定パターンの最適化。
・一部パターンのコードの最適化。
・エラーメッセージをすべて日本語で分かりやすくしてみました。
・乱数を追加。高精度と低精度の2種類です。
・大人の科学のサンプル・プログラムの7と8を追加。あと2つ!
・IFINPUTでキーの値を保存しない条件を追加。
・DATA文を追加。読み出しはARRAY[]で。変数の初期化も出来ます。
地道に削ってます(^^ゞ。
あと乱数関数とか、DATA文とか追加しました。
木曜日には公開できると思います。
ではでは。
2009/07/23 | プログラミング | COMMENT(0) | TRACKBACK(0) TOP
【GMC-4】4ビットマイコンを自動プログラムロード【大人の科学】 ニコニコ動画
GMC-4用の自動プログラムローダです。
リレーを使っているので、電子式というよりも電気式?
でも、なんかカッコイイ・・・。
プログラムと回路を公開してくれるみたいなので楽しみに待ちたいと思います。
2009/07/19 | プログラミング | COMMENT(0) | TRACKBACK(0) TOP
「GMC-4(FXマイコン)専用ちびBASICクロス・コンパイラ(G4CBASIC)」を更新しました。
色々と最適化を盛り込んだVer0.051を公開しました。
http://softyasu.net/g4cbasic.html
ざっと内容は
・即値の場合に徹底的に最適化。
・変数処理に関して最適化。
・=条件式の最適化。
・FOR文の最適化。
・大人の科学のサンプル・プログラム対応のための特殊命令追加。
って感じです。
色々最適化したので、マシン語が少しテクニカルなコードっぽくなってきちゃいました。
マシン語の参考例としては、こんな書き方もあるよってことで(^^ゞ
最適化の基本的なところは抑えましたので、今後は地道に削っていく予定です。
あと乱数関数とか、DATA文とかコードを書くのに便利なものを追加予定。
このBASICでこんなプログラムを作ったよとか、バグ見つけましたとか教えてくださいね。
ではでは。
2009/07/19 | プログラミング | COMMENT(0) | TRACKBACK(0) TOP
「GMC-4(FXマイコン)専用ちびBASICクロス・コンパイラ(G4CBASIC)」のバグ修正。
申し訳ありません。またまたバグ修正です。
Ver 0.021でのバグを修正したVer 0.03000.031を公開しました。
http://softyasu.net/g4cbasic.html
バグの修正内容は、条件式バグ修正です。
機能追加として、
・命令のある行にもコメント可能にしました。→コメント中の命令文でエラーになるのを修正。
・60番地を超えたらエラーとしました。
・マシン語のステップ表示を可能にしました。
以上です。
ただいま最適化作業中。またバグるかも知れません(^^ゞ
念入りにテストしてアップします。
2009/07/18 | プログラミング | COMMENT(0) | TRACKBACK(0) TOP
「GMC-4(FXマイコン)専用ちびBASICクロス・コンパイラ(G4CBASIC)」のバグ修正。
Ver 0.011でバグを修正したVer 0.021を公開しました。
http://softyasu.net/g4cbasic.html
バグの修正内容。
1.INPUT文で変数に代入してなかった!
2.FOR A=0 TO 15で無限ループ。
3.条件式でワークメモリが破壊される場合があった。
4.50番地を超えたときに警告されていなかった。
以上です。
あと一部の条件式を最適化してみましたが実験段階で、土日にかけて本格的な最適化を図るつもりです。大体目処は立っているのでかなり最適化できるはずなんですけどね。
それと「大人の科学」に載っているサンプルのprogram1~4を移植したBASIC板を添えてあります。
※ただし、3と4は移植に問題あり。将来的には対応する予定。
2009/07/17 | プログラミング | COMMENT(0) | TRACKBACK(0) TOP
「GMC-4(FXマイコン)専用ちびBASICクロス・コンパイラ(G4CBASIC)」のバグ報告。
公開したコンパイラですがVer 0.011でバグがいくつか発覚。
http://softyasu.net/g4cbasic.html
1.INPUT文で変数に代入してなかった!
2.FOR A=0 TO 15で無限ループ。
他にもありそうですね。
人柱募集中です。よろしくお願いします。
2009/07/15 | プログラミング | COMMENT(0) | TRACKBACK(0) TOP
「GMC-4(FXマイコン)専用ちびBASICクロス・コンパイラ(G4CBASIC)」とりあえず完成
大変お待たせしました。
コンパイラがとりあえず出来ましたので公開します。
http://softyasu.net/g4cbasic.html
最適化がまだまだですので、今後も最適化を十分に進めていきます。
よろしくお願いします。
しかし配列の代入は何とかして出来ないものだろうか?
下手なパズルよりも難しい・・・。
例を挙げると
50番地にある値Xを添え字として、51番地の内容を5X番地に代入が出来ないかって話です。
GMC-4だと無理なんですかねぇ。
2009/07/15 | プログラミング | COMMENT(2) | TRACKBACK(0) TOP
「GMC-4(FXマイコン)専用ちびBASICクロス・コンパイラ(G4CBASIC)」近況
すいません構文解析は出来たのですが、余分な機能も作ってましてまだ完成していません。
それとboost::spiritはあまりのコンパイルの重さにめげて結局bison/flexで組んじゃいました。
土日の間に作りますんで、今しばらくお待ちください。
とりあえず、コマンドプロンプトでコンパイルするオーソドックな形で提供します。
おまけ:ちびBASICで書くとこうなるよってサンプルです。
かなり独自な文法もありますが、ご容赦ください。
REM terusさんのgmc4ccのサンプルの移植版です。
REM http://terus.jp/engineering/gmc4cc/
A = 0
PRINT A
DO
IFINPUT B THEN
SOUND(B)
A = A + B
PRINT A
TIMER(4)
ENDIF
UNTIL FALSE
2009/07/11 | プログラミング | COMMENT(0) | TRACKBACK(0) TOP
東京の方では、「マイコンナイト」が7月5日に開催される様ですが地方ですので参加できません。
http://d.hatena.ne.jp/otonanokagaku/20090629
しかし地方も負けていられません!微力ながら4ビットマイコン応援のため大人の科学24号付録のGMC-4(FX)マイコン用のコンパイラを作ります!
名づけて「GMC-4(FXマイコン)専用ちびBASICクロス・コンパイラ(G4CBASIC)」!!
Windows上で動くアプリで、FXシミュレータ用のfxpファイルも出力できる予定。最適化は最初は無しなのでマシン語としての効率は悪いですが暖かい目で見守ってください。
構文は、こんな感じ。
変数 AからM
ARRAY[式]
単項 NEG
2項 + - SFT
条件 > != = <
代入式 変数=式
数値 0~9,#A~#F
FOR 変数=式 TO 式 NEXT
DO UNTIL 条件式
IF 条件式 THEN 文 ELSE 文 ENDIF
BREAK
END
PRINT 式
INPUT 変数
REM コメント
PRINT_OFF
LED_ON(式)
LED_OFF(式)
SOUND(式)
TIMER(式)
LED_DISP(式,式)
2009/07/11 | プログラミング | COMMENT(3) | TRACKBACK(0) TOP
基本動作の確認は出来たのでこれから遊んでみます。
電子ブロックのFXマイコンは遊んだことがなかったので新鮮ですね。
2009/07/04 | プログラミング | COMMENT(0) | TRACKBACK(0) TOP