《ソフトウエア》
- OS : NEC PC-Engine
- ファイル・プロセス管理
- シェル
- BIOS
- フロッピーディスクBIOS
- ハードディスク(SASI)BIOS
- キーボードBIOS
- テキストBIOS
- スプライトBIOS
- グラフィック画面制御BIOS
- 拡張グラフィックBIOS
- アニメーションBIOS
- プリンタBIOS
- コミュニケーションBIOS
- ミュージックBIOS/サウンドBIOS
- ADPCM BIOS
- マウスBIOS
- カレンダ時計BIOS
- ファンシーフォントサービス
- 拡張ファンシーフォントサービス
- スクリーンエディタBIOS
- 日本語入力フロントエンドプロセッサBIOS
- 数値演算BIOS
- ポップアップサービス
- メニューマネージャー
- PR801 BIOS
- Draw BIOS
- ダイアログマネージャ
- 日本語変換機能
- PCエディタ(内蔵テキストエディタ)
- BASIC : N88-日本語BASIC V3
OSとして、独自開発の PC-Engine を使用しており、そのプログラムの大部分が内蔵ROMに収められています。
PC-Engine は、
- ファイル管理・プロセス管理など一般に DOS が担当する部分
- シェル
- キーボード・画面表示・ディスク等を制御するBIOS群
- 日本語変換(FEP)、テキストエディタ、マシン語モニタ(デバッガ)
等から成ります。
バージョンは 1.0/1.05/1.1 があり、VA2/3 及びバージョンアップボードを装備した VA では 1.1 が、バージョンアップボードのない VA では起動に使用したシステムにより 1.0/1.05 のどちらかが、動作します。
実は、この部分については MS-DOS 3.1 のサブセット(下位互換)となっています。
ファイルやメモリを扱うシステムコール (INT 21h)や、デバイスドライバの仕組みなどは全く同じです。
MS-DOS との主な違いは、
- 標準入出力、リダイレクトという概念がない
- それに伴い、システムコールの内、コンソール入出力に関するファンクションがない
- キャラクタ型デバイスドライバが利用できない。
- デバイスドライバへの IOCTL の機能がない。
等です。
また、フロッピーディスクについては、V1/V2 モードの DISK-BASIC のフォーマットのディスクが通常の MS-DOS フォーマットのディスクと同様に扱えるようになっています。
シェルは、MS-DOS では COMMAND.COM が担当する部分です。この部分はすべてROMに収められています。
PC-Engine のシェルで利用できるコマンドは MS-DOS の代表的なものを含んでいて、MS-DOS では外部コマンドとなっている CHKDSK,FORMAT 等も内部コマンドになっています。
その他にも、
等の内部コマンドを持っています。
MS-DOS のような1行入力の方式は取っておらず、画面の好きなところにカーソルを持っていって入力のできる、従来のBASICのような方法を取っています。また、HELP キーでコマンドの説明が表示されたり、CTRL+T/CTRL+N によるヒストリ機能があったり、ファンクションキーであらかじめ設定した文字列が入力できたりといった機能を備えています。
ほとんどがROMに収められています。
1D/2D/1DD/2DD/1HD/2HD が扱えるようになっています。ユーザーがFDCへのパラメータを設定することができ、独自のフォーマットを扱うことが可能。
5Mから40Mのハードディスクが扱えます。
入力されたキーデータの管理の他、ファンクションキーへの文字列の設定や、キー割り込みによってユーザー定義のプログラムを呼び出す機能(ポップアップトラップ)があります。ポップアップトラップ機能のおかげで、キー割り込みを利用する常駐プログラムは、割り込みベクタをフックしてベクタ管理を行なう必要がありません。
主に文字表示を行ないます。
複数のテキストフレームバッファをテキストVRAM上に取り、画面を水平方向に最大4分割してそれぞれに異なるフレームバッファを表示することができます。
テキスト画面中に矩形領域を設定し、その中に文字を表示するPOPUPスクリーン機能があります。(テキスト画面のなかに、別の窓を表示するような感じ。)
スプライトの表示、スプライトパターンの登録、スプライトの衝突判定などを行ないます。
あらかじめ制御コマンド列を設定しておき、指示通りにバックグラウンドでスプライトを動かすことができます。(実にありがたい機能です。)
グラフィック画面モードの設定、フレームバッファの管理、画面スクロール、パレット、画面合成、画面マスクを制御します。
グラフィック画面への描画を担当します。
- 消去、ライン描画、ドット描画
- 多角形描画、円描画、ペイント(これらは、パターンによる塗り潰しが可)
- 矩形領域コピー(透明色を除いて転送できる)
- 画面圧縮・展開、拡大・縮小
- 3次元座標情報の回転、2次元へのマッピング
- キャラクタマッピング(パターンとパターン番号を並べたマップを用意し、それに従って画面に描画する機能。主にゲームの画面を構成するのに使われる。)
アニメーション作成ソフト「アニメフレーマー」で使用する機能の一部を担当します。
- 2つの座標を結ぶ直線上の各点の座標を得る
- 指定した半径の円周上の各点の座標を得る
- スプライン曲線上の各点の座標を得る
- スキャナ読み取り
- RGB−HSV相互変換
プリンタへの文字出力、画面ハードコピーなどを行ないます。
文字の送受信、XMODEM送受信などを行ないます。
2バイト文字受信時には、自動的に漢字コードの種類を判定してシフトJISに変換します。
データに基づき、バックグラウンドで音楽を演奏します。
サウンドBIOSではFM3+SSG3が、ミュージックBIOSではFM3+SSG3又はFM6+リズムが利用できます。
ADPCM録音/再生、PCM録音/再生を行ないます。
マウスの制御、マウスからの情報取得を行ないます。マウスボタンのON/OFF、マウスの移動によって割り込みを発生させ、ユーザー定義のプログラムを呼び出すことができます。
内蔵時計を制御します。
文字フォントに、白抜き、斜体、太文字、影文字の修飾を行ないます。プリンタ出力を目的としています。
不明。
PC-Engine のシェルやBASICにおける入力をサポートします。
日本語変換機能を制御します。
有効数字14桁の10進浮動小数点数値(BCD)演算を行ないます。
四則演算、三角関数、指数関数、対数関数、べき乗、平方根が計算でき、数値を表す文字列と数値表現の相互変換もできます。
PC-Engine 1.1 では数値演算プロセッサを使用した2進不動小数点数値演算もサポートします。
「PC キー+任意のキー」によって呼び出される常駐プログラムのための機能を提供します。
スプライトを利用して、プルダウンメニュー機能を提供します。
昇華型フルカラープリンタ PC-PR801 を使用して印刷を行ないます。
不明。
不明。
VA で約40000語、VA2/3 で約65000語の辞書をROMに内蔵し、連文節変換方式の漢字入力機能を提供しています。当然、変換学習、ユーザー辞書登録機能を備えています。マウスによる外字フォント編集機能も持ちます。
辞書ディスクが不要なため、ディスクアクセス時間は0で、フロッピードライブが占有されず、このクラスのCPUとしては快適な変換入力が行なえます。
PC-Engine 1.0 ではエディタとして最低限の機能を備えたという感じでしたが、1.1 になって、キーバインドの変更、文字列マクロ、キーボードマクロ等の機能が追加され、かなり使いやすいものとなっています。同時に1つのファイルしか扱えないのが残念です。
V1/V2 モードの N88-DISK BASIC・N88-日本語BASIC の上位互換です。これらのBASICで書かれたプログラムはそのまま動かすことができます。ただし、マシン語を使用していたりメモリを直接操作しているようなプログラムは動かせません。
V3.1 は VA2/3 及び、バージョンアップボードを装備した VA で動作し、V3.0 はバージョンアップボードのない VA で動作します。
この BASIC は 88VA シリーズの特長であるグラフィック、スプライト、オーディオ関連の命令が充実しています。これらの命令の多くがBIOSによって実現され、BIOSのファンクションと1対1の関係にあります。
スプライト関連の命令は、かなりゲーム作成を意識して作られています。これらの豊富な命令のおかげで、従来はマシン語を使わなければできなかったようなゲームでもBASICだけで作れる場合があります。
以下、特徴的な命令について解説します。
- 画面制御
グラフィック画面モード設定、グラフィック画面分割・スクロール、画面合成、画面マスク、パレット設定等、ハードウエアの持つ機能のほとんどが制御できるようになっています。
- 画面描画
一般的な描画機能が強化されています。
- LINE(直線描画)、CIRCLE(円描画)は、タイルによる塗りつぶしの他、描画時の論理演算(AND、OR、XOR等)が指定できます。
- PUT(矩形領域コピー)は、論理演算指定、転送データの透明色部分を除いて転送する機能があります。転送データより広い面積の領域に2次元的に繰り返しながら転送する機能があります。
- 画面無圧縮セーブ・ロード (V3.1)
- 指定したペンスタイルで直線・円弧を書く機能。(V3.1)
- スプライト
- 表示・パターン設定・パターンのセーブ/ロード
- スプライトの衝突判定
- スプライトが衝突したときに指定ルーチンをコールする割り込み機能
- スプライトの動きをスプライトマクロランゲージで記述し、バックグラウンドで動作させる機能
たとえば、"U20M50,50T1"と記述すれば、「上に20ドット移動し、X方向に50・Y方向に50ドット(斜めに)移動し、スプライト1番のいる場所に移動する」という動作をする。
- スプライトマクロの実行を終了したときに割り込みを発生させる機能
- 指定矩形領域からスプライトがはみ出たときに割り込みを発生させたり、それを判定する機能
- マウス
ごく一般的な機能がそろっています。
- カーソル形状、移動速度、移動範囲の指定
- カーソルの位置、ボタン状況の取得
- ボタン操作、マウス移動による割り込みの発生
- プルダウンメニュー(V3.1)
プルダウンメニューを利用できます。メニューバーには8個までの項目が、各項目ごとに8個までのメニューが登録できます。メニューはマウスだけでなくキーボードで選択することもできます。メニューが選択されると、指定しておいたサブルーチンが呼び出されます。
珍しい命令でしょう。
- アニメーション
NEC製ソフト「アニメフレーマー」で作成したアニメーションを再生します。
- サウンド
従来どおり、ミュージックマクロランゲージ(MML)で演奏データを記述し、バックグラウンドで演奏します。
- FM6+リズム6種による演奏も可能(V3.1)
- 演奏終了時に割り込みを発生
- BGMファイルのロード、演奏 (V3.1)
付属のプログラムにより、1曲分の演奏データをファイルにした「BGMファイル」を作成することができます。これをバックグラウンドで演奏することができます。
- ADPCM録音・再生・セーブ・ロード (V3.1)
- 数値演算
一般的な関数がそろっています。実数(浮動小数点数値)の演算はBCD(2進化10進)演算で行なわれます。この演算方式は計算の精度が高い反面、速度が遅くなってしまいます。数値演算プロセッサを装備した VA2/3 では2進演算を選択することもできます。
- その他
いずれも、非常に重宝する機能です。
- 子プロセスを起動する SHELL 命令があります。PC-Engine の内部コマンド、外部コマンドをBASICプログラム中から実行することができます。(V3.1)
- 8086 の命令にソフトウエア割り込みを発生させる INT がありますが、これと同じことを行なう INT 命令があります。これにより、BIOSやシステムコールをBASICから直接使うことができます。
- PCエディタ
EDIT 命令によりPCエディタを起動しプログラムを編集・作成することができます。PC-Engine から呼び出すPCエディタと全く同じものです。
これは、涙がでるほど有り難い機能です。エディタのない従来のBASICは触れなくなってしまいます。
1995/ 9/24