iP6 改造日記 7 [Windy's room]


TOP > PC-6001のお部屋 > iP6 改造日記 7

下から上へ 並んでいます。
注意 初めての方は、このページの下のほうから読んでください。

JOYSTICK

2003年8月31日

JOYSTICK って、てっきり Direct Xでないと、行けないと思っていたのですが、 普通のAPIでも行けるみたいですね。(^^;; まったく知りませんでした。(汗)

このAPIって、かなり単純です。 これで、JOYSTICK 対応に 一歩近づいたのかな?(^^;;

fmgen 007a の謎

2003年8月30日

006 から007aにバージョンアップしようとして、いきなり壁に・・。 これって、まともにコンパイルできませんけど・・。(^^;; #include "types.h"が抜けているからでしょうか?

なんとか、コンパイルできるようにして、実行したら、fmgen 内部で、 メモリー参照エラーで落ちるし・・。(;_; うーん。何故だろう??(^^;; 渡しているパラメータとかが間違っているんでしょうか? それとも、初期化もれ?(^^;

というわけで、とりあえず、次も、fmgen 006 のまま行きそうです。 すいません・・。(_)

I/O のF0h

2003年8月

SRのモード6では、I/O のF0Hは、どうやら未使用のようですね。(^^; しかし、エミュレータでは、マスクしていないので、普通にモード5などのバンク切り替えを実行してしまって、固まる・・。という感じのようです。

ちなみに、何故未使用かというと、何を出力しても、メモリバンクには、変化が無いし、入力してみると、常に、FFhが得られるからでした。(^^;;

とりあえず、Rel.4.5のモード6では、上記の I/O のF0h や、F1h や F2h などに出力しないように お願いします。(_)

SR の25行のセミグラフィックモード

2003年8月

SRの25行モードのセミグラフィックが、サポートされていないというバグについてです。 20行のセミグラは、SR以外と同じなので、問題が無いのですが、問題は、25行のほうです。

ソースリストをひっくり返して、読んでいると、やっぱり間違っていたのと、 不足部分がありました。(汗)

SR以外では、CGROMの後ろに空いた領域を用意しておいて、セミグラフィック用のデータを作っているようです。 つまり、SRでも、そのセミグラフィック用のデータを作成して、RefreshScr61 で、そのデータを使う様にすれば、表示可能です。

でも、セミグラフィックのデータ作成用ルーチンが まだ今ひとつ分かってなかったりします・・。(^^;; これを、SRのセミグラフィックルーチン用に変形する必要があります。 できるかなぁ・・。(汗) まずは、これを解読するところから、始めないといけませんね。

ちなみに、次のバージョンのブロッカーバグに鳴ってしまいました。(汗) つまり、これが治らないと、次のバージョンには到達しないということですね・・。 頑張らないと・・。(^^;;

マッキントッシュ対応?

2003年8月12日

今回も、Unixと、Windowsに対応しています。 でも、i氏によると、 実は、Macにも対応しているそうです。 念願のMac対応が・・。(^_^;; ありがとうございます!(^^;

といっても、Mac OS Xでないといけません。 あと、それに、Apple謹製の X11 on X を落としてきて、入れてもらう必要があります。つまり、ほとんど、Unix/X11 環境と同じになるという訳です。 あと、これが一番大変なのですが、自前でコンパイルしていただく必要があります。(汗)

ただし、私自身は Mac を持ってないので、Mac特有の件に関しましては、サポートできかねますし、十分にテストできていないので、変な動作をする可能性も有りますので、十分に気をつけてご使用ください。(_) ちなみに、音はまだでないそうです。すみません・・。(_)

というわけで、今一番、現行の機種で欲しいのは、Mac OS Xの走る、マッキントッシュだったりします。(^^; どこかに安価で転がってないかなぁ・・。(^^;;; ノートか、ブックでもいいのですが・・。(^^;

Release 4.5 その後

2003年7月31日

今回は、結構 静かなリリースでしたね。

しかし、問題も沢山見つかってしまいました。(汗) うーん。自分では結構満を持したと思っていたのですが、出るわ出るわで、バグが満載です。すみません・・。(_) 目立つバグとしては、

  1. SRのモード6で 25行のセミグラフィックモードが正しく表示されません。
  2. SRのモード6で、I/O のF0h に出力をすると、エミュレータが固まってしまいます。(汗)
  3. No Wait モードのまま、終了すると、再起動しても、No Waitモードのままになってしまいます。
  4. テープを高速読み込みしている間に、リセットすると、高速モードのままになってしまいます。
  5. その他、メモリーエラーなどで、落ちるときがあるそうです・・。(汗)

すみません・・。今、バグをつぶすべく、考え中です。 1に関しては、折角、Bernie さんのビットマップ変換ツールが対応してくださったのに、表示できないのは、もったいないので、なんとかしたいところです。(_)

それにしても、iP6 Plus は、もともとのiP6 に継ぎ足す感じで、SRが動くようにしたので、色々歪んでいる個所もあったりします・・。(汗) ソースリストをよーく見ると、あれ?っていうところがあったりしますね。 特に、CGROM周りは、未だに悩んでいます。(汗)

Release 4.5

2003年7月21日

ついに、出してしまいました。(汗) といっても、前バージョンから半年以上も経ってしまいました。お待たせして、申し訳ないです。(汗)

それから、今回が何故、Release 5 ではなく、4.5 かというと、まだまだ不完全なところが多いからです。 特に、ソースリストが、すごいことになっています。(^^;;

ちなみに、更新してなかった 日記を更新しました。 本当は、密かに付けていたりするんですが、これだと日記というより、月記・・。年期になりそうですね・・。すいません・。

それでは、何か有りましたら、よろしくお願いします。(_)

1D disk

2003年7月

さるかたから、1D disk を貸していただいたので、AT互換機で、読み込みテストをしてみました。(^^; 結果的には、1DDitt で問題なく読み込めました。(^^; ただし、裏面のない2Dとしてです・・・・あれ?

ギヤーーーース。1DDitt って、てっきり片面専用だと思っていたのですが、1DDを読み書きするときだけ、片面になるようですねぇ・。(汗) 1Dは、律儀に両面読んでしまいます。うーん。意味無いやん(^^;

1DDittは、片面専用だから、云々と READMEに書きましたが、半分間違いだったということが発覚・・。急遽書き直しました。(^^;; リリース前に発覚してよかったです。 まぁ、確かに、1Dなんて採用しているのは、P6ぐらいですからねぇ・・。(汗) 1DDittが 知らなくても、不思議でもなんでもないですが(^^;;;

それにしても、ややこしいです・・。 何故って? それは、現状では下記のようになってしまうからです。

使用ツール   メディア  アクセス方法 トラックtable   d88のID
Ditt    	 1D       両面       一足飛ばし           00h
Ditt     	1DD       両面       一足飛ばし           10h
1DDitt   	 1D       両面       一足飛ばし           30h
1DDitt   	1DD       片面       連   続           40h

あと、エミュレータで、メディアのIDを見て、判別している場合は、1D/1DDの自動判別のときに、気をつける必要があるのも、ややこしいです。

それで、66や、mk2と、PCで、データのやり取りが出来るか?だけど、 ここにも実は罠があって、最近のパソコンのドライブって、倍密度なので、単密度の1D/2Dとかは、読めますけど、書き込めないんですよね。(汗) 88とかがあると、単密度なので、書き込めるんですが・・って、あれは5インですよね・・。(^^;;

ちなみに、同じシリーズでも、66SR も1DDの倍密度なので、1Dのディスクには書き込めません、だから、1Dをマウントするときは、読み込み専用として、マウントしています・・。

やっぱり、CMT経由になりますか・・。 でも、時間かかるんだよなぁ・・(^^;;;

拡張漢字ROM とりこみ

2003年6月24日

拡張漢字ROMの取り込みプログラムを作っていたんですが、なんとか取り込みが出来るようになりました。(^^;; でも、よくよく考えると、SRにしか対応していないことが発覚・・。(汗) 作り直しになってしまいました。(;_; でも、近いうちに何とかしたいです。

fmgen について

2003年6月24日

FM音源 エミュレータとして有名な、CISCさんの fmgenですが、最近、006 から007aにバージョンアップされたようですね。(^^; 音が良くなっているんでしょうか?

iP6 Plus でも fmgen を採用させていただいているので、当然、バージョンアップしなければならないのですが、当分、このままで行きたいと思っています。 何故かと言うと、fmgen って、Win32に依存しているので、Unixでコンパイルが通るように、結構 書き換える個所があるんです・・。(汗)

まぁ、それぐらいすればいいやん・・。という話もあるんですが、次回に回したいと思います・・。すいません・・。 あと、今はバグ取り以外の変更は、あまりしたくない状態というのもあります。

再起動の必要性を減らす...

2003年5月24日

マシンタイプを変更したときは、今までアプリ自体の再起動が必要だったのですが、再起動しなくても 良いようにしていました。 Configure で、マシンタイプを変更したら、Reset メニュー押してください。

これ、前からテストコードは存在していたのですが、時々メモリー関係のエラーで落ちていたので、先延ばしになっていたんですよね。 だから、まだ落ちるか可能性も有りますが・・。(汗)

これで、オプションを変更したときに、再起動が必要なのは、FDD numbers と、Extkanji と、ext ram と、sound on/off だけに鳴りました。

それから、今までリセットするときに、メモリーマップを初期化してなかったのですが、 するようにしました。 これで、SR のモード5で起動した後、リセットを押すと、N60モードで起動してしまうという不具合も解消するはずです。

とはいえ、起動中のリセットは、あくまで簡易なので、出来ればアプリ自体を再起動していただくほうが、確実だと思います・・。

全環境で使えるメニュー

2003年5月

全環境で使えるメニューが欲しくなってきました。 何故かと言うと、SDLではメニューが使えなくて、Unix/X では、難しくて、環境依存してしまうからです。

ここで思いついたのは、やはり、エミュレータの画面を使って、GUIもどきを作ることですね。(^^;; 昔、MS-DOSの時代は、よく作ったものですが、現在位置を反転させておいて、カーソルキーによって、それが移動するんです。

フォントはとりあえず、Windowsのやつを使うのですが、ゆくゆくは 環境非依存にしたいので、N60 BASIC のフォントを使って、描画したいところです。 何故、N60 BASIC かというと、どの機種にも、入っているフォントだからです。

でも、上手くいくかなぁ・・。キー入力とかは、どうしても環境依存になるし・・。 メニューモードを作らないといけないし・。 まぁ、Windowsは立派なGUIがあるので、Unixか、SDLかで出来れば良いんですけどね・・。(^^;;

SDLで漢字表示 その2

2003年5月中旬

SDL_kanji 試してみたのですが、なんか上手くいきません・・。 1bppでうまく表示できない・・。と思っていたら、SDL_kanjiのほうでバグがあったので、さくっと直してみました。 これで表示できるようになりました。(^^;; と思っていたら、突然、メモリ保護エラーで落ちてしまうし・・。 何故でしょう?

SDLで漢字表示

2003年5月

SDLで漢字表示をしたいのですが、なんか簡単そうなライブラリを見つけてきました。 その名も、SDL_kanjiです。 BDFというビットマップフォントを表示するだけなのですが、それで十分です。 まだ試してないのですが、必要になるソースコードがファイル一個だけというのも、良い感じですね。(^^; あとは、16ドットのフォントファイルをどこかかから拝借できれば、いけそうです。 これで、漢字を自動生成できれば・・。という感じです。

SDL版

2003年5月

最近は、SDL版を触っています。コンパイルしなおすだけで、Win32版と、Unix 版と、Win32で動くSDL版と、Unixで動くSDL版の4つに対応します・・・。って、こんなことをやっている場合ではないのですが、ついつい開発当初の熱いものが蘇ってきて・・。(^^;

ちなみに、キースキャンコードの並びですが、Unix/X とも、Windowsとも違いますので、またしても作り直さないと・・。(汗) うーん。またしても、正しく入力できないじゃないですか・・。(^^;

サウンドは、Unix版(というか、FreeBSD)と違って、すぐに鳴るようになったのですが、相変わらず音は震えたままです。(汗) まぁ、音が鳴るタイミングで、コールバックが呼ばれるといっても、そこで音を作成したりして、もたもたしていると、すぐに無音区間が出来てしまって、プチノイズになるのは、仕方ないのでしょうか・・・。(汗)

でも、上手くいっているソフトも当然あるので、他に回避方法がありそうですね。 (^^; 欲を言えば、鳴るちょっと前のタイミングで コールバックを呼んで欲しいけど・・。 やっぱりだめ? (^^;;

ちなみに、Win32版ではどうしているのかというと、waveout系の関数では、関数内部で幾段もバッファリングができるんです。コールバックでもたもたしていても、その間に内部バッファの分が処理されるので、プチノイズにはならないのでした。

あと、Z80 CPUの駆動方法は、Unixと同じにしました。(汗) Unixでは、Z80 CPUがメインループです。キーボードのチェックをするときに、イベントを見に行きます。 Win32版は、初めにメッセージループがあって、そのなかで、Z80を動かしたり、メッセージを処理したりしています。 結局は、どっちでも同じようなものかも? とりあえず、今はこのまま行きますが、 また、試してみたいことが増えてきました。(^^;;

あとは、メニューを追加したいところですが、SDLでは標準でサポートされていないんですよねぇ・・・。(汗) 全機能をファンクションキーに割り当てるというのも、非現実的ですし・・。

saver4

2003年5月 3日

取り込みソフトは、仮でsaver4 とすることにします。(汗) まぁ、saver3を拡張してもいいんですが、BASICプログラムが、長くなってしまうし、あまり使わないと思われるので、別にしました。

ちなみに、ディスク経由のときは、d88ファイルからファイルを取り出す必要があるんですが、 saver3 では専用ツールでした。できたら、汎用的な読みツールを作りたいと思っていましたが、 まだ出来ていません・・。(^^;;

初めは、saver4 だったのですが、その後 ksaver と改名いたしました。(2003/8/12 追記)

拡張漢字ROM&RAM

2003年5月 2日

某氏から、拡張漢字ROM&RAMを貸していただきました。ありがとうございます。 それで、取り込みソフトを作っていました。ちなみに、ROMの大きさは、なんと128kbもあって、 左半分の64kbを先に格納して、次に右半分の64kbを格納するようにします。

説明書によると、SRだけでなく、mk2や66でも使えるようです。(汗) ただし、mk2や66では、メモリーマッピングのやりかたが、違うんですよねぇ・・。(汗) これにも対応する必要がありそうです。(汗)

ヘルプ

2003年 4月 30日

細かいことですが、Unix版で、コマンドラインオプションを見ようとして、iP6 -help とすると、ヘルプが表示されて終了するはずが、そのまま起動してしまう・・。というバグが発覚しました。(汗) これは、オプションチェックを Win /Unix で統一したときに、間違ってしまったようです。(汗) すぐに直しました。(^^;;

ヘルプといえば、HTMLでヘルプを作りたいんですが、Windowwsアプリからブラウザを起動して、htmlを表示するにはどうすれば良いんでしょう?(^^; help.html を実行するようにしておくだけでいいとか? とはいえ、htmlなら、環境に依存しないので、簡単なヘルプなら良さそうです。 でも、現状では、環境によって出来ることが違うので、別のファイルにする必要性があるかも・・・・。(汗)

SRの速度

2003年 5月

SRの速度を高速化していました。 これはどうやら、BUSREQ ON だと、低速モード、OFFだと高速モードというふうに切り替わる様です。 SRでは、モード6を起動するとOFFになり、モード1-5 (N60/N66)を起動すると、ONになるのが確認できました。

でも、BUSREQ ON /OFF の意味がよく分かって無かったりしますが・・。(汗) BUSREQって、そもそもDMAと関係があるから、ONだと、DMAを使って、画面更新するんでしょうか? すると、OFFだと、DMAなんかより、もっと高速な転送方法があることに・・。

まぁ、DMAといっても、実際にはCPUを止めてしまうので Z80のようなCPUだと遅くなってしまう・・。だから、AGPのように専用のバスで繋がっているんですよ・・。とか、色々憶測が飛び交っていますが、この辺はよく分かりません。(^^;;;

ちなみに、モード1-5 (N60/N66) でも強制的にBUSREQ OFFにできるようで、それをすると、モード1-5でも、モード6の様に若干高速になります。(^^;;

窓の大きさ

2003年 4月 27日

窓の大きさを動的に変えられるようにしていました。 もちろん、Windows / Unix 両対応です。 それにしてもこれは便利ですね。(^^; いちいち起動しなおさなくても済みます。 メニューから手軽に変えられるようにしましたが、Config ダイアログでも変更可能です。

ちなみに、メニューの名前 結構悩みましたが、結局、large screen としました。 大きいときは、チェックがつきます。

これに伴い、小さい画面のときに、大きい画面が必要になったときに、自動的に大きな画面に切り替わるようにしました。 具体的には、SR の WIDTH 80 と、SCREEN 3 です。

今までは、小さい画面で、WIDTH 80とかやると、左半分しか表示しないようにして有ったんですが、それも解消しました。 そのかわり、突然、小さな画面から、大きな画面になるので、驚かないでください。(^^;;

アイコン

2003年 4月 27日

天丸さんのアイコンを採用させていただくことになりました。 やっと、これで顔が出来ました。 天丸さん、本当にありがとうございました。(__) ちなみに、アイコンは PC-6601SR だったりします。

拡張漢字ROM

2003年4月20日

拡張漢字ROMの並び方がようやく分かったのと、Windowsのフォントの取り込み方法がわかったので、漢字ROM 自動作成ルーチンを作っていました。 ROMが見つからない場合、Windowsのフォントから、自動的に 件のROMを作成してくれます。 本当は、Unix/X11 版も作りたいんだけど、勉強しないと、ちょっと難しそうです・・。

但し、上記の自動作成ルーチンで対応しているのはあくまでも、第一水準の漢字だけなんですよねぇ・・。(汗) それ以外の文字も ROMには格納されているようですが、まだ対応出来ていません・・。(汗)

さぁ、今度は 拡張漢字ROM吸出しプログラムを作らないと・・。(^^;;

裏画面を2枚に

2003年4月11日

複数のビットマップを扱えるようにしていました。 これで、裏画面が2枚になったので、スクロール時の切り貼りが、裏画面で出来るようになりました。(^^;

これで、WM_PAINTメッセージが発行されたときに、一瞬スクロールしていない画面が表示されてしまうこともなくなりました。(汗) まぁ、切り貼りするなら、Direct Drawという手もあるようですが、これは後々の話ということで・。(^^;;

拡張漢字ROMと、拡張RAM

2003年4月8日

拡張漢字ROMと、拡張RAMをサポートしていました。

拡張RAMのほうは比較的簡単です。mallocで、64kb確保して、メモリーマッピングの指令が来たら、マッピングさせるだけです。 ただ、拡張RAMといっても、いわゆるバンク切り替えなので、対応しているソフトがないと、あまり意味がなかったりするのですが・・。 というわけで、簡単なテストプログラムを作って、動作確認していました。(^^; うーん。これって、メモリーがたくさんいるソフト(たとえば、RPGとか)で、有効かもしれませんね。(^^;

ただ、拡張漢字ROMのほうは、大変です。 なにせ、ものがないので、ROMを自分で作ってしまう必要があります。(汗) とりあえず、中身を解析していると、アクセスするときは、I/O でアドレスをラッチさせると、I/Oで、左のデータと、右のデータがそれぞれ読めるようです。 いずれも、I/O を介するので、メモリーにマッピングされません。

漢字ROMの中身ですが、JIS第一水準が全て入っているようです。 気になる容量ですが、なんと、左だけで64KB、左右あわせて、128KBもあるようですね。(汗) うーん。メモリーにマッピングできなかった理由がわかるようです。(^^;;

今、偽拡張漢字ROMを作っていますが、並び方が特殊だったりするので、なかなか作れなかったりします。(汗) まぁ、私の技量が低すぎるというのもありますが・・。 もうちょっと、勉強しないと・。・(^^;;

インデックスに戻る

日記6に戻る