PHS経由でネットに接続できるEthernetアダプタのファームウェアをハック・前編 ―― 無線インターネット・アクセスを組み込みシステム開発の手駒に
コマンド | 動作の説明 |
dir | ファイル名のリストと無効領域の大きさを表示する |
type[ファイル名] | ファイルの内容を表示する |
delete[ファイル名] | 指定されたファイルを削除する |
defrag | ファイル・システムの無効領域を最適化する |
load[ファイル名] | 指定されたファイルを編集バッファに読み込む. ファイル名を省略すると直前に使用したファイル名が使われる |
save[ファイル名] | 編集バッファを指定されたファイルに書き出す. ファイル名を省略すると直前に使用したファイル名が使われる |
new | 編集バッファをクリアして新しい入力を開始する |
edit行番号 | 指定された行番号のテキストをカーソル・エディットする |
list行番号-行番号 | 指定された行番号の範囲のテキストを表示する |
run | Mainというファイルのmainという関数を実行する |
?式 | 式の値を10進数で表示する |
??式 | 式の値を16進数で表示する |
[↑]キー | 直前に入力した行をもう一度呼び出す |
cont | ブレーク・モードで実行を再開する |
abort | ブレーク・モードを終了して編集モードに移行する |
[CTR]+[C]キー | 実行を中断する.直後に[↑]キーを押すとabortがセットされる |
● Hello World!を表示する
SilentCは対話型のC言語インタープリタです.ソース・ファイルを作成するだけで,すぐに実行できます.最も簡単なプログラムである"Hello World!"と表示させるプログラムを作成してみましょう.まず,newというコマンドを実行します.これは,現在編集中のデータを消去して新たにプログラムを入力するときの初期化コマンドです.次に,以下の1行を入力します.
10 main(){PrStr("Hello World!エrエn");}
先頭の10はBASICの行番号と同じ働きをします.先頭に数字を付けてテキストを入力すると,そのテキストは先頭の番号順にバッファ内に蓄積されます.例えば同じ番号を入力すると,その行を入れ替えます.また,番号のみを入力するとその行が削除されます.入力したらlistコマンドで今入力したテキストを表示させてください.入力に間違いがなければファイルに書き出します.
save Mainというコマンドを実行してください.このコマンドにより,今入力したテキストがファイルに保存されます.このとき,先ほど先頭に付加した行番号は取り除かれ,普通のテキスト・ファイルとして書き出されます.
ファイル名は必ずMainという名前にしてください(先頭のMは大文字).ここでdirコマンドでファイルが作成されていることを確認してください.また,type Mainとすることでファイルの内容も確認できます.
ここまでうまくいったら,プログラムを実行させてみましょう.runコマンドを実行すると,Mainというファイルの中のmain()という関数を実行します.先ほど入力した1行はmain()関数の宣言文で,runコマンドで実行を開始します.うまくいきましたか? うまくいけば,以下のようにHello World!が表示されるはずです.もし何かエラーが出た場合はedit 10というコマンドを入力し,カーソルを利用してテキストを修正してください.
run
Hello World!
OK
● ファイル内の関数を呼び出す
このように,SilentCでは入力したテキストをコンパイルすることなく即座に実行します.Perlなどのスクリプト言語に共通する手軽さがあります.すべてのプログラムはファイル上に存在します.そこで,よく使うプログラム(ライブラリ)はファイルにまとめて入れておけば,いつでも呼び出せます.少し実験してみましょう.
先ほど入力したプログラムがまだ編集バッファに残っているはずです.念のため,listコマンドで確認してください.もし消えてしまっていたら,load Mainコマンドで編集バッファに読み込みます.次に,このプログラムをsave HelloというコマンドでHelloというファイルに書き込みます.この時点では,先ほど作成したMainと今書き出したHelloという二つのファイルにはまったく同じ内容が格納されているはずです.
さて,今作成したHelloというファイルを早速実行してみましょう.以下のようにコマンドを打ち込んでみてください.ファイル名::関数名();で指定したファイルの指定した関数を呼び出すことができます.また,このmain関数には引き数がないので,()を省略することも可能です.
Hello::main;
Hello World!
OK
edit 10と入力することで,現在の編集バッファにあるプログラムを修正します.カーソルを移動させて,以下のようにプログラムを修正してください.forを利用して何度か関数を呼び出すサンプルを作成します.
10 main(){int i;for(i=0;i<5;i++)Hello::main;}
次にsave Mainと入力すると,今入力したプログラムをMainに書き込みます.runで実行させると,期待通りに動作してくれるはずです.ちなみにrunコマンドは内部的にはMain::main;を実行しています.同じようにSilentCでsocketライブラリを操作すれば,TCP/IPを利用したネットワーク・アプリケーションを作成できます.