NEC PC980xシリーズで稼動する弊社製品winRMX/98で構築された既存システムを、iRFW3.0へ移植した際に生じた注意の実例を記載します。
以下の項目は、PC-98とPC/AT互換機アーキテクチャの違いから修正が発生した項目である。
(1)RS232Cチップ
I/Oアドレス、及びIRQ番号が変わることは当然だが、シリアルポートコントローラ(NS16450互換)の制御方法が異なる点に注意する必要がある。特に、PC-98ではシリアルバッファが1バイトなのに対し、PC/AT(NS16450互換)では16バイトのバッファを持っていることに注意。従って割込みハンドラ処理時にバッファの内容を全て受信するようにする必要がある。(モードによってはその必要がない場合もある)
(2)LPTチップ
RS232Cの時と同様に、I/Oアドレスや制御レジスタのフォーマットがことなる点に注意する必要がる。
(3)ドライブ名
PC98 PC/AT
FD B A
HDD A C
(4)D/IOボード使用時
D/IOボードを使用する際には当然I/Oアドレスが異なる。
(1)iRFWシステムコール
VBからiRFWシステムコールを呼び出す為のDLLを作成。作成したDLLは、winRMXで提供していたDLL(RMX4WIN.DLL)と名称、パラメータ、戻り値など全て同一の仕様で作成した。その為、VBのプログラム側でiRFWシステムコールの取扱いに特に注意する点はなかった。
(2)String型変数の取扱い
VB2.0時、iRFWシステムコールへのポインタバッファ引数はString型で渡していたが、これを全てBYTE型の変数に変更した。
(3)ドライブ名
1.(3)参照。
(1)ローカルタイムの取扱い
iRFWでGet_Local_Timeを使用すると、9時間前の時刻や西暦1997年代の日付が返ってくることがあるので(この現象はバグとして調査中です)時間取得処理は全てget_global_timeに変更した。
(2)DDE通信関連処理
既存のシステムではRMXからdde_run_applicationでVBアプリケーションの起動を行っていました。iRFWでは、DDE関連システムコールが使えないので、それに変わる機能を作成しました。具体的には、RMX側では、DDE関連システムコールをラッピングするシステムコールを作成し、Win側のdde関連システムコールを受信するEXEへ通知するというものです。
(3)コンパイル時のパラメータ
コンパイル及びバインド時のパラメータは、既存のコンパイル用のサブミットファイルをそのまま使用しています。