Follow #ソシム販売部Twitterアイコン

 

タイニーBASICをCで書く

鈴木 哲哉

Raspberry Pi、Arduino、PICでタイニーBASICを走らそう!!

定価
3,520円(本体価格 3,200円)
  • 発売日
    2016年4月23日
  • 判型/ページ数
    B5変形/288ページ(1C)
  • ISBN
    978-4-8026-1020-9
  • 備考
    -
キーワード:
/

本書では、簡易版のプログラミング言語であるタイニーBASICの処理系をC言語で記述する方法を解説します。本書で紹介する「豊四季タイニーBASIC」は、コンパクトかつ移植性に優れ、一般的なPCで稼働するだけでなく、Raspberry Pi、ArduinoなどのマイコンボードやPICでも稼働します。インタプリタ系の言語であるBASICがどのような処理を行っているか、また、各種マイコンボードへの移植、Lチカなどの機能拡張のポイントなどを詳しく解説しています。

第1章 基礎編 開発の足場を固める

実物で言語仕様を把握する
開発の方針
構造がわかりやすく移植や拡張が容易な BASICを目指す
パロアルトタイニーBASICの外形的な働きをお手本とする
マイクロソフトBASICにならって中間コードを取り入れる
入出力装置は端末のみをサポートする
雛形の取り扱い
試用できて移植や拡張の原型となる 4 つの雛形
Windows版の実行ファイルとソース
Linux版の実行ファイルとソース
Arduino版のスケッチとソース
PIC24F版の HEXファイルとソース
もぐらたたきとバーサライタの製作例
雛形の言語仕様
キーワードとエラーメッセージ
命令─LIST、RUN、NEW
文(一般)─ PRINT、INPUT、LET、REM
文(実行制御)─ IF、GOTO、GOSUB ~ RETURN、FOR ~ NEXT、STOP
関数─SIZE、ABS、RND
カスタマイズの方法
RAMの割り当てを定義するシンボルの概要
文字列バッファの長さを決める SIZE_LINE
中間コードバッファの長さを決める SIZE_IBUF
プログラム保存領域のサイズを決める SIZE_LIST
GOSUBスタックの深さを決める SIZE_GSTK
FORスタックの深さを決める SIZE_FSTK
配列の数を決める SIZE_ARRY

第2章 移植編 個別の事情に対処する

内部の構造に少し立ち入る
ソースの成り立ち
起動用のソースと本体のソースを切り分けた構成
コンピュータに固有のセットアップを受け持つ起動用のソース
豊四季タイニー BASICの言語仕様を実現する本体のソース
本体のソースにおける冒頭部分と本体部分の相互作用
端末の制御
端末のあらゆる制御を実現する 3 個の関数
Linux版の端末の制御
Arduino版の端末の制御
PIC24F版の端末の制御
コンピュータの仕組みに依存しない端末の制御
乱数の生成
見破られがちなパロアルトタイニー BASICの乱数
タイマの値を利用する Windows版と Linux版の乱数
ADコンバータの値を利用する Arduino版の乱数
不定なレジスタの値を利用する PIC24F版の乱数
移植の勘どころ
京から LPC1114 まで幅広く許容する移植の条件
LPC1114 マイコンボードの設計と製作
mbedオンラインコンパイラによるプロジェクトの作成
起動用のソース main.cppの記述
本体のソース basic.cppの記述
FlashMagicによるファームウェアの書き込みと動作確認

第3章 構造編 動作の不思議をなくす

キーテクノロジーをモノにする
中間コードの構造
中間コードの仕組みを支えるメモリの構造
プロンプトに対する1行の入力を中間コードの並びに変換する処理
プログラム保存領域の構造と各行を指し示す方法
プログラムの1行分をリストへ挿入する処理
中間コードの1行分を可読文字列で表示する処理
処理の過程でエラーを検出した場合の対応
実行制御の仕組み
実行制御で重要な役割を果たすポインタ clpと cip
実現方法に決定版が存在しないRAM上の小道具
BASICの構造の頂点に位置する関数basic
命令が実行される仕組み
プログラムの分岐が実行される仕組み
プログラムの繰り返しが実行される仕組み
プログラムの条件分岐が実行される仕組み
プログラムの終端処理
式の構文解析
C言語で記述するのに適した構文解析の手法
再帰的呼び出しによる括弧の値の計算
優先順位が最高に位置づけられる値の取得
演算子の優先順位を考慮した計算の手順
条件式を含めてどんな式でも計算できる万能の関数
一般の文の実行
一般の文が実行される仕組み
代入文を実行する関数
PRINT文を実行する関数
INPUT文を実行する関数

第4章 拡張編 装置の個性を生かす

作る側から使う側へ引き継ぐ
LEDの点滅
LED文の文法を決めて書式の詳細を詰める
Arduino版の起動用のスケッチにセットアップを追加する
Arduino版の本体のソースにキーワードを追加する
キーワードに対応する処理を組み立てる
Raspberry Piのボード上のLEDをGPIOと連動させる
何もしなくていい時間があったらほかのタスクに譲る
Linux版の起動用のソースにセットアップを追加する
Linux版の本体のソースに文を追加する
スイッチの読み取り
関数SWの文法を決めて書式の詳細を詰める
Arduinoでスイッチの状態を読み取る方法
Arduino版のスケッチに関数を追加する
Arduino版のプログラムによる関数SWの動作確認
Raspberry Piでスイッチの状態を読み取る方法
Linux版のソースに関数を追加する
Linux版のプログラムによる関数SWの動作確認
セーブとロード
SAVE命令とLOAD命令の書式を決めて機能の詳細を詰める
本体のソースにキーワードを追加する
本体のソースに命令を追加する
SAVE命令に対応する関数を追加する
LOAD命令に対応する関数を追加する
SAVE命令とLOAD命令の動作確認
Linux版のSYSTEM命令に関する補足
マイコン特化機能
マイコンの個性を生かすセーブとロードの構想
セーブとロードのキーワードを追加する
SAVE命令とLOAD命令を追加する
LINK文を追加するとともにプログラム中の命令をハネる
不揮発性メモリを読み書きする方法
パワーオンランの動作確認
LINK文の動作確認

Column【コラム】
◎東大版タイニー BASICの実物を動かしてみる
◎ハローワールドの正しい書きかた
◎気が進まないPOUT文とPIN関数

ダウンロードデータ

本書で解説したサンプルデータをダウンロードできます。
なお、使用方法などに関しては、必ず書籍の該当箇所をご確認の上、ご利用ください。
ダウンロード後、解凍したファイル内に「readme.txt」ファイルなどが含まれる場合は、使用前にこちらもご確認ください。

(約2MB。zip形式で圧縮してありますので、ダウンロード後解凍してください)。サンプルファイルの詳細は解凍後に作成される「suppot」フォルダの「index.html」をご参照ください。

お問い合わせ

本書に関するお問い合わせは、下記のボタンをクリックしてお問い合わせフォームよりお問い合わせください。

この書籍を問い合わせる

[ この書籍をシェアする ]

新刊から本を探す

もっと見る

カテゴリから本を探す

シリーズから本を探す

本を探す