NO.83 tiny BASIC interpreter2

83_tiny_basic2.png

概要

追記:tinyBasic3を作りました。NO.94 tiny_basic3を参照してください。

言語開発合宿(2泊3日の期間内に、オレ言語の仕様とその処理系を作るというイベント)の製作物です。NO.80のものに命令語を追加して、FizzBuzzを動かしてみました。

前回の実装分:「FOR, NEXT, PRINT, GOSUB, RETURN, END」
今回の追加:「IF(条件は=(イコール)のみ対応), RND, CIRCLE, LINE」

  • FizzBuzzのソース
    10 FOR I=1 TO 100
    20 IF I%15 = 0 THEN GOTO 80
    30 IF I% 3 = 0 THEN GOTO 100
    40 IF I% 5 = 0 THEN GOTO 120
    50 PRINT I
    60 NEXT
    70 END
    
    80 PRINT "FizzBuzz"
    90 GOTO 60
    
    100 PRINT "Fizz"
    110 GOTO 60
    
    120 PRINT "Buzz"
    130 GOTO 60

補足説明

もしかしたら言語開発合宿のリンクから飛んできた方に、いきなりソースコードを見せるのはよろしくないので少し補足説明をさせていただきます。まず、83_tiny_basic2.zipを解凍すると、ファイルとフォルダ構成は以下のようになっています。

  • gbfs
  • org
  • src
  • test2.gba

gbfsフォルダはBASICのソースコードが置いてあります。これはGBA上でfopenやfseekなどを使う為の擬似ファイルシステムを使うためです。orgフォルダは、このソフトを作る為に参考にしたソースコードです。www.programmersheaven.comから拝借しました。srcフォルダはソースコードが一式入っています。Basicインタプリタは「basic.h、basic.c」だけで動いているので、それ以外は読まなくても問題ありません。

最後にtest2.gbaファイルはGBAのROMファイルです。エミュレータで実行していただければ上記のキャプチャー画面のようなものが表示されます。エミュレータを持っていない場合こちらから入手してください。操作方法は矢印キーとZボタンだけとなっています。

参考リンク

開発環境

  • devkitARM r20

更新履歴

  • 2007/09/25

添付ファイル: file83_tiny_basic2.zip 1134件 [詳細] file83_tiny_basic2.png 415件 [詳細]

Last-modified: 2008-03-04 (火) 21:33:40 (5186d)