FMTowns情報

  • 1 名前: WINDY ID:0NzBlMGQ3

    他愛もないない事から、悩み事までなんでもお書きください。

    では、手始めに私の困ったことから。
    我が家のTowns・・・ モデル2FとMXとHC(MXは実家に置き去りにしていますので手元には無い)ですが、MXとHCはCD-ROMが弱っているようでCD-Rが読めなかったり、
    特定のCD-ROMから起動できなかったり・・・・ FDDはメディアが悪いのか,安定しない状態です。
    かといってSCSIのCD-ROMドライブを持っている訳でも無いので、Windowsとのデータのやり取りに苦慮する場面がチラホラとあります。
    真剣に内蔵CD-ROMを何とかする手だてを考えないといけないのだろうか・・・・ みなさんのTownsの状況は如何ですか?

    2020-07-29 10:03:48

  • 179 名前: 山川機長 ID:1OWRkNmE0

    こちらは感謝祭の休日だったのでWing Commander 2を二周プレイテストしました。(あくまでもプレイテスト)

    Wing Commander 2は1に比べて難易度がガクッと上がってますね。というか、敵機・味方機との衝突が多すぎ。オートパイロットにバグがあって、目的地に艦がいるとまっすぐ突っ込んで自機が粉々になってしまうことが何度もあったり、また、敵艦攻撃の指示"Attack My Target"を出しても通常兵器で敵艦を攻撃しようとしてウイングマンが自滅してしまうとか、後半のミッションでは指示自体に従わなって敵艦に自機だけで立ち向かわなくちゃならなくなったり、完成度が低いようですね。最終ミッション以外は一応タクティクスがあって考えて戦えば結構勝てるようになったのですが、最終ミッションだけは無敵モードを使ってすら自機がダメージを受けてしまって(爆発しないだけでダメージは受ける)対艦ミサイルを撃てなくなってクリアできなかったりするのは難易度調整に難があるように思いましたが、若かりし頃だったらもっと勝てたのかなあ。あ、あと後方銃座の操作で縦と横が同時に動かないという仕様になってて、それはさすがにあんまりだろうと思ったので解析して-APP WINGCOMMANDER2で起動するとパッチを当てて同時に動かせるようにしてしまいました。GOGのWing Commander 2も買ってあるんだけど同じ仕様なのだろうか。あの仕様だと爆撃機でほとんど勝てない。ときどきクラッシュしたのが津軽の問題なのかWing Commander 2の問題なのかはわからんですが。ときどきVM自体がクラッシュしたけど頻度が低すぎて原因の究明には至りませんでした。

    HDDのイメージファイルですが、UNZのH0ってSCSI ID 0番のイメージという意味なのではないかと思ったんですが、同じHDイメージを違うSCSIIDにつなぐこともあるので、ちょっとこれを標準にするのはいまいちすっきりしないんですけどね。一応GUIの方ではH0~H3を含めて拡張子を選べるようにしてみました。そういえば、Pinさんがビープをつけてくれました。日ごろ読みやすいコードを書くようにと学生さんに言ってるものの、自分でうまくできてるだろうか?と、思っていたのですが、それなりに読めてるみたいで良かったです。

    2020-12-01 01:40:08

  • 180 名前: 山川機長 ID:1OWRkNmE0

    訂正(かもしれない)。なんでWing Commander 2のラストミッションがこんなに大変なんだ?と、思って見なおしてみたらジョイスティックインテグレーションで出すマウスの座標が振り切ってませんでした。多分操縦桿出力が1割ぐらい違ってたのでこれだともう少し勝てるかもしらんです。今晩にも再度やってみます。

    2020-12-01 02:07:03

  • 181 名前: WINDY ID:4MGFiMmM3

    WingCommander2、お疲れさまです。
    難しかったと言う記憶が飛んでいるのですが、やり応えが有ったと言う記憶は有ります。
    この前に動作確認でプレイしたときには散々な結果だったので腕が落ちているのは確かですね。(自分)

    HDDのイメージファイルに関してはH0やH1の数字の部分は確かにSCSIのIDを示していますが、確かに拡張子に入れる必要もない(1番をSCSIの0番として使用しても問題ない)し、うんづでのHDDの指定方法からすれば必要のない番号だと思います。
    敢えて言えば今のところそのようなTOWNSエミュレータは存在しないのですが、HDDイメージの保存されているフォルダのみを指定すれば自動的に拡張子の番号通りにSCSIを接続した状態とする事が出来る事くらいでしょうか?(それが便利かどうかは別として)
    無理にうんづに合わせる必要も無いとも思いますが、理想を言えばうんづと津軽のイメージデータに互換性がある以上は拡張子を変える場合はうんづ側でも新しい拡張子に対応するようにしてもらうべきかと思うのですが・・・・ 暫く更新されてませんので望みは薄いのかもしれませんね。
    そういう意味では津軽サイドではうんづと同じHxの拡張子を今はメインとして使用するが、別の拡張子を考えてうんづ側の動きによっては歩調を合わせて新しい拡張子に移行するのもアリだとも思います。
    (あくまで私の思いや考えですので、"こんな考えも有る"程度に受け止めていただければと思います。)

    前に紹介したfloppy_disk_sheldですが、ブレッドボード上での制作を始めました。
    最初はyas-simさんの物と同等の機能を有する物を作成した上で2HD対応やエミュレータ機能の搭載を考えています。
    本当はFDDからのReadDataをアナログ値で保存した方が良いのでしょうが、今はデジタル値でのサンプリングを目標にしています。
    サンプリングも2HDの事を考えると4MHzでは心もとないので、6~8MHzでのサンプリングが必要なのかなとも思っています。
    亀以下の速度でしか進まないのですが、ボチボチやっています。(汗)

    2020-12-01 10:16:11

  • 182 名前: 山川機長 ID:1OWRkNmE0

    調子に乗ってWing Commander 2プレイ動画上げました。エンディングのスタッフロールに出演声優さんのリストがあるので貴重ですね。Wing Commander 2だとクリアしないと見えないだけに。Hironori Hirata Kilrathiとあるんですが、一人でキルラーの人達(猫達?)の声全部やったのだろうか。ん?Wing Commander 1って出演声優さんの名前ってオープニングのCreditに出てたかな?

    https://www.youtube.com/watch?v=Pu4iL86IG_w

    やっぱりジョイスティックインテグレーションがフルに振り切ってなかったのが難しさの要因で、直したらスラカス機を落とすのは割と簡単になりましたが、続く4機の迎撃機は苦戦しますね。でも修正前みたいに20回やったら一度ぐらいクリアできるレベルから2回に1回ぐらいはクリアできるレベルになりました。ということは、これに気が付くまでのミッションすべてで僕はものすごい苦労をしてきたんですね。多分、ジョイスティックの入力の最後の10%ぐらいで非線形に角速度が上がっていたのではないかと思います。二周やってしまったのでいろいろ作戦とかわかってきましたね。アステロイドフィールドで、アステロイドを盾にする戦法を上のビデオの中で実践してますんで、よかったら見てください。

    HDDの拡張子は、まあ、妥協案は全部H0にする感じですかね。もっとももはや3文字拡張子にこだわる時代でもないので.TOWNSHDみたいにしてもいいかもしれないですが、僕もこれといって強く主張する案も無いですね。Floppy Disk Shieldは2HD版ができるといいですね。しかし、Arduinoは16MHzだから8MHzでサンプルするには2クロックで一度サンプルを取る必要があるのか。あ、でもその部分をシールドでやって8ビット単位でバスに出すのかな?そうしたら16クロックに一度で良くなる計算ですかね。どういう形式にするかとは別の問題としてTOWNS用FDアプリケーションのコピープロテクトを含めた保存ができるといいんですが。でもゲーム保存協会とかでは既にやってるのかな。

    2020-12-01 12:37:48

  • 183 名前: WINDY ID:4MGFiMmM3

    プレイ動画を拝見させていただきました。 早々にキツイのを食らってレーダーが使えなくなったので辛そうでした。

    "うーん、これはクリアしたのだろうか?"と思っていたのですが、デブリーフィングのセリフに覚えが有るような,ないような・・・これはもう一度やって記憶に残す必要が有りそうです。
    FloppyDiskSheldの現在の方法では、サンプリングはデジタル値としてSPI SRAMに直接送り込まれていますのでArduinoには関係なくサンプリングレートで保存されます。
    SPI SRAMは20MHzまでのSPI Clock品ですので20MHzまでは大丈夫なのですが、容量が1Mbitですのでサンプリングレートが4MHzで1トラック分しか入らない換算です。

    今現在ブレッドボードで試しているのはArduino UNOではなく、TEENSY3.5を使用していますのでSPI SRAMに保存するのではなくTEENSY3.5内のRAMに流し込む予定ですがそれでもサンプリング周波数が8MHzを越える場合にはRAMの容量が足りなくなりますので、その場合はTEENSY4.1を使用するつもりです。(4.1も手元に有るのですが、5Vトレラントではないので面倒くさくて)
    (TEENSY3.5 → [email protected],RAM128KByte,TEENSY4.1 → [email protected],RAM1024KByte・・・・ 4K円程度でこのスペックが実現できる時代なんですね。)

    2020-12-01 13:52:27

  • 184 名前: 山川機長 ID:wYmIyNDcz

    なんと、600MHzのがあるんですね。学生さんが皆Arduinoを使ってる影響でArduino以外のは使ったことが無かったのですが、この冬に横置きTOWNSの内蔵CDコネクタの調査をしようと思ってたのですが、究極的にはロジックアナライザだとデータのモニタしかできなくてバイトデータを抜き出すことができないのでFPGAを検討していたのですが、こっちの方が良さそうですね。うーん、しかし5V未対応なのか。

    プレイ動画について、コメントにも書いたのですが、ウイングコマンダー2は空中衝突(空宙衝突?)が多すぎるんですよね。正面から向かってきてる敵機と激突するならまだプレイヤーの責任と言えるのですが、このプレイ動画のようにまったくの視野外の敵機になんの警告も無く激突された上に大ダメージを受けるのはちょっとやる気を削がれますね。今のゲームでこれやったら相当叩かれそうですが、でも当時だとこの3Dグラフィックスと演出だけで感動したもんでしたね。ちなみに僕は当時既に部屋にはMXとDOS/V機が並んで置いてあったころで、Wing Commander II以降はすべてDOSで英語版をプレイしていたので、日本語版Wing Commander IIをクリアしたのはこれが初めてでした。TOWNS版Wing Commander IIは、当時富士通勤務だった友達に、TOWNS版のWing Commander II出たけど、BGMがオーケストラになってるか気になってるんだよね、と言ったらなぜかホイと一枚CDだけくれたやつを今でも大事に保管してます。

    2020-12-02 00:10:29

  • 185 名前: WINDY ID:wNTllMDAy

    奇遇ですね、私もCDROMをどうにかしたくてデータのモニタを画策しています。
    CD-ROMは等速で150KByte/sなので倍速でもTEENSY3.5で充分では無いかと思っていますので、取り敢えずは本体-TEENSY-Driveと接続して流れるデータのモニタを考えています。
    残念ながら私はオシロは持っているのですが、ロジアナは持っていませんので途中でTEENSYでデータをモニタリング(TEENSY-PC間はUSBシリアル@2MBPS)してデータ解析が出来るかなと思っています。
    でも、その前にFDDの方を何とかしないと駄目ですね。(すぐに違う方に気が向いてしまいがちな人なのです)

    因みにTEENSYはArduino互換ですので、開発環境はArduinoIDEを使用しますので今までArduinoで養った知識と経験は全て流用可能ですのでお薦めです。

    WingCommanderIIの減点はCDDAによる豪華なBGMでは無くなった事と、デジタル操作の操縦でしたがこちらは山川機長さんのご尽力により大幅な改善が得られました。感謝です。
    この冬休みにでも通しプレイをしてみます。(メインのテレビを独占するので嫁と子供の冷たい視線が予想されますけど、気にしたら負けかな?)

    2020-12-02 10:05:34

  • 186 名前: 山川機長 ID:wYmIyNDcz

    CD-ROMドライブはTOWNSの動態保存の聖域と思ってます。これさえなんとかすれば、という感じですよね。今のブートローダーでとりあえずまったく起動できないという状況は回避できるようになったと思うのですが、フラクタルエンジンとかほぼパッチ当てるのが不可能なものは実行できないですからね。でもOh!TOWNSを読んでたら、実は編集部にはハードディスクから実行するプロトタイプが回ってきたという記述があり、実はパッチ当てるの可能か?と、ちょっと思ったりもしているのですが。ロジックアナライザは解析の初期段階でピンの役割を解明するまでで、それが終わったらロジックアナライザで取り切れる分量を超えるデータを読まなくてはならなくなるので、TEENSYは良さそうですね。

    なお、Wing Commander IIは、サイバースティックに対応しているようです。起動時のゲームポートのスキャンでそれらしいチェックをしてました。津軽のスロットルインテグレーションは機能するようになったのですが、注意点は、スロットルレバーの読み取り値が揺れる場合(わがCH Pro Throttleだと結構大きくプルプル震える)、キーコードを送信し続ける影響で、イベント画面が次々に先に進んでしまう点です。これを防止するには、イベント発生前にスロットルレバーをゼロの位置に引いて速度ゼロに減速しておく必要があります。例えばConcordia着艦前にスロットルレバーで速度ゼロにして、キーボードの+で前進して着艦みたいにするとイベントのスクリプトがものすごい勢いで進むのを防止できます。スロットルの設定を書いてあるアドレスは特定済みなので、直接値を書いてしまってもいいんですけどね。

    是非、冬休みはお子様と奥様にウイングコマンダーシリーズの魅力を力説してください。

    2020-12-02 12:03:24

  • 187 名前: 山川機長 ID:xMzlkNzMz

    あ、そうだ。もう一点ウイングコマンダー2と言えば、YouTubeの他のプレイ動画を見るとわかるのですが、DOS版だと使ってるサウンドボードによって効果音とBGMの質に結構な違いが出ていたようです。多くのプレイ動画では銃撃の音が8ビット機みたいな効果音になってますね。それはそれで好きな人には味がある音ですが(^_^;)おそらくFM TOWNS版は最高級に近い(けどMIDI未満)のサウンドボードで録音されたのではないかと思います。オーケストラにはならなかったですが、BGMと効果音は標準的なDOS版よりは良かったようですね。スロットルインテグレーションもGUIに統合しなきゃなあ。

    2020-12-03 01:45:04


全部読む/ 最新50/ 1-100/ 掲示板トップ リロード

  • 1 名前: 山川機長 ID:1MDZmYzQ4

    スレッド分けました。内蔵CDが故障してしまったTOWNSをフロッピーディスク経由でSCSI CDから起動するブートローダープロジェクト用スレッドです。一応、フロッピーディスク経由の場合と、SCSI2SDや変換番長のような仮想SCSIデバイスからの起動の両方を想定してます。似たようなことは既にYSSCSICD.SYSでできていますが、TownsOS起動ディスクに組み込む必要があるので、ディスクの再配布していいか微妙なのと、特殊なドライバを組み込むタイトルでは専用起動ディスクが必要などの問題がありましたが、このプロジェクトはその2点の解消を目指してます。

    まだ津軽上の実験ですが、SCSI CDドライブからIO.SYSを読み込み、INT 93Hなどをインストールして、MSDOS.SYSまで読み込んだところで処理を迎撃することに成功しました。まだ青森県地図の表示はできてません。

    しかし、迎撃地点ではMSDOS.SYSは読み込んでいるものの、まだINT 21HがEnableされていないようで、INT 21H AH=48Hでメモリを確保してやろうと思ったら固まってしまいました。これ、INT 21がまだ使えないのではなく、実はPSPとかが存在してないからという可能性もあるんですがね。ただ、考えようによってはBIOSのRedirectorをインストールしようと思ったらこの迎撃地点は悪く無くて、IO.SYSには内蔵CD-ROMから起動したと思い込ませているはずなので、ここでINT 93 AL=C0HがすべてSCSIにリダイレクトされるようにすると、IO.SYSは何事もなかったかのようにSCSI CDから起動してくるはずです。

    問題は、リダイレクタをインストールしたとして、リダイレクタが使用するアドレスがその後別のプロセスに上書きされてしまうことを防止しなくてはならない点です。そのために、その後さらに調べたところ、どうも、MSDOS.SYSにジャンプするときのDXの値がMSDOS.SYSが使ってもいい最後のアドレス (DX=B800Hだと物理B8000Hまで使える)になっているようなのですが、どなたかこの解釈が正しいかご存知の方いませんか?また、そうした場合、DOS ExtenderがB8000~BFFFFを使わないと言えるのかという問題もあるのですが。nabeさんとか知ってそうと期待していたりするのですが。もしもこの解釈が正しければ C000H をDXにセットしている場所にパッチを当ててやれば、BIOSリダイレクタ置き場を作ることができるはずです。

    これまで津軽のデバッガでMSDOS.SYS入り口で止めてLET DX B800H として放流してやった上でV2.1 L20上で何本かEXPファイルを走らせてみた限りではB8000~BFFFFは守られているようでした。

    別な方法としては、もともとのCD-ROM BIOSはいらなくなるので、IO.SYSを識別して、もとのCD-ROM BIOSが書いてある場所にリダイレクタをインストールしてしまうという手もあるのですが、やや乱暴な方法で、多分CD-ROM BIOSは一か所に固まっているのですが他のINT 93Hがその部分のPROCを使っていたらこの手は使えないですね。

    また、できればC0000H直前ではなくもっと下の方のIO.SYS直後あたりにインストールしたいところなのですが、どこでIO.SYSが使っていい領域の最初のアドレスをMSDOS.SYSに渡しているのやら。それはまだ見つかってません。ただ、IO.SYSのサイズはTownsOSのバージョンによって異なってもどのTOWNSのMSDOS.SYSを使っても起動できるということは、どこから使っていいかという情報もIO.SYSはMSDOS.SYSに絶対渡しているはずなんですがね。

    2020-09-24 09:22:42

  • 73 名前: 山川機長 ID:wNGM5OWUz

    あ、そうか。確かにVSYNCがいいですね。そのようにしました。

    とりあえず、キーボード対応と12秒で自動ブートにしてみまてGithubにPUSHしました。RDHIGH.ASMも新しいものに置き換えたので、HCでもROMイメージ転送ができるはずです。が、今実機机にFM77AVが座っている影響で実機テストできてません(^_^;)甘えてしまって、実機テストお願いしてしまってよいでしょうか?よろしくお願いします。

    なお、既にお気づきかと思いますが、HDからブートの場合、最後に起動したオプションを憶えるようになってるので、ほっておくと前回起動したデバイスから自動起動(するはず)します。

    2020-11-07 10:08:43

  • 74 名前: 山川機長 ID:wNGM5OWUz

    WINDYさん、

    テストありがとうございます!ロストテクノロジーでも何か記録に残しておくと100年後ぐらいに誰かが見つけて役に立つかもしれませんね。

    レトロPCはこうやって資料を保存できるけど最近のオンラインゲームとか将来に残らないんじゃないかと非常に不安です。まあ、この心配は今のゲームに燃えてる若い人たちがしてくれればいいことですが、学生さんとかには折に触れてコンピュータプログラムは工業製品であると同時に芸術性もあるというようなことを言う変な教員をやってますが。

    2020-11-07 10:16:40

  • 75 名前: Type.D ID:iYzAwZWYw

    > 山川機長さん
    起動オプションが保存されているのはいいですね。
    今回のは津軽で見てみると16進数でカウントダウンしてブートするのですが、カーソルが2行ずつ動くようです。
    実機ではブートローダーの画面が一瞬出た後に「不法な割り込みが発生しました」と表示されて落ちてしまいました。
    カーソルは本家のブートセレクタとの兼ね合いもありますし、パッドでもキーボードでも動くほうがいいかと思います。

    2020-11-08 00:48:20

  • 76 名前: 山川機長 ID:jNWUyYTJi

    むむむ、そうですか。やっぱ実機テストは必要ですね。というわけで今FM77AVにどいてもらったので今からMXでテストします(^_^;)

    2020-11-08 03:53:54

  • 77 名前: 山川機長 ID:jNWUyYTJi

    大変失礼しました。直ったと思います。 MOV DL,60 DIV DL とすべきところを MOV DX,60 DIV DX と書いてました。津軽のCPUコアは割り算のオーバーフローを無視していたもんで。MXのFDIMAGEで動作確認したので多分大丈夫だと思います。キーボード対応も実機で確認しました。

    2020-11-08 04:29:57

  • 78 名前: Type.D ID:lZDQyYThl

    > 山川機長さん
    無事実機での起動に成功しました。38400bpsでROMDUMPを実行してdecomrom.pyで生成したROMをTsugaruで認識できました。
    Townsでこういうことが可能になるなんて凄いです。

    なお、あまり重要ではないかも知れませんが、2行ずつ移動するのは津軽の起動オプションで解決しました。
    "-GAMEPORT0 KEY"と"-keyboard trans2"(またはtrans1)を有効にしているときのみおきる現象で、
    ANA0にしたりtrans0にすると起きないようです。
    よくよく考えてみるとtrans2とKEYを同時に有効にしていること自体ちょっと変でしたね(^-^;

    以上、ご報告でした。

    2020-11-08 18:12:55

  • 79 名前: 山川機長 ID:5ZWUxZDRi

    おおなるほど。不正な割り込みの方に気を取られてカーソルがふたつ動く問題の方が目に入ってませんでした。

    矢印キーとパッドが同じ機能を持ってしまっている影響ですね。津軽の方で直す方が良さそうなので、直しておきます。津軽と実機で同じ環境が使えるのが理想ですね。

    しかし、TOWNSのキーボードはキーが多いですよね。日ごろUSキーを使ってるのでそもそも変換と無変換が無く、全角・半角も無く、カタカナ・ひらがなも無いという、まさに津軽だけに「おら日本語キーボードさ行くだ」、と言いたくなってしまうのですが、日本語キーボードでもカバーしきれないですよね。実行キーないし。津軽上で長い日本語をタイプすることは無いとはいえ、仮に日本語をタイプするとしたらどうするのがいいんでしょうかね。

    2020-11-09 01:00:13

  • 80 名前: 山川機長 ID:5ZWUxZDRi

    キーボードエミュレーションモードの問題だから津軽側で直そう、と、思ったら実はブートローダーの方の問題でしたね。

    実機でも同じことが再現できます。まずパッドの十字ボタンの下を押し、放す前にキーボードの↓キーを押し、十字ボタンを放すとカーソルが二段動きますね(^_^;)

    まさにこれが発生してました。なので、ブートローダーの方を更新してパッドのリリース待ちの中でキーボードのバッファもクリアするようにしました。時間の都合でまた実機テストしないままPUSHしたのですが、さすがにキーボードバッファをクリアするだけだから実機での実害はないと思います。(でも一見無害な更新がよく大ダメージを及ぼしたりするんだな、これが。)

    副産物でコード見直したらトランスレーションモードで日本語キーボードの数々のキーを送ってないことに気が付いたので送るようにしました。日本語キーボードだとタイプがちょっと快適になった鴨しれません。

    2020-11-09 02:01:07

  • 81 名前: Type.D ID:kNjA4NmM3

    なるほどブートローダー側でしたか。判明して良かったです。実機でも津軽でもばっちりです。

    キーマップの件は難しいですね。普段は別のキーボードを変換アダプタを通して使っているので、純正キーボードを引っ張り出して繋いで思い出していました。

    英語キーボードの場合は英語が打てれば良いかと思いますが、日本語キーボードで現状の最低限の英数記号が入力できてWindowsのIMEが有効な状態から長い日本語を打てるように変えるとすると、IMEを無効にする必要があると思います。

    ソースを見てkeytrans.cppのNULLの部分を、townsdef.hを参考に書き換えればいいのかと思ったのですがビルドは通るものの、うまくいきませんでした。

    文章を入力するとしたら、最低限「ひらがな」「変換・無変換」可能なら「漢字辞書」で足りると思います。
    漢字辞書キーはありませんのでShift+かな漢字とかShift+Insとかコンビネーションに割り当てればいけるでしょう。
    あまり使わないキーは単語登録、単語抹消、実行と取消です。取消はごく希に使うかも知れません。

    ちなみに自分の使ってるクラシックPC研究会さんのアダプタは取消がEND、実行はShift+Enterになっています。

    2020-11-10 03:06:45


全部読む/ 最新50/ 1-100/ 掲示板トップ リロード

  • 1 名前: 山川機長 ID:lOTRkN2Q4

    CMOSの件だけでも長くなる可能性があるかと思ったのでスレッド作りました。YSSCSICD.SYS開発時、津軽開発時に調べたメモに残ってるのが、

    CMOS RAM
    起動デバイス
    [3182H] 起動デバイス種類が (Floppy:1 Harddisk:2)
    [3184H] 起動デバイスユニット番号
    MX ROMの逆アセンブルでも確認。2020/05/20参照。

    臨時起動デバイス
    [3C28H]
    MX ROMの逆アセンブルによると、パッドAボタンを押して起動すると08H (AL=08,AH=00 に分解されてCD-ROM), Bボタンで 02H (AL=02,AH=00に分解されてFD0)

    シングルドライブモード(多分)
    [328CH] 0:解除 1:シングルドライブモード -> [33CEH]がこのバイトを含むチェックサムになってるみたい

    ドライブレターをどうやったら割り当てられるのか調べてます。

    2020-10-01 23:31:01

  • 2 名前: 山川機長 ID:mNjZmOGJk

    Zoomミーティング中暇だったので(不良研究員)調べました。comp_romのソースではCMOSの後半にチェックサムがあるということですが、どうもドライブレターとかシングルドライブモードが書いてある領域は、33CEHを使ってチェックサムが変わらないように調節しているようです。そういえば津軽初期のころは、なんとかシングルドライブモードの意味を解明して津軽初回起動時のCMOSの初期化はSYSROMにさせてホスト側でシングルドライブモードを解除させようと思ってたけど、このチェックサムの意味がわからなくて断念したんだよな。今ならわかる気がする。

    ちなみに、ドライブレターの割り当てですが、割り当て後、31D0~31DAに「富士通」が書き込まれます。が、これは多分いつも一定だと思います。(たまたま昨日パーティションテーブルを解析しててこれと同じ文字列をチェックしていたのでわかった。すごい偶然。)

    IO8:[31D0] 95 <- SJISで「富士通」
    IO8:[31D2] 78
    IO8:[31D4] 8E
    IO8:[31D6] 6D
    IO8:[31D8] 92
    IO8:[31DA] CA

    それで、ドライブレター割り当てですが、以下のようになっているようです。33CEHはシングルドライブモードの変更でも値が変わって、それ以外が増加した分減らして全体のサムが変わらないように調節しているように見えます。

    ということで、これをもとにHD Image用ブートローダーにCMOS設定機能を追加してみます! 実現すれば津軽またはUNZ上で作ったHDイメージとSCSI仮想化ツールだけあればCMOSが死んだ状態から起動可能まで持っていけるはずです!

    。。。。今日と明日はミーティングが山のようにあるんだよな。さすがにミーティング中にMASMプログラミングはできんから週末の作業だな。

    IO8:[31DC] 00 <- 多分Aドライブ
    IO8:[31DE] 00
    IO8:[31E0] 00 <- 多分Bドライブ
    IO8:[31E2] 01
    IO8:[31E4] 05 <- 多分Cドライブ
    IO8:[31E6] 00
    IO8:[31E8] 02 <- ここが変わった (割り当て前FF)
    IO8:[31EA] 00 <- ここが変わった (割り当て前FF) 上位4ビットがSCSI ID, 下位4ビットがパーティションぽい
    IO8:[31EC] FF
    IO8:[31EE] FF
    IO8:[31F0] FF
    IO8:[31F2] FF
    IO8:[31F4] FF
    IO8:[31F6] FF
    IO8:[31F8] FF
    IO8:[31FA] FF
    IO8:[31FC] FF
    IO8:[31FE] FF
    IO8:[3200] FF
    IO8:[3202] FF
    IO8:[3204] FF
    IO8:[3206] FF
    IO8:[3208] FF
    IO8:[320A] FF
    IO8:[320C] FF
    IO8:[320E] FF
    IO8:[3210] FF
    IO8:[3212] FF
    IO8:[3214] FF
    IO8:[3216] FF
    IO8:[3218] FF <- 多分Pドライブ
    IO8:[321A] FF

    IO8:[33CE] 45 <- ここも変わった。↑で増えた分減ってるっぽい。多分チェックサム一定化調整。

    2020-10-02 00:32:27

  • 3 名前: WINDY ID:4NjQwZDI1

    随分と前のことですが、モデル2のブートロムを追っかけたことが有って、その時に作成した使用CMOSの資料が有りました。
    何分素人が逆アセして目で追いながら作成した資料ですので、間違っている部分も多いとは思いますが役に立てばと思い此処に書き込んでみます。

    3180 ?(bit0をチェックしている)
    3182 ?
    3184 ?(3182とセットで使用 3184→AH,3182→AL)
    318E ?(ジャンプテーブル?のベース)disk_command_04
    3190 ?(上記テーブルで使用? 3198まで?)
    3192 ?
    3194 ?
    3196 ?
    3198 ?
    319A ?(読んだあと、and al,0CFh xor cl,al jzと続く)
    319C SS(現在のSS:SP)
    319E SS
    31A0 SP
    31A2 SP
    31A4 SI
    31A6 SI
    31A8 SP(ローカルSP)
    31AA SP
    31AC ?
    31AE ?
    31B0 ?
    31B2 ?(起動時にクリアされる)
    31B8 ?(起動時にクリアされる)
    31BE ?
    31CC ?
    3A50~3A5A ?
    3A64 ?SP(割り込み処理で使用)
    3A66 ?SP
    3A68 ?SS
    3A6A ?SS
    3A6C ?(MasterPIC IMR)
    3A6E ?(SlavePIC IMR)
    3A70 ?(割り込み要因レジスタの値)
    3A98 ?
    3B50 ?
    3B60~3B6E CD_CMOS_PARA
    3B70 CD_CMOS_DATA0
    3B72 CD_CMOS_DATA1
    3B74 CD_CMOS_DATA2
    3B76 ?
    3B78 CD-CMOS_DATA3
    3B7A ?
    3B7C ?
    3B7E ?
    3C22 ?
    3C24 起動時のDX
    3C26 起動時のDX
    3FC6 ?
    3FC8 ?

    2020-10-02 11:09:53

  • 4 名前: WINDY ID:4NjQwZDI1

    ああ、ごめんなさい。
    上の資料は元々モデル2で逆アセしてたのですが、途中でHCになったので混在している可能性が有ります。

    2020-10-02 11:11:43

  • 5 名前: たけがみりう ID:wMWYxNjIy

    たまにはこっちにも書いてみます(?)

    TownsOSや起動時の処理に影響するCMOSの内容を、既知の物も含め2点あげておきます。

    3C1A 起動時メモリ診断モード(0=通常モード、1=簡略化モード) 3代目あたりから有効
    3AD8 各種フラグ (bit7が1の場合、高解像度モードモードON) ハイレゾ機で有効(とはいっても起動時に参照するわけではない)

    2020-11-07 12:31:39


全部読む/ 最新50/ 1-100/ 掲示板トップ リロード

  • 1 名前: WINDY ID:0YWYwODA1

    FMTowns新エミュレータ Tsugaruの情報交換用スレッドです。
    Tsugaru : http://www.ysflight.com/FM/towns/Tsugaru/j.html

    2020-07-28 12:41:40

  • 109 名前: 山川機長 ID:yZGY0MTNm

    J-TYPEを見てますが謎ですね。ディレクトリが表示されないのがなぜなのか調べようとしているのですが。これ、中解像度モードでも出ませんね。ディレクトリをストアしている場所の特定は割と早かったのですが、今逆アセンブルをたどってたどって、表示内容をREPNE SCASBしているところを見つけて先に進めたらなぜかEGBで文字列表示ではなくビットマップ表示に行きついてしまってがっくり来たところでした。間違った場所に書いてしまっているとかだったら書いてる場所を特定するのですが、文字列表示を呼んでない(本来発生するべき処理が発生してない)のは難しいパターンですね。さすがにJ-TYPEのソースなんてないですよね。まだ、最後の手段、実機で386DEBUGして動作比較という手は残っていますが。

    2020-10-25 01:12:59

  • 110 名前: 山川機長 ID:yZGY0MTNm

    久しぶりにCPUのバグ鴨しれないんですが、
    MOV EAX,DS
    (逆アセンブルするとMOV AX,DXと表示するけどオペランドサイズは32)って、EAXの上位16ビットクリアするのが正解なんですかね?オペランドサイズにかかわらず上位16ビットは歩青んするように書いていたら、J-TYPEの中で、 MOV AX,DS CMP EAX,EBX JNE (Skip Drawing) というのがあって、字が出ないのはこの影響でした。むむむ、セグメントの比較だったら CMP AX,BX と書いてほしかった。ちなみに、いくらEGBの文字列表示を探してもだめなはずで、フォントBIOSを使ってビットマップを作ってビットマップ描画機能を使って描画してました。

    というか、言ってる暇にテストプログラム書いて実験します。原因がわかったので多分なんとかなるでしょう。

    2020-10-25 02:48:14

  • 111 名前: 山川機長 ID:yZGY0MTNm

    どうやら MOV EAX,DS は上位16ビットをクリアするべきのようです。386ASMは MOV AX,DS としないとエラーを出すので、上位ビットは残るような印象ですが、実際は MOV EAX,DS と MOV AX,DS は挙動が違うんですね。というわけで、J-TYPE高解像度版も動作するようになり、マウスカーソルが512を超えると0にラップされてしまう問題と、レイア1の内容がレンダリングスレッドにコピーされてなかった問題を解決して、J-TYPEは完全動作するようになりました。今晩のソースで使えるようになります。他のソフトもこれから調査してみます。

    2020-10-25 06:07:15

  • 112 名前: 山川機長 ID:yZGY0MTNm

    ソースPUSHしました。とりあえず、J-TYPEとTowns Paint LiteとMiVは確認しました。WINK3ってフリコレ11にも見つからなかったんですが、どこかでダウンロードできますかね?なお、ハイレゾCRTCのシングルページモードの判定ですが、多分、レジスタ1のビット1のような気がします。一応ズームも対応したつもりなのですが、まだ試してないので間違ってるかもしれません。フルカラーモードですが、EGBでは対応してないんですね。今からHigh-Cのドキュメント読んで勉強します。ところで、MA/MX世代より前の機種用のフルカラーカードって刺すと高解像度も出るようになったんですかね?ハイレゾVRAMを持ってない機種に1MBのVRAMを搭載するカードのような印象を受けたのですが。

    2020-10-25 10:04:31

  • 113 名前: 山川機長 ID:yZGY0MTNm

    一応、フルカラーモード対応したソースもPUSHしました。EGBはフルカラー非対応とマニュアルには出てるのですが、画面モード22番が一応非対応だけどフルカラーと書いてあって(なんだそりゃ)、試しに使ってみたら普通にフルカラーモードになりました。フルカラーモードはレジスタ11BHの値がFFFFFFHですね。なぜかFGSライブラリはフルカラーモードに入ることが出来なかったのですが、多分何か使い方が違うのだと思います。FGS_init2にドライバがインストールされてないと言われますね。Towns MENUの設定ではフルカラーにチェックを入れたのですが。

    2020-10-25 13:59:13

  • 114 名前: たけがみりう ID:iNmU5MDZi

    >112,113 山川機長さん
    WINK3(WINK[波動版・セミハイレゾ対応・MSV対応])はフリコレが発行終了した後に作られた(というか、作った)ソフトなので、フリコレ11にも収録されていません。下記のリンクよりダウンロードできます。
    http://retropc.net/ryu/unz/lib2.htm

    あと、フルカラーモードを含めた高解像度CRTCのEGBでの画面モード表をどこかで見たような気がするのですが、見つかりませんでした。記憶違いかもしれません。

    2020-10-25 17:29:24

  • 115 名前: たけがみりう ID:iNmU5MDZi

    >112 山川機長さん
    114で書き忘れましたが、フルカラーカードは単純に本体と独立したVRAMを持つフルカラーモード専用(と考えていいです。実際には640×480 256色+32768色2画面モードもあるっぽいですが)のオプションカードです。専用NSDD(TownsOS V2.1L30の時点ではMX/MAの本体フルカラーにも対応していますが)経由で制御し、TownsFullcolor V1.1L10ではフルカラー画像をフルカラーカード側から出力させ、その他のGUIまわりは本体側から出力させて、映像信号をフルカラーカード側でスーパーインポーズすることによって処理しています。

    ハイレゾモード対応を含めたものというと、アップグレードカードのほうになると思います。実物を持っていないのでどのような挙動をするのかは不明ですが(秋葉原で中古がたたき売りされていたときに入手すればよかった…)、Oh!誌に掲載されていた写真のチップ点数を見る限り、本体VRAM 512KB(スプライトRAM含まず)+カード上VRAM 512KBの合計1MBでMX/MA/HA/HB/HC同等の新画面モードが使えるようになるっぽいです。もちろんOS(TBIOSやWin95のドライバ)側の対応は必須ですが…

    2020-10-25 17:40:17

  • 116 名前: たけがみりう ID:iNmU5MDZi

    新バージョンを試してみました。

    どうもCRTC2のレジスタ0x0000 bit0はCRTC切り換えとはあまり関係のない機能のようで、これを有効にしているとこちらで確認した範囲ではMiV、TownsOS標準の「システム設定」、EGB_MF.BINを組み込んだ状態のTownsMENU(TownsSHELL?)等でウインドウサイズが1024×768ピクセル分に広がって何も表示されないという現象が発生しました。
    そのあたりをこちらで手直ししたもので調べてみた結果、フルカラーモード対応は当然として(TownsFullcolor,MiV,ViXで確認)、前回のバージョンにあった表示異常(1画面モードで映像がおかしい、MiVで互い違いの表示になる)も直っていましたし、J-TYPEやTownsMENUが使用している2画面モード、MiVやTownsMENUが使用しているハードウェア拡大も問題なく、概ね良好と言った感じでした。

    現状の津軽は、CRTC2対応に関してはUnzよりいい感じです。

    2020-10-25 19:02:32

  • 117 名前: 山川機長 ID:yZGY0MTNm

    早速テストしていただきありがとうございます!レジスタ0の切り替えは問題ありのようなので、無効にしておきます。ちなみに、なぜそうしたかというと、画面モード22番を一度使ってしまうと、プログラムを終了してもTowns MENUがHigh-Res CRTCを有効にしないという問題が出たからなのですが、そういう理由で22番は公式に非対応なのかもしれないし、あるいは、別の何かを僕が見落としてるのかもしれません。

    しかし、秋葉原で中古がたたき売りのときに買えばよかったものはたくさんありますね。レトロゲームとかカゴで500円とかで売ってた時に買い戻しておけば良かったと後悔してるものがたくさんあります。今日もヤフオクでFM77AV専用Dig Dugが18000円とか値段ついてるし。

    2020-10-25 22:16:19


全部読む/ 最新50/ 1-100/ 掲示板トップ リロード

  • 1 名前: たけがみりう ID:1NjNhMmQ0

    雑談スレッドでハードウェア解析や考察が話題となっていますが、個人的に別途スレッドを立てた方がよいと思ったので立てました。
    強制はしませんが、今後のハードウェア解析や考察についてはこちらのスレッドで話題にしていただけると助かります。

    2020-09-24 09:40:33

  • 7 名前: WINDY ID:3MWY5OGI1

    昨日SCSI CDbootのために内蔵HDDを外すついでに見てみたら、私のHCでは「H8/325」が搭載されていました。
    詳細な形番が判らないのでPROMなのかMaskedROMなのか判別できませんが、恐らくソフトの版のシールが貼ってあったのでどちらかでしょう。

    「入出力ピンからCD-ROMドライブに行っている信号線のIn/Outが判るかも」と思いましたが、H8のGPIOはIN/OUTなのですね・・・・
    プログラムも吸い出せそうに無いのでそっち方面からの解析はおあずけです。
    ドーターカードの配線がCD-ROMドライブのコネクタを避けて通ってましたので少なくともCD-ROMドライブはSCSIでは無い事は確かです。
    (HCのドライブはCD-ROMを挟むように内蔵HDD用のものとファイルスロット用(HC53MはMO内蔵のため)のSCSIのコネクタが存在しています)

    2020-10-01 17:57:03

  • 8 名前: WINDY ID:1MTUwMDgx

    メモリカードの件ですが、手を換えてos-wikiで検証用に使用しておられたpcctolをHCで使用してみました。
    結果としては、CFカードアダプタに挿したCF(32MB FAT16)と4in1アダプタに挿したSD(16MB FAT16)でアクセスに成功しました。
    ファイルのコピーとかもやりたかったのですがドキュメント通りにタイプしてもdrive errorになってしまうのは私のミスだろうか・・・・
    もう少しやってみたいと思います。

    pcctoolは、下記のこめんと欄の一番下の川合さんのコメント先よりソース付きで入手できます(ソースはASKAになります)
    http://oswiki.osask.jp/?pcctol

    2020-10-10 00:32:59

  • 9 名前: 山川機長 ID:4NTI2Y2Ri

    おお、読めたんですね!詳しくリンク先は読んでいないですが、読むときウェイトかなにか必要なんでしょうかね?今でこそ高速なCFやSDがありますが、当時のRAMだと486DXの66MHzで読んで追い付くのかな?と疑問はあったのですが。ただ、SYSROMは普通にMOVSBを使ってアクセスしているようなのですが。引き続き何かわかったら教えてください。

    2020-10-10 23:50:13

  • 10 名前: WINDY ID:wYTY5OGJi

    >9 山川機長さん
    取り敢えず小さなファイルをSDとCFに書いたり、SD,CF上の物を読んだりしてみましたが、全く問題がありませんでした。
    しかしながらCF上に同じファイルを名前を変えてコピーして行ったときに、2.36MBを超えたときにエラーとなった事からたとえCFやSDが大きな容量を持っていてもある程度までの大きさまでしか書けないような印象です。
    この制限がプログラム上の物なのか、TOWNSの機能による制限なのかは不明ですがPC用の同名ソフトではより大きな容量をカバーできている記載がpcctolのドキュメントに記載されている事から、プログラムの制限では無いような気もします。
    オリジナルのソースを眺めてみようかと思います。

    CFやSD等のスピードに関しては、PCMCIAカード自体がコントローラを内包している事から問題はないのではないかと思います。(カードのBusyが端子に出ているので、それに従うタイミングでOK)

    2020-10-11 17:40:42

  • 11 名前: 山川機長 ID:1YmUxM2Vl

    CFが読み書きできると大きいですね。TOWNS側でBUSYフラグ見て調整ですかね? 赤本だとBUSYフラグはEPROMの書き込みREADYとあったので読み込みは関係ないかと思いました。SYSROMは何もせずにMOVSBしていたような気がしたのですが。PHYSDUMPは何も考えずにMOVSBでリアルメモリにプロテクテドモードメモリをコピーしてダンプしているので、もしもWAITが必要とするとその影響で意味のない値が出てきたのかも。いや、でも、それだとTICMFMT.EXEでフォーマット失敗したなあ。実はMXの問題なのだろうか。

    ちなみにブートローダーですが、PCとクロスケーブルでつないでXMODEM経由でCMOSダンプをやりとりできるようにしようとしてます。ゆくゆくは、XMODEMでROMも送れるようにして、CDもFDも動かないTOWNS→仮想SCSIドライブで起動してROMファイル抜き出し→エミュレータ上でHDDイメージ作成、CMOS設定→XMODEMで実機にCMOS送信→仮想SCSIドライブにエミュレータで作ったイメージをマウント→実機復活という流れができないか(SCSI CDドライブが無くても仮想SCSIドライブだけで復活可能)、というようなことを考えてます。

    この間ヤフオクでFDが動かないというUXが出てましたね。そういうのもこれで復活させられれば、と、思うのですが、ただUXに関しては依然としてなんで386SXでブートローダーが動かないのか(それともUX特有の問題か)特定できてないですが。386DXで使えて386SXで使えない命令なんてあったかな?

    2020-10-12 08:25:46

  • 12 名前: WINDY ID:3YmY2OWI5

    >11 山川機長さん
    pcctolのソースを読んでいます・・・ 私にとってはASKAは慣れないとX86以上に読みづらいかも・・・
    ですが、readとwriteの最小ループ部分は512バイトを連続して読み取っている事は判明しました。特にフラグを参照している節は有りません。
    もう一段上のループでは、400nsのウェイトが入っていますのでセクタの切替時には待っているようです。(R/W共に同じ400nsです)
    また、バンク切替レジスタはオープン時にバンク0に明示的に切り替えていますが、R/W中に切り替えてはいない様子です
    上記オープン時には明示的にメモリマップドモード,デバイス番号0を指定していますが、タプルを辿った様子は無く決め打ちでメモリカード側を設定しているようです。

    2020-10-12 13:18:38

  • 13 名前: 山川機長 ID:4NzkwN2U2

    Amaranth3対応のためI/O FF82H(Memory-Mapped I/O CFF82H)について実機で(今引っ張り出してきた2F)で実験していたのですが、非常に興味深いですね。

    まず赤本ではFF82Hに書き込むときはビット6は必ず1にすることとありますが、TBIOSがAH=06Hで27Hを書き込むので0でも1でも関係ないようです。

    ビット0~2、ビット5で表示プレーンを指定できることになっていますが、2Fで画面モード1,3,13,17 (なぜかTBIOSが32K色モードで2ページにしたら何も書いてくれないのだが、どうやれば書いてくれるんだったか忘れた。Towns現役当時ほとんど自作のConcorde Graphics Library使ってたもんな。)で試したところ、どうやら16色モードで、カラーインデックスに対するマスクとして機能するようですね。

    ビット4で表示ページ指定ということになっていますが、CRTCのVRAMオフセットを切り替えるのかと思ったら、どうやらこのオフセットはCRTCとは別にあるようです。多分CRTCとVRAMのアドレスバスに割って入って、CRTCがVRAMレイア0の上半分(00000H~20000H)にアクセスするときのみオフセットが適用されるようです。1画面モードではVRAMを互い違いに読むので、このオフセットが適用されると縦じまが入るみたいに画面が乱れます。が、本来FM-R互換モード以外でこのビットを使うことは無いはずなので2F以外だと動作が違うかもしれません。

    さらに、画面モード1(FM-R互換モード)以外では明らかにオフセットはちょうどVRAMの半分, 20000Hなのですが、画面モード1だと縦方向に12ピクセル、横方向に320ピクセルずれるんですね。計算すると、画面モード1のときだけ203A0Hのオフセットになるという謎な挙動を示したのですが、この3A0Hがどこから来たのか謎です。

    ただ、おそらくこの3A0Hのオフセットを気にするアプリケーションは無いだろうと思ったので津軽では画面モードにかかわらずちょうど半分20000Hで割ってます。それから画面が互い違いに乱れる状態も実機に忠実に再現しようかと思ったのですが、それだとレンダリングでピクセル単位で加算と論理和が増えるし、そもそも未定義の動作なので再現してません。

    2020-10-19 03:08:07

  • 14 名前: たけがみりう ID:kZDkxZjFk

    >13 山川機長さん
    I/O 0xFF82のbit6って何だっけと思ってXM⑪のソースを見てみたところ、400ライン/200ライン設定でした。おそらくFM16β/FMR-50との互換性を持たせるために必ず1(=400ライン)を書き込むことになっているんだとは思いますが、TOWNSでは何の意味もないですね。

    2020-10-20 16:59:52

  • 15 名前: 山川機長 ID:2NzRmZGI5

    なるほど、FM11のI/Oを見て意味を確認するという手があったんですね。さすがです。いやあ、意味がないかどうか、とりあえず4ピクセルまたは2ピクセルずつ互い違いになる現象を利用したプログラムは確認できてませんが、400/200ラインの選択も非公式にできるのであれば、4段階で画面を崩すことができるので、その気になればこれを使って画面がDissolveするようなエフェクトを書くことも不可能ではないかもしれません。ひょっとするとそれが意味を持つプログラムも見つかるかもしれないですね。見つかったら面白いですが、エミュレータ泣かせですね(^_^;)

    2020-10-22 01:11:17


全部読む/ 最新50/ 1-100/ 掲示板トップ リロード

  • 1 名前: WINDY ID:5YWNmNTg5

    FMTownsのアプリケーションの動作報告用

    2020-07-28 13:17:50

  • 99 名前: 山川機長 ID:1MjM3YWY3

    DINOSAURなのですが、僕がやると町出て帰ってこれるのですが、すると町から出られなくなるようです。これ、町に戻れなくなります?

    こちらの現象ですが、初期状態だと「扉は固く閉ざされている」というメッセージが出ますが、長老に話すと扉が開くのですが、いったん外に出て帰ってくると、メッセージは出なくて、画面が一瞬暗くなって外に出るかと思うのですが、結局出られないという現象が起きてます。現在どこにフラグがあるのか解明しようとしてます。

    2020-09-10 09:55:05

  • 100 名前: 山川機長 ID:1MjM3YWY3

    DINOSAURですが、DS:106FHが扉通過回数のカウンタになってるっぽくて、値が1以下になると扉を通れないようです。僕は町から出てすぐ戻ったので入れましたが、再度出ようと思ったら出れなくなりました。ひょっとして、町から出て何かするうちにカウンタが減るイベントが発生している鴨しれません。お時間のあるときに、町に戻れなくなった時点で、試しに、

    EMB PHYS:3106F 7F

    と、やってみて、戻れるか試してみていただけますか?そうであれば同じ原因ということになりますね。あとは、何の拍子に値が減ってるのか解明すれば、扉が通れない問題は解決するのではないかと思うのですが。あ、違うや。減ってる箇所見つけちゃった。けど、これだと扉を通ると確実に1ずつ減っていくことになるな。。。。じゃあ回復する場所を解明しないと解決しないのか。

    それから、長老にいちいち話に行くのが面倒だったら、

    EMB PHYS:3EF01 5

    これで話したことになります。

    2020-09-10 11:18:25

  • 101 名前: WNIDY ID:yMDkxMjM1

    >100
    "EMB PHYS:3106F 7F"とやってみた所、再度町の外へ出ることができるようになります。
    "DM PHYS:3106F"とやると、町を出たり入ったりするとデクリメントされるようです。

    うんづでは同じアドレスはオープニング以降ずっと00Hのままですね、一瞬だと判らないですが少なくとも大きな数値は入っていないようです。

    2020-09-10 12:37:04

  • 102 名前: 山川機長 ID:1MjM3YWY3

    あー、DINOSAURはコピープロテクトですね。なお、一応再度書いておくと僕はアメリカに住んでるのでDMCA法に基づいてレトロゲーム保存のためのプロテクト解除は明示的に合法とのことです。日本も早くレトロゲーム保存のための法制度が整うといいのですが。

    INT 93H AX=0720Hを2度読んで、シリンダ6のサイド0に9,10,11,12,13セクタ(おそらくそれぞれ256バイト)が存在することを確認してます。チェック箇所はBRKON INT 93 AX=0720で簡単に見つかります。確認した範囲では2度に分けて読んでます。Brandishと同じ方式に見えますね。プロテクトに通った場合は、DS:[106EH](物理 3106EH)に10Hが、通らなかった場合はDS:[106EH](物理 3106EH)に01H, DS:[106FH]に03Hを書き込んでいます。これは扉を通るたびにチェックしていて、一度ひっかかってDS:[106EH]に01Hが書かれてしまうと、一度扉を通るたびにDS:[106FH]がDecrementされ、0になったら二度と通れないというものです。おそらくシナリオディスク両方がそうでしょう。

    D77イメージを作ればプロテクトごと再現できるはずです。が、現在2HDのD77が作れないので、D77に変換して、シリンダ6のサイド0に256バイトのセクタを追加してみたところ、普通に何度でも出入りできるようになりました。なお、使ったツールは、僕のpublic repositoryのsrc/FM7/utilに入ってるd77analyze.exeです。publicレポジトリのFM系のソースをFMレポジトリに分離しようとしてますが、まだD77ユーティリティはpublic下に残ったままになってます。

    存在しないセクタの読み込み要求があったら気にしないで適当なデータを返した方がいいんだろうか。うーん。しかし、コピープロテクトも含めて再現したいと思っているので、ひっかかったときの動作も再現したいから、やっぱとりあえずやめておこう。

    2020-09-10 22:33:58

  • 103 名前: WINDY ID:kZjNiZGNl

    >102
    プロテクトか・・・ 動き的に何だかそんな気はしていました。
    プロテクトに引っかかるのも正しいエミュレーション結果ですので、方針は支持します。
    WIKIの方にも記載しておきます。

    2020-09-11 06:51:24

  • 104 名前: 山川機長 ID:mY2IwZTlm

    Amaranth3が動くようになりました。-APP AMARANTH3でマウスインテグレーションも対応します。Amaranth3対応のためにFM-R互換モードの表示の扱いを直したので一緒に他のタイトルもいくつか直っててくれるといいのですが。あと、Splatter Houseその他でLOW RESモードで背景の一部が1ピクセル上にずれる問題もやっと原因を究明したので、直しました。これはLOW RESモードが問題ではなくて、HDS-HAJがゼロではない状態で横スクロールしたときレンダリングでVRAMのアドレス計算を間違ってました。例によって今テストを流してるので、全部通ったらソースをPUSHします。

    2020-10-17 06:21:01

  • 105 名前: 山川機長 ID:0ZWJmNDli

    Invitationですが津軽だとデモが速いということなのですが、これって実機やUNZだとCPUクロックの影響でスピード上がりませんかね?

    実機でテストすりゃいいんですが、CDドライブが健全なのが2FだけなのでCPUを高速にできませんでした(^_^;)

    ただ、ざっと逆アセンブルしてみた感じだとタイミングはCPUによるBusy Waitで取ってるようなのでCPUが速いと高速動作してしまいそうに見えるのですが。多分000C:00009838がWaitで、

    if(DS:[63D40H]!=0)MousePolling
    else BusyWait

    みたいな感じなので、おそらくDS:[63D40H]が本編フラグで、本編だとマウスのポーリングがI/O 6CHでディレイを入れるのでタイミングが速くならないのではないかと思います。

    2020-10-19 06:41:20

  • 106 名前: たけがみりう ID:1NDM0Y2U2

    >105 山川機長さん
    Invitation(オリジナル版)のデモの速度ですが、実機やうんづでもCPUクロックに比例して速度が上がります(これは同時期のMistyも一緒です)。互換モードにさえすれば問題は解決するのですが、現状の津軽にはその実装がないようで…。
    あと、本編のマウスポーリングに関してですが、I/O 0x006Cは3代目になってから新設されたポートなので、初代の時点…というかCONTROL.EXEのリボン絵の表示内容からして組み込み版がそもそも古いバージョンのTownsOS(&TBIOS)のInvitationでは考慮されていない可能性が高いです。

    2020-10-19 09:55:20

  • 107 名前: 山川機長 ID:0ZWJmNDli

    りうさん、

    了解しました。とりあえず、何かI/Oが実装できてないとか速く進みすぎているわけではないんですね。安心しました。情報ありがとうございます!

    互換モードは、メモリアクセスウェイトなどを加えた場合のパフォーマンスの影響を考えると、当面はVMのCPUクロックの調整で対応する方向で行こうと思っています。所要クロック数が486に合わせてあって、メモリアクセスウェイトも無いので、初代相当ぐらいにしようと思ったら16MHzよりも結構下げないと合わないかもしれないですね。ラストハルマゲドンとか8MHzにすると快適とか動作報告に書いてありましたね。

    2020-10-19 12:15:25


全部読む/ 最新50/ 1-100/ 掲示板トップ リロード

  • 1 名前: 山川機長 ID:2ZmNjY2Jj

    SCSIのPhaseのMESSAGE_INとSTATUSの順を入れ替えたら、とりあえずSCSIのエラーは出なくなりました。
    が、HIMEM.SYSインストール中に割り込みハンドラを破壊という現象が起きていて原因を調査中です。
    なお、デバッガで BRKON INT 21 AH=3D としておくとfile openで止まるので、pri cst するとどのファイルを開くとこかわかるようになってます。

    2020-07-28 12:59:54

  • 38 名前: [email protected] ID:yOTA2ZDA0

    VERR/VERWありがとうございます。VERRを通過して、CLTS(0Fh 06h)で死亡しました。T-OSはなぜタスク機能を使ってるのか……。
    お盆あんまり関係ないんですよね。まとまった時間取れれば集中してドライバ書いてたいのですが。

    2020-08-14 21:33:10

  • 39 名前: [email protected] ID:iOTlkMGEx

    CLTS実装ありがとうございます。TBIOSLD.SYSとTOWNS.SYSを組み込んだ状態で起動するようになりました。
    ですが、COCO で forrbios.nsd を組み込むとコードでない場所(V86モード)を実行して止まるようです。
    (COCOを組み込まなくても適当なEXPを起動してると同じようなところで停止。同条件でEMM386を組み込まない場合は問題なし。)

    なんとなく根が深そうなので、お時間あるときに見ていただけら嬉しいです。

    2020-08-15 15:15:40

  • 40 名前: 山川機長 ID:1YmIyYTA2

    あらぬ場所にジャンプしてしまう現象は、考えられる可能性として高いのは、
    (1) Exceptionを正しく出してない。
    (2) Exceptionの出し方が正しくない。
    (3) Task Gateを使ってジャンプしている。
    (4) CPUコアに未発見のエラーがある。
    と、このぐらいだと思います。多分、(1)だと思うんですね。なんとか環境を作って調べられないか検討してみます。

    2020-08-16 02:51:32

  • 41 名前: [email protected] ID:1OWQzZTg4

    >>40
    TOWNS-OS on DOS6環境を作るには、DOS6をインストールしたHDD区画に対して、TOWNS-OS V2.1L40以降のシステムCDを起動して、アイコンから新規インストール先として指定すれば、DOS6上にTOWNS-OSがインストールされます。

    これで128MB超えのHDD区画もバッチリ認識……じゃなかった。これで上に書いた問題も再現します(V2.1L50にて確認)。

    2020-08-17 18:16:55

  • 42 名前: 山川機長 ID:iZWUxZmQ0

    了解しました!詰まったら、多分実家から回収してきたFM Townsシステムセットアップガイドを見ながらなんとかできると思います。(一応共著者に名前入ってるけどDOS6の部分は全部武井先生が書いた)。やってみます!

    2020-08-19 05:36:29

  • 43 名前: 山川機長 ID:iZWUxZmQ0

    状況再現しました。クラッシュは↓ですね?

    3FF8:000014E1 FFFF

    この直前がIRETDで、NT=1となっているので、どうやらTask Returnというのを実装しなくてはならないらしいです。戻ってくるアドレス自体は正しいのですが、素直にStack ReturnsしてしまうとVMフラグをクリアしてしまって、3FF8をセレクタと解釈してとんでもないリニアアドレスだと思っているようです。

    想像なのですが、ここはRUN386の中のようで、このTask Returnした先でVMフラグをクリアして3FF8:000014E1に戻してRUN386に続きをさせるということではないかと見ています。

    どのぐらい簡単か難しいかまだわからないので、ちょっと勉強してみます。

    2020-08-19 08:45:30

  • 44 名前: 山川機長 ID:iZWUxZmQ0

    うーん、もはやどれを信じていいのかわからない。i486 Programmer's Reference ManualのPsuedo Codeによると、

    (* Protected mode *)
    IF VM=1
    THEN #GP(0)
    ELSE
    IF NT=1
    THEN GOTO TASK-RETURN

    と、あるものの、下の説明では、

    #GP(0) fault if the IOPL is less than 3, to permit emulation

    しかし、VM86モードのIOPLは3のはずだから、'less than'にはあたらない。ので、Pseudo Codeとテキストの解説が矛盾してます。結構こういう誤記なのか手抜きなのかわからない表記多いんですよね。

    ここの記述→では、https://www.felixcloutier.com/x86/iret:iretd

    IF(EFLAGS.VM=1)
    THEN GOTO RETURN-FROM-VIRTUAL-8086-MODE;
    ELSE GOTO PROTECTED-MODE;

    RETURN-FROM-VIRTUAL-8086-MODE:
    (*Processor is in virtual-8086 mode when IRET is executed and stays in virtual-8086 mode*)

    とあり、その説明では普通にNTフラグにかかわらずStack ReturnするがVMビットは影響を受けない。とのこと。しかし、そんなことはi486 Programmer's Reference Manualを見る限りまったく書いてません。POPFDではそういう記述があるんですけどね。VMフラグそのたいくつかのフラグはPOPFDによって変化しないそうです。

    それで、Task Returnを調べたところ、TSSにReturn先のTRが書いてなければならないことになってますが、EMM386環境ではタスクはひとつしかなくて、ほかのタスクにリターンしたくてもそもそも戻り先タスクが存在しなさそうです。

    一番都合のいい解釈は、VM86モード下のIRETではVMフラグが変わらない以外は基本的に普通のIRETと一緒、とする説なので、そのようにしてみたところ、DOS6上でTowns MENUが起動しました。例によって現在ctestを流しているので、全部通ったらソースをPUSHしますね。

    2020-08-19 09:44:41

  • 45 名前: WINDY ID:lMWM3OGE0

    >44 山川機長さん
    もうある意味解決しているのかもしれませんが、INTELのia32_arh_dev_man_vol2a_i.pdfの該当個所を見てみると、

    RETURN-FROM-VIRTUAL-8086-MODE:
    (* Processor is in virtual-8086 mode when IRET is executed and stays in virtual-8086mode *)
    IF IOPL=3 (* Virtual mode: PE=1, VM=1, IOPL=3 *)
    THEN IF OperandSize = 32
    THEN
    IF top 12 bytes of stack not within stack limits THEN #SS(0); FI;
    IF instruction pointer not within code segment limits THEN #GP(0); FI;
    EIP ← Pop();
    CS ← Pop(); (* 32-bit pop, high-order 16 bits discarded *)
    EFLAGS ← Pop();
    (*VM,IOPL,VIP,and VIF EFLAGS bits are not modified by pop *)

    とあります。

    2020-09-02 14:39:35

  • 46 名前: 山川機長 ID:iNmQyZjc5

    そうですね。とりあえずDOS6を走らすレベルでは解決しましたが、ありがとうございます!一応、i486 Programmer's Reference Manualというのを参考にしていて、Intelの公式出版物のようなのですが、エラーが多いです。Intel公式のSoftware Development Manual (多分ia32_arch_dev_man_vol2a_i.pdfがそれかな?) を参考にする方が良い、と、とある知り合いの方から教えていただいたので今後はそのようにしようかと思ってます。

    2020-09-03 05:33:45


全部読む/ 最新50/ 1-100/ 掲示板トップ リロード

  • 1 名前: WINDY ID:kY2JlZjhk

    FMTowns実機や各種FMTownsエミュレータを使用する上での質問事項

    2020-07-28 13:20:43


全部読む/ 最新50/ 1-100/ 掲示板トップ リロード

  • 1 名前: WINDY ID:zNjIyNjU0

    FMTowns新エミュレータ emufmtownsの情報交換用スレッドです

    2020-07-28 12:45:08


全部読む/ 最新50/ 1-100/ 掲示板トップ リロード

スレッド作成



管理者へ問い合わせ