こんにちは、ソフトブレインのシニアAです
いつもSE道場をお読み頂きありがとうございます
本日は現在につながる無線通信を使ったシステムです
ではどうぞ・・・
『最後にシニアAさん、先週の報告をお願いします。』
『はい課長。 私が担当しているCADシステムの進捗ですが・・・・・』
1980年代に勤めていた会社は毎週金曜日の朝、各課ごとに週報会を行っていた
『次に、A社よりお仕事を受注しました。 コードレス電話制御ソフトです。 開発はTさん・シニアAさん・Eさんの3人を予定しています。』
『はい、わかりました。 何か詳しい資料がありますか』
『ここにある。 私の分を含めて、コピーしておいてほしい。』
毎回、こんな感じで開発がスタートする
メンバーのTさんは中途入社、Eさんは新卒経験1年目の若手だ
「電話機制御システム」というタイトルの資料を開けてみると、ハードウェアのことばかり書いてあり、ソフトウェアのことは最後の方にちょろっと書いてあった
「パリティビットとCRCにより誤り検出・補正の実施」「チャンネルの競合によるチャンネルの切り替え」などの文が読み取れた
当時、経験が浅かった私にとって、読んですぐ、難しい処理があるんだなという感想を持った
電話機制御システムは、CPUはザイログ社Z80、言語はZ80アセンブラ、周辺チップは、8253カウンタ制御、8255入出力ライン、8259割込コントローラなどを使用する
パリティビットについては、256バイトの受信バッファの1バイト1バイトに対して7ビットパリティを取り、それをパリティビットと比較して誤り検出を行った。
CRCについては、255バイトの合計(オーバーフローは無視)を取り、最終バイトのCRCと比較して誤り検出を行った。
補正については、パリティビット誤りが1か所の時に限って、CRCの誤りビット位置を判定し、データ1バイトとCRCの補正を行った。
問題は、チャネルの競合だった
電話機の傍にもう一つの電話機が現れた場合、チャネルがぶつかって干渉が起きると、割り込みが入る
その場合プログラムは任意のチャンネルを決め、相手側にそのチャンネルに変更しようという電文を送ったあと、自分もそのチャンネルに切り替え、相手側が接続してくるのを待つのだ
チャンネルは64チャンネルもあるのに、お借りしている実機は、2台しかなく実機テストができなかった
万が一できたとしても、ログを取ることなどしない組み込みソフトがチャンネルの切り替えが行ったかどうか判定ができなかった
これは、割り込み直後のアドレスから実行することにより、模擬テストを行い、ロジックを確かめた
開発は、3ヶ月に及んだ
桜の花が散り始めた4月上旬ごろ、ようやくソフトが完成した
今回は、ここまでです
次回のSE道場(後編)をお楽しみに・・・
SE道場では、プログラミングの極意や開発の苦労話等、様々な記事を投稿しています
是非ご覧ください
1つ前の開発秘話は...