PC-8801 Development


img
このサイトで扱っているPC-88関連の開発についてです。
88 はユーザーも多かったのでノウハウは蓄積されているはずですが
資料を探すとなると、あまり楽観的にはいかないようです。

とりあえず開発環境を整えて、何もないところからでも何とかなるように
最低限のネタを提供できるようにしたいところです。




■ 物 語

筆者の 88 遍歴は、初代無印 88 → 88MC2 という極端なもので、全盛期を見事にスルーしてしまいました。
といっても、それなりに「SR 以降」の辛酸を舐め、話題作は一通り遊び、お約束通り FM 音源にハマり、衰退を目の当たりにもしました。
が、全盛期スルーのせいで "終わった" 実感がいまひとつ。
これだけのスペックなのに弄り切れていないという貧乏性が沸々と。CD-ROM とか(笑)

さて、ドウスル > ■

■ 開発環境

0)OS

電源 ON で、とりあえず ROM-BASIC が立ち上がるのはいいのですが、FDD が使えないのは勿体ない。
ということで、基本的には DISK-BASIC あるいはそれに類する DOS っぽいものがあると良いでしょう。

http://www.retropc/cisc/ FD/ROM の書き出し、書き戻しには xdisk (cisc氏作)が便利です。
より使いやすく直感的な XDISKWIN2 はこちらで公開されています。Windows7 でも動作しました。





88MA2 など、立ち上げると「タダシイディスクヲイレテクダサイ」と出る機種は、ディスク起動設定だと適当なディスクを入れて強制的に ROM BASIC を
起動する方法が使えないので、一見すると TransiDisk を動かすことができないように思えます。
(88MR くらいまでは未フォーマットのディスクでも入れておけばディスクから起動できないと判断して自動的に ROM BASIC に切り替わったのです)

こういう場合は手動でディップスイッチ設定(あるいは PC キーを押しながらリセット)から ROM BASIC からの起動に変更した後 TransiDisk を転送するようにします。
このとき、xdisk を転送して run した時に、「Push [STOP] key to terminate」の文字が出ないで固まってしまうことがあります。

これは ROM BASIC がディスク I/O のコントローラー 8255 の PortA/B の送受信方向をディスク向けに初期化していないのが原因です。
その場合は run する前に ROM BASIC 上で「OUT &HFF,&H91」を実行すると正常に動作するはずです。



xdisk2.bas は BASIC プログラムなので N88 DISK BASIC にセーブして自動起動しておくようにすると便利です。
機械語をデコード済み状態にしておくとさらに速く。
BASIC を使わず IPL から直接実行するようにしておくのが最速だと思います。

DOSっぽいもの、と書きましたが CP/Mっぽい C-DOS II の FREE 版というものもあります。

PC88.gr.jp こちらのSoftware Libarary に C-DOSII (FREE 版作成キット) があります。
MS-DOS フォーマットの 2HD が読めたりして便利です。色々なソフトが発表されていたりします。

とはいえ、できれば使えるリソースは全部使いたいところです。壊してはいけない常駐領域とか画面の復帰とか考えるのは面倒。
とりあえず最初は普通に N88-DISK BASICで良いでしょう。

1)言 語

Windows 上に優秀なエミュレータがあるので、そちらで動作確認はするとして、
使いやすいエディタでさっくり書いてコンパイル・デバッグも迅速に、ディスクイメージへの
書き出しもドラッグ&ドロップ一発で出来るとかだと快適ですね。

言語としての BASIC は、というと…
そもそも忘れてしまった→こちら (http://www.cyross.com/pc8801wiki/index.php/)でリファレンスを作成中のようです。

が、N88-BASIC のスクリーンエディタの操作性の悪さは、ちょっと我慢しづらいかもしれません。
あればあったで便利なのですが、積極的に BASIC で何かするというものでも無い、かな。

ということで、PC-6001 の所でもある程度構築してあるアセンブラ環境で行くことにします。
他の高級言語も出来れば追々。

DOS/Windows 上でクロス開発できる Z80 アセンブラは多々あるのですが…
使い慣れたものが一番良いでしょう。
筆者は未だに究極の使い勝手を求めて模索中ですが。良いのあったら教えてください。
当面、このサイトでは"AS"でいきたいと思います。

Z80 の命令表と逆引き表も貼っておきます。このサイトで一番役に立つ資料かもしれない・・・。
Z80 Code Refference
Z80 MNemonic Refference


2)デバッグ環境

こちらも箇条書き
現行ではこんなところでしょうか。PC-8001 は除外。P88SR のような PC98 上で動くものも除外。
贅沢を言うと、GUI 環境でステップ実行とかダンプとかブレイクを行いたい所なんですが。

MESS は MAME 譲りでデバッガは充実しているのですが、いかんせん発展途上。
M88 はモジュール追加でホストマシンのドライブ直読みが出来たり素敵なのですが、常に走りっぱなしなのでデバッグには不向き。

QUASI88 はコンソールデバッグモードが付いています。
当面の開発はこれで行こうと思います。

ま、いまさら 88 で何かしようというほうが無茶なわけで、贅沢は言っていられませんね。
昔のように、飛ばした瞬間ディスクを抜くような緊張感も味わずにすむわけですし。

エミュレータによっては、シリアルポートやパラレルポートへの出力をファイルに書き出すことが出来ます。
これをログを取りに利用するとなかなか便利です。



    ld      a,%00100001   //CMTからRS-232Cに切り替え
    out     ($30),a
    ld      a,%10101010   //ダミーデータを送信する
    out     ($21),a
    ld      a,%01000000   //モード設定
    out     ($21),a
    ld      a,%01001111  //ストップビット1,奇数パリティ,パリティ無効,キャラクタ長8bit,ボーレイト非同期x64 
    out     ($21),a
    nop
    nop
    nop
    nop
    ld      a,%00110111  //送受信レディ
    out     ($21),a

    こんな感じでRS-232Cを初期化しておいて

    out		($20),a

    で出力です。エミュレータでは送信レディのチェックはしなくて良いと思います(たぶん)。


3)資 料

実はこれが一番問題じゃないかと。
せっかくのてんこ盛りスペックも、資料が無いとうかつに手を出せません。
しかしネット上には、カタログスペック的な資料やゲーム等のアプリケーションに関する記事がほとんどです。
紹介しようとすると膨大な量になるので仕方ない面もありますが。

MSX などは結構充実していたりするので、なかなか口惜しいところであります。
エミュレータのソースを拝見させていただくくらいが関の山でしょうか…。

紙資料もいずれ散逸してしまうものですからねぇ…。

BASIC リファレンスや メモリーマップ、I/Oポートの他に
機種毎のディップスイッチの情報や、「xxキーを押しながら立ち上げると○○で起動する」というような
実機を動かす上で重要な情報もあると良いですね。



マシン語マスターバイブル。聖書。

88 と言えばレベルの高い猛者が大勢いたので、ALU でブロック転送くらい何も見ずに書けたりするのかもしれませんが
できれば体系的な資料は欲しいところですね。
せめてハードウェアの定数定義 (HARDWARE.INC) くらいは書きたいと思っています。将来的に。

とはいえネット上に資料が全くないわけでも無いので、ありがたく参考にさせていただきましょう。

4)実機動作

せっかく作ったものなら、実機でも動作確認してみたいところです。
ディスクメディアへの書き戻しは前掲の XDISKWIN などで行えるのですが、実機環境も老朽化が進んでメンテナンスが必要だったり大変です。
また、今時の PC ディスプレイで繋がるものを探すのも結構大変です。
筆者は Century の LCD-8000DA という 8インチ液晶に繋いでいます。24KHz でなら映ります。

若干注意が必要なのは、本体からディスプレイ出力されている D-Sub15 オスコネクタ(2列)で、
これを D-Sub15 メス(3列)に変換しないといけないのですが(その後 HDMI などに変換する)、
古い MAC のディスプレイ出力も、同じ 2 列コネクタを使っている、という点です。
やっかいなことに、同じ D-Sub15 ピン 2 列なのに、ピンの信号配列が違うので、
変換コネクタを間違えると全く映りません。

下の変換コネクタで左側が PC88 では NG、右側は OK なものです。
筆者がハマって大いに困った所なので参考までに載せておきます。


PC-8801MA2/MC/FE/FE2 では、
[F8]を押しながら起動で 24KHz 出力
[F9]を押しながら起動で 15KHz 出力になるそうです。


▲ TOP