2014年05月02日

ITFのアセンブル

現在、np2さんの互換ITFで動作確認を行っていますが
np2ではエミュレータ自体が初期化するシステム領域がある為
その動作をITFに追加しないと正常動作しません。

np2にはソースコードが公開されており、互換ITFやBIOSの
コードも入手出来るのですが、ITFでメニュー画面で表示する
テキストをおそらくT-VRAM用データに変換する為のプログラムが
正常動作しません。
というより、ansi-cに標準では存在しない関数を使用している為
不足する関数を適当に書き換えたり作ったりしたのが
行けないのだと思いますが、出来上がったresource.x86が
正常に出来上がっていません。
テキストファイルから変換する為のものだと思うのですが。。。
正常変換後のresource.x86、どこかに無いでしょうか。。。

--追記 14.05.03
やはり追加した関数が間違えていました。
間違えていたのはfile_read関数。これは別のソースでは
バイナリファイルを指定バイト読み込んでバッファに
入れていましたので行単位ではなく指定バイトを
読み込むように作っていましたが、TXTPACK.Cでは
テキストファイルの読み込みに使用しており、
行単位で処理しているようですので単純にfgetsに
置き換えたら変換自体は正常にできるようになりました。
ただ、SJIS(入力ファイルのコード)→JIS(画面表示)
に変換する部分はネットで適当に探したコードを
そのまま乗せたので変換内容は間違えているかも
しれません。
posted by プー at 14:41| Comment(1) | Zet/98 | 更新情報をチェックする
この記事へのコメント
とりあえず面倒だったのでITFもmasmのまま
システム領域の初期化ルーチンを追加して見ました。
拡張メモリ容量をnp2はエミュレータ自体がシステム
領域に書く為エミュレータ設定から値を決めて
いましたが、エミュレータでは無いため
それは出来ないので、実機ではSIMM関連で使用する
IOポートにメモリ容量を割り当てて動作をさせたところ
指定容量までのメモリカウントが確認出来ました。
前回cpu種を読んでリセットルーチンに回っていた
ところもV30用ルーチンに回るようになりました。
ただし、まだ割込みベクトルの初期化が出来ていない為
(np2ではエミュレータがこの部分も初期化)
ソフトウェア割込みで0番地に飛んでしまって
いるようです。割込みベクトルはbios内に有る
仮テーブルをコピーしますが、システム領域初期化は
ITFへの追加であり、この時biosは見えないので
biosに切り替えた後で割込みベクトル初期化の
必要があり、biosのコードにも改造が必要です。
Posted by プー at 2014年05月06日 03:17
コメントを書く
コチラをクリックしてください