2019年10月14日

BIOS、どうしようか

Zet/98ですが、ハードウェア側の設計はおそらく、ROM BASICが起動する程度まで書けています。
ただ、BIOSがありません。手持ちのPC-9821X...なんだっけ?486デスクトップとPC-9801N...なんだっけ?386ノート、共にV30非搭載機なので、どちらもIA-32でしか使用できない386で拡張された命令(EAXレジスタを叩いたり、プロテクトモード用セグメントを初期化したり。。。)を使用しているので該当部分を通ると暴走します。
巷には実機BIOSを持っていなくてもとりあえず起動するエミュレータがあるのでそこから拝借することも考えてみたのですが、
・Neko Project…比較的BIOSで処理しているが、ハードウェア初期化等をエミュレータ側で行っており該当部分コード無
・Anex86…ほぼエミュレータ側で処理しており、BIOSはほぼ空
・T-98 NEXT…こちらもBIOSはほぼ空
となっています。
Neko projectさんの方は、BIOS部分も含めソースが公開されておりますのでこのソースをベースにエミュレータ側処理もCPU側で書き換えるのが一番手っ取り早いと思うのですが、Z80ならともかく8086のアセンブラは、セグメントが絡むので苦手で。。。.com形式なら過去にアセンブラでプログラムを書いたことがありますが、.exe形式でもものの本を読めばわかると思うのですが、BIOSの方は。。。基本は.comベースで書いてセグメントは自分勝手に好きなように動かせばいい、という事でしょうが今まで書いたことが無いので難航しています。
Neko projectさんのBIOSはMASMで書かれたものとNASMで書かれたものが混在していますがセグメント部分の記述が両社だいぶ違うようで。。。
posted by プー at 09:03| Comment(0) | Zet/98 | 更新情報をチェックする

2019年09月14日

Zet/98も再開しています。が...

最近になって、Zet/98の方も再開しました。
DE0-CVに変えてから容量が大きくなったため色々できるようになりました。
まだHDD I/F(SASIの予定)、FDD I/Fは載せていませんが既存のものをそのまま載せるか簡単な変更だけで行けるでしょう。
GDCも、円弧以外はだいたいできたと思います。
一応、実機(僕が現在持っているのは486のPC-9821のみ)のBIOSを吸い出して動作させてみましたが、
286か386で追加された命令を使用しており、その部分で誤動作しているようです。
386以降、リアルモードでも32bitレジスタや命令は使用できるので、ITFやBIOSで稀に(ITFでは結構)使われているようです。
66プリフィックス(レジスタをAX→EAXのように32bitで扱う命令)は逆アセンブルし、同じ動作をするように16bitレジスタでの置き換えやダブルワード書き込み部分をワード書き込みの倍の回数に変更したりして、何とかメモリカウントを開始するところまではいきましたがメモリチェック部分等で0f 01で始まる命令が実行できず、止まってしまいます。
V30の機種、386等の機種でもV30も搭載している機種であればV30設定にすれば動作してくれると思うのですが、該当期初を持っていないのでBIOS/ITFのイメージがありません。続きを読む
posted by プー at 01:19| Comment(0) | Zet/98 | 更新情報をチェックする

2014年08月14日

キーボード割り込み-2

自動EOIを強制的にONにすることで割り込み処理ルーチンを正常に実行するように
なりましたが、キーを押しても特に何も変化しません。
np2には互換BIOSのソースがついていますのでint9(IRQ1:キーボード)がどのような
処理を行っているか(vect09.x86)追いかけてみたところ、キーボードからの受信に
フレーミングエラー等のエラーが無いかを確認しエラーがなければエラーカウントを0にして
キーからのコードを読むだけは読み、STOPキーとCOPYキーであればINT5/INT6を
実行し、それ以外であればEOIを割り込みコントローラに送信して終わりです。
STOP/COPY以外の場合はそのキーコードに対して特に何をするわけではありません。
では、np2ではどのようにキーを処理しているかというとこの処理もエミュレータ側で
処理しているようです。(bios09.c)
キーの処理をZet/98で行うにはこのbios09.cと同じ動作をする8086のアセンブラコードを
vect09.x86に追加する等が必要になるのでしょう。
posted by プー at 16:01| Comment(0) | Zet/98 | 更新情報をチェックする