Natural Tiny Basic (NT-Basic)

内部構造


Natural Tiny Basic (NT-Basic) は、システムの中で少なくとも3つの層で全体が構成される想定で作られています。

Natural Tiny Basic (NT-Basic) は、小規模組み込みシステムで動作させる事を前提に設計されています。 また、libcを含む外部ライブラリへの依存は一切なく、最小限の依存関係で成立するように意図されています。 シェル上でソースコードに対して「grep 'include <' *」を実行して頂ければわかりますが、外部ライブラリを参照するinclude文は、main.cとhal.cにしか含まれません。 そして、これらmain.cとhal.cは、単にコンピュータ環境上で動作を確認するために仮に実装されたもので、Natural Tiny Basic (NT-Basic)の本質的なものではありません。 main.cは、一般的なファイルシステムからプログラムを読み込む例として示したもので、小規模組み込みシステムでは別の形を取るかもしれません。 hal.cは、ハードウェア抽象化層です。対象システムに応じて実装を変更可能です。 progeditとtexteditは、サンプルにおけるプログラム格納領域を提供する機能を持ちますが、実際の組み込みでは不要でしょう。

階層別の機能

アプリケーション層

アプリケーション層は、組み込み対象システムに完全に依存する層です。 Natural Tiny Basic (NT-Basic)のデフォルトの実装は、コンピュータ環境で実行する事を前提にlibcを用いたファイル読み込み型のアプリケーションになっています。 組み込み形態に応じてデフォルトの実装を取り除いて所望のアプリケーションを構成して下さい。

モジュール名機能
mainコンピュータ環境で実行可能なサンプル・プログラム
progeditプログラム・エディタ・モジュール
texteditテキスト・エディタ・モジュール

NT-Basic層

NT-Basic層は、Natural Tiny Basic (NT-Basic)を構成する主要なモジュールが含まれる層です。

上位

NT-Basicの上位層は、アプリケーション層との界面を司る部分で、全てのインタフェースの源を提供します。 幾つかのモジュールで構成されていますが、基本的にntbasic.hをインクルードするだけで済むようになっています。

モジュール名機能
ntbasicNT-Basicのインターフェースモジュール

中位

NT-Basicの中位層は、NT-Basicが内部で使用するモジュール群で構成されています。 一部の定義はアプリケーション層でも使用しますが、必要な依存関係はntbasic.hから呼び出されて自動的に解決されます。

モジュール名機能
coreNT-Basicのコア・モジュール
statementNT-Basicの文法評価処理モジュール
expressionNT-Basicの数式評価処理モジュール
variableNT-Basicの変数管理処理モジュール

下位

NT-Basicの下位層は、NT-Basicがモジュール内部で使用するライブラリが含まれる層です。 組み込みで特に重要なのはhal.cで、この実装によってPRINT構文やINPUT構文がどこから入力を得るのかが決まります。

モジュール名機能
tinyrand乱数発生モジュール
ntlibc独自libcモジュール
halハードウェア層抽象化モジュール

ハードウェア層

Natural Tiny Basic (NT-Basic)の組み込みに際して、上記のアプリケーション層、NT-Basic層が階層毎に適切に分離されている設計において、特にハードウェア層に求められる事はありません。 ハードウェアとの界面はNT-Basicの下位層に含まれるhal.cによって分離定義されます。