趣味工房 HIRO-G
< TK80BS インベーダ・ゲーム移植再開その1 >
今回の移植作業は次の通りです。
1. 先ずは、移植作業と移植作業中のテストを効率的にするために、モニタをどうするかを検討しました結果、ND80ZVのTK80互換モニタと改造エンコーダ付きフル・キーボード(CP/M No3、No12、BASIC No18等参照)を使うために、毎度おなじみの「CP/M手作りマイコン@」のP90〜95に記載された、CP/M基本モニタを使いました。
2. 次に、モニタROMへの配置を検討しました結果、ROM上のメモリマップは次のようになりました。
@ 0000H〜03FFH番地: プチ改造ND80ZVモニタ
A 0400H〜04FFH番地: ND80ZVモニタ関連サブルーチン
B 0500H〜0FFFH番地: CP/M基本モニタ
3. @のプチ改造は、CRTCパラメータの設定、画面クリア、「ND80Z3 MONITOR」 起動表示の機能を追加しました。 Aがそのサブルーチンを配置したメモリ領域です。 BにはCP/M基本モニタを配置しています。 このメモリ配置で移植作業用のモニタROMを作成し、ND80ZVのモニタROMに換え、ROMソケットに差込み電源を入れますと、写真1のように、先ずND80ZVのモニタが起動します。 写真2は、例のようにND80ZVのモニタを使って、直接VRAM領域(F000H〜F3FFH)へ書込みテストを行った結果です。
4. 写真3は、ND80ZVのモニタから500H番スタートで、CP/M基本モニタを起動し、Mコマンドをテストした結果の画面です。 CP/M基本モニタは500H番スタートした時点で、F800H番へ転送されて実行されますが、バンク切替はせず、0000H〜7FFFH番はROM領域のままとしています。
5. 次に、ホストPC(XP)にセーブされている、移植作業中のインベーダ・ゲームをロードしてみました。 リセットすれば、ND80ZVのモニタへ戻りますので、普通にホストPCからUSBを使ってND80ZVへロードする事ができます。 写真4はホストPCから転送が完了した画面で、写真5は、ND80ZVが受信を完了状態です。
6. 写真6は、ロードしたインベーダ・ゲームを起動している画面ですが、一応、正常に起動はしました。
これで、移植の実作業に入ることができます。 この両方のモニタについては、何れも40文字X20行の画面としています。 ゲームでは、それぞれに合ったパラメータの設定ができるように、ゲームのプログラムで変更します。 移植作業中のインベーダ・ゲームにも、TK80BSにあわせ32文字X16行に設定するよう、パラメータ設定用のプログラムを追加します。
主な移植作業としては、VRAM領域の変更(BSは7E00H〜7FFFHと変則的)、作業領域の変更、8255のコントロールの違い、BSはメモリマップドI/Oですが当方のマシンはI/OマップドI/Oとなります。 また、作業領域とVRAM領域を変更しているので、制限や判定のルーチンでいろいろとバグがあり、現状では次のような不具合があります。
@ ゲームでフル・キーボードが使えない。
A なぜか、砲台の移動がぎこちない。 反応が遅い。
B 突然、ゲームオーバーになる。
C 砲台がインベーダのビームに当たると、ゲームが止まる。
D 音出しのプログラムがない。
、写真4 ホストPCのロード完了の画面
写真5 ND80ZVのロード完了の画面
写真6 ND80ZVにてインベーダ・ゲーム起動の確認
< 今後の予定 >
@ TK80BS インベーダ・ゲーム移植再開その1: 完了
A TK80BS インベーダ・ゲーム移植再開その2:
B TK80BS BASICの移植?:
C FDDコントローラの製作?:
D CP/Mシステム復元の可能性の検討?:
E グラフィック・ボードの製作?:
BASICマシン復元進捗 ・TK80BS インベーダ・ゲーム移植再開その1 |
2014年9月7日 |
写真1 ND80ZVモニタ起動
写真2 ND80ZVモニタで直接VRAM領域への書込みテスト
写真3 CP/M基本モニタMコマンドのテスト
|