IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第53回は、CP/Mで知られるDigital ResearchのDOSを源流とする「Real/32」を紹介する。
最近はPCを使って組み込みシステムを作るケースは皆無ではないにせよ大分減ってきた感がある。ただ一昔前はPCにWindows(それもWindows Embeddedとかではなく、コンシューマー向けのWindowsそのまま)を組み合わせてシステムを動かすというのは割と多かったし、さらにその前にさかのぼるとDOSがその目的で利用されていた。こうしたユーザーに向けて投入されていた古の製品に「Concurrent DOS」があった。
Concurrent DOSは元々、インテルの8080プロセッサ向けOSであるCP/M-80と、その後継のCP/M-86を開発していたDigital Researchが開発したものだ。当初は組み込み向けというよりもビジネスユーザー向けに、MS-DOSに奪われてしまったPC向けDOSの座を奪還すべく開発され、当初はConcurrent CP/M-86 3.1という名称で1983年に発表されたが、これはMS-DOS 1.1準拠の環境をマルチタスクで提供できるというものだった。
ただPC DOS 1.1準拠という時点でもうCP/Mではないだろう、という判断もあったのか(?)、1984年の発売時にはConcurrent DOS 3.1という名称に切り替わった。次のConcurrent DOS 3.2はPC DOS 2.0およびCP/M 1.x対応アプリケーションとの互換性を保っている。ただ1984年というと、IBMが80286を搭載したIBM-PC/ATをリリースした年であり、MS-DOSやIBM-DOSは互換性を保つために原則8086互換モードで利用したが、Digital Researchは80286のProtected Modeをフルに生かした形でマルチタスクや仮想記憶の利用を可能にしたConcurrent DOS-286を1985年にリリースした。例えば、Lotus 1-2-3とWordstarを同時に走らせる(ただし画面はどちらかのアプリケーションのみ)といったことが可能になった。ちなみにこのConcurrent DOS-286、ROM化できる(アプリケーションでFDDなりHDDが不要ならディスクレス動作が可能)、Dynamic Driverをサポートするなどの特徴もあり、これらが後々組み込み向けに重用されるきっかけになる。
このConcurrent DOS-286をベースとして生まれたのが「FlexOS」である※1)。80286用のFlexOSは事実上Concurrent DOS-286とそれほど大きな差はないのだが、最大の違いはx86以外にも対応したことで、実際にFlexOS 68Kを名乗る製品がリリースされた他、NECのV60/V70への移植も行われたらしい(最終的に製品としてリリースされたかどうかは既に確認できない)。これと並行して80386への移行も行われた。1987年にはConcurrent DOS 386がリリースされ、FlexOS 386も登場している。
※1)ちょっとこれは話が複雑で、元々はCP/M-68Kが開発され、その後継としてOS全体をCで書き直したConcurrent DOS 68Kが登場する。これはConcurrent DOS-286と並行して作業が行われていたようで、後にこれがFlexOSに集約されていった、ということらしい。
これらのConcurrent DOSやFlexOSは、コンシューマー向け市場では大きな成功を収めることは適わなかった。MS-DOSやPC-DOSとの互換性といっても、それはあくまでMS-DOSの流儀に従ったアプリケーションを稼働させた場合の話であり、特定のデバイスを直接触るようなアプリケーションは無理だった。ゲームはその最右翼だったし、オフィス向けアプリケーションも直接触るものが少なくなかった。
先にLotus 1-2-3やWordstarがConcurrent DOS 286上で動いたという話をしたが、これは標準モードでの話。実はこうしたアプリケーションは、それぞれ独自の画面拡張モードを持っており、ビデオカードメーカーはこの画面拡張モードに対応したドライバを提供していた。これを利用するとより大画面での表示が可能になる、なんて仕組みなのだが、Concurrent DOS 286やDOS 386、FlexOS上ではこうした動作は不可能であった。今でこそマルチタスク/マルチウィンドウは当然の技術として普通にPCで利用しているが、当時はシングルタスク/シングルウィンドウが当然であって、マルチタスクが強く求められていたわけではなかった。マルチタスクが必要な向きにはPC UNIX(例えば、SCOは1983年にSCO XENIX System V、1985年にSCO XENIX 286を投入している)があり、後追いでX Window Systemも移植されたりしたから、そうしたニーズが必要な一般的なユーザーはUNIXに流れていった。
しかし、その代わりにOEM向けビジネスというちょっと異なる市場でそれなりの成功を収めた。例えば、IBMは1986年に店舗用のPOSシステムにIBM 4680というシリーズを発表しているが、ここにはConcurrent DOS 286をベースにカスタマイズを行ったIBM 4680 OSが採用された。IBMはこの後、IBM 4690という後継製品を登場させるが、これもやはりFlexOSベースであり、このPOSビジネスを最終的に東芝テックに売却するまでConcurrent DOS/FlexOSや最終的には今回のお題である「Real/32」を採用している。
他にもICL/Nixdorf/Siemens/Thorn EMI Software/Micrologic、国内企業でもファナックやTEC(現東芝テック)がConcurrent DOSあるいはFlexOSのライセンスを受けて利用している。いずれの企業もPCをベースとした制御用システムやエンドユーザー製品(例えばTECはPOSレジスターだ)を製造/販売しており、そのOSとして利用した格好だ。1980年代だとまだこうしたものもDOSベースで開発されていることが多く、プログラマーもDOSでのプログラミングに慣れている。その環境をそのまま継承しつつ、マルチタスク環境で動作できるというのは、この手の機器には最適なソリューションだったのは間違いない。
Copyright © ITmedia, Inc. All Rights Reserved.