FMTowns情報

  • 1 名前: WINDY ID:0YWYwODA1

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

    2020-07-28 12:41:40

  • 681 名前: 山川機長 ID:hMWU4NmIz

    getchar()問題、原因わかりました! MXのROMでやってみたら、デバイスドライバに対してまずリクエスト5(Non-Destructive Read)を出して、入力があったらリクエスト4(本気Read)を出して1バイト文字を読むということをやってるのですが、僕は単純にリクエスト4だけ出していたのでCXバイト埋まるまで帰ってこなかったようです。多分リクエスト4でまとめて読まずに1バイトずつ読んでリターンキーがあったらそこで止めて戻るでもいいと思うんですね。archive.orgのpcdosretroで多分やり方はわかったので、直せると思います。

    2024-04-23 23:04:52

  • 682 名前: LFO ID:0OTM0Njcx

    漢字変換がフリーズする件、HDD再インストールでも駄目で色々やった結果、(多分)cmosクリアで漢字変換出来るようになりました。お騒がせしました

    2024-04-24 00:54:59

  • 683 名前: 山川機長 ID:3ODE1ZDRk

    互換ROMのgetchar()問題、応急処置なのですが直ったと思います。FMT_DOS.ROMその他githubに上げたのでお試しください。本来はYSDOS.SYSの中に簡単なラインエディタ機能を書くべきなのですが、とりあえず指定のバイト数が埋まる、またはリターンキーを押すまで1バイトずつ読み込むようにしました。本来のgetchar()ではエコーが出るはずですが、YSDOS.SYSでは出してません。が、リターンキー待ちは正しく動くようになったと思います。

    こちらもLinux本が明日届くことになってます。

    2024-04-25 10:36:36

  • 684 名前: BCC ID:wM2I4MmVj

    リターンキーは認識し、ブートまで進んだのですが今度はHDDのパーティーションチェック時に
    VFS: Cannot open root device 00:00
    Kernel panic VFS: Unable to mount root fs on00:00
    で止まりました。山川機長さんに届く本がDOSBOOT付きのものであればいいのですが。
    自分が持っている「Linux入門」の本には「CDに収録されている内容は各利用規約に沿って使用してください」とあるんですが、肝心の配布条件とかCD内にもテキストファイルとかが見当たらずちゃんと記載されてないんですよね。
    Slackware自体はGPLだろうし、TOWNS差分部分も再配布とか許可してるとは思うんですが。

    2024-04-25 23:25:53

  • 685 名前: 山川機長 ID:jNzgyNDA5

    なんと、Linuxコードに入ってから止まりましたか。そこまで進んでしまえばあとは互換ROMか実機抽出ROMかは関係なさそうですけどね。ひょっとするとSCSIかDMAの状態が変になってるのかもしれないですね。なお、Linux本届きました。CDも未開封のようです。(これにネットワークカードのドライバとソースが入っててくれるとうれしいが、果たして本当にTOWNSでも起動できるのか!?)。それはまだ試してないのですが、互換ROMで、Linux+JE2 1995-12のCDから起動しようとしたら INT 21,AX=4808H DOS.Malloc ここから戻ってこない現象が発生したので、まずこっちを解決してみます。

    2024-04-26 22:22:10

  • 686 名前: 山川機長 ID:xNDJjODFh

    「挑戦!Linux」届いたのでCDをイメージ化しようとしたら、なんとCDが傷んでました。表面の汚れと思ってクリーニング、さらには磨き粉でリペアまでトライしたのですがまったく汚れが落ちないところを見ると、蒸着が甘くて中のアルミが劣化してしまったようです。200円だったから仕方ないんですが、プレスしたCD-ROMがビニールから出していない状態でここまで劣化している例を見たのは初めてです。残念。保存状態が悪かった可能性もありますが、「挑戦!Linux」の付録CDは生産のクオリティが悪かった可能性も予想されるので、もう一冊別のものをヤフオクで落とすのはやめておきます。

    ただ、互換ROMではLinux+JE4 1995-12が起動できなかったのですが、これは上の方でBCCさんが指摘されていたMREALLOCが問題でした。これがMemory Control Blockを破壊してた影響でMallocから出てきませんでした。これを直したところ、なぜかリターンキーを押さないと先に進まないと思ったら、まだリダイレクションをサポートしてなかったのが原因だったのですが、そこはリターンキーを押せば通過して、起動しそうになった、と思ったけど途中でクラッシュした、と、思ったら-HIGHFIDELITYつけ忘れてたといううっかりがあったものの、-HIGHFIDELITYをつけて起動しなおしたら無事zimageも読み込んで起動まで行きました。

    そのFMT_DOS.ROMはgithubに上げましたが、これでBCCさんのLinux起動しないですかね?

    2024-04-27 09:21:34

  • 687 名前: BCC ID:lMDEyNjE3

    すみません、githubの方がまだ更新されていないようです。

    2024-04-27 19:09:38

  • 688 名前: 山川機長 ID:xNDJjODFh

    すみません、今本当にPUSHしました。

    2024-04-27 20:16:22

  • 689 名前: BCC ID:lMDEyNjE3

    ソースコードの方は更新されているようでしたが、FMT_DOS.ROMはまだのようでした。DosboxとMASMを使って自力でコンパイルしようとしてもMASMのバージョンが違うのかエラーが出てobjファイルが作成できませんでした。

    2024-04-27 23:46:42


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

  • 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

  • 488 名前: 山川機長 ID:lODI2NGJj

    実機互換モードでやったら普通にオープニング最後まで見れた(が、なぜかロケットパックその他が転送されてきた画面でフリーズするのでやっぱりなんか変)ので、試しに津軽でFREQ 4まで下げたら普通に起動しますね。そうか。ビジーウェイトでタイミング取ってる上に386のJNEは486のJNEよりも遅いから影響が大きいのか。486だと3クロックが、386だと7クロック。DEC ECXも386が2クロック、486が1クロックか。だから待ち時間は倍以上の差が出るのか。TOWNSの互換モードってそこまで再現できているのだろうか。CPUの所要クロックまでは変えられないんじゃないかという気がするんだけど。互換モードだとCPUとメモリ間の信号を読んで特定の命令には追加でウェイトをかけてたりするのだろうか?

    2024-04-01 22:24:52

  • 489 名前: BCC ID:3NzUxMTA3

    互換モードはキャッシュメモリの無効化とメモリ・VRAMウェイトの値を増加させるものかと思います。
    ロケットレンジャーは所有していないのでわかりませんが、津軽は現時点でFREQ 5で大体CPU演算・メモリ操作は初代機386DX 16MHz・メモリ3ウェイト相当とほぼ合っている(ベンチマークの結果やCPUの速度でスピードが変わるゲームの体感)ようなのですが、VRAMウェイト(初代機実機では6ウェイト)は反映されてない関係か実機より早く進行する(PSYCHIC DETECTIVE SERIES Vol.1「INVITATION」のデモなど)ものはありました。

    2024-04-01 23:11:49

  • 490 名前: WINDY ID:3ZjYyY2Q5

    CD-ROMに関しては後悔されている情報が少ないので動きから再現するのが実情だと思うのですが、赤本上ではパラメータレジスタは8段FIFO,ステータスレジスタは4段FIFOとなっていますね。
    SUBCPUCがステータスを通知する際に前のステータスが残っている場合の動作なので、より上の層での実装だと思うのですが・・・

    コマンドを連続発行して、ステータスが何個まで取れるかを実験コードを書いてテストするしか方法が無いのかも知れません。

    2024-04-02 09:20:12

  • 491 名前: aochan ID:lYWVhYjU0

    Wolfenstein3D試してみました。
    最初、PC-98版のファイルを使用したのですが起動してくれず、
    GOGで購入してダウンロードした物だと起動してくれました。

    USB接続のCDRドライブが壊れていたため、ICカードでの確認となり
    BCCさんが指定してくださっている起動FDでは無い事を予めご承知おきください。

    テスト環境は次の通りです。
    CONFIG.WL6を除く8つのWL6ファイルと2MB版、4MB版のEXPを4MBのSRAMカードに書き込み。
    TOSV2.1L20で起動FDを作成し、AUTOEXEC.BATからMSCDEXを削除、CONFIG.SYSにはTBIOSとICカードドライバ、SHELLのみ記述。

    マーティー → 2MB版で起動し、デモが動作しました。メニュー画面操作中やゲームプレーを開始して数秒で止まりがちです。
    20F RAM2MB → マーティーと同様でした。
    20F RAM6MB → メニュー画面操作中に止まらなくなりました。2MB版、4M版共に画面サイズ変更を繰り返したり、ゲームプレー開始から30秒後あたりで止まります。
    SN RAM4MB → 2MB版、4MB版共にゲームプレー開始から2~5分後あたりで止まります。ヌルヌル快適に動作しました。
    HC RAM40MB → SN同様。

    ICカードの使用を止めて、TOSV2.1L51をインストールしたHDDへゲームをコピーしました。
    HC RAM40MB → SN同様でした。

    2MBで止まるのはBCCさん指定の起動FDでは無いため、メモリ不足な気がします。
    MSCDEXを外せばメモリが足りるかなと気になり試しました。
    上位機種で止まる原因は分かりません。
    ファイルコピー中にデータが壊れたり、こちらのTOWNS本体の故障の可能性もあります。

    4MB以上の環境でゲームが止まるときは、止まる直前のグラフィックが面積1/4サイズで画面上部左右に赤、青、紫など原色に近い色で表示されます。

    マーティーでこのデモ画面を拝めたのは感動でした。ありがとうございます。

    2024-04-06 08:19:50

  • 492 名前: BCC ID:kMTI4Njhm

    >aochanさん
    停止する際はキーボードで操作していましたか?
    デモは再生できて実操作だと停止する、CPU速度の早い上位機種だと数分は問題ない後状態は、キーボード操作時にフリーズする現象と一緒のようなので。
    津軽側が問題かキーボード入力を割り込みで判定している実装の問題かわからず未修正、マーティー実機もキーボードが無かったので未確認でしたが、割り込みじゃなくてバッファ使った実装にしてみます。

    2024-04-06 09:15:56

  • 493 名前: aochan ID:lYWVhYjU0

    返信ありがとうございます。
    停止する際は何れもキーボード操作中です。
    矢印キーでメニュー画面のカーソルを操作している時や、
    ゲームプレー中に矢印キーで移動や回転をしている最中ですね。
    キーボードから指を離している場面では停止しなかったと思います。

    2024-04-06 10:56:57

  • 494 名前: aochan ID:zZmEyNWI4

    Wolfenstein3Dをパッド操作で行ったところ、投稿番号491のマーティーでも全く止まることなくプレー出来ました。

    2024-04-08 21:29:10

  • 495 名前: 山川機長 ID:3YThmNjhl

    津軽のキーボードの実装は、BIOSを見ながらBIOSが期待するような値を返すように書いて行ったので、きわどいところでは実機と動作が違うかもしれません。(ときどきTranslation ModeでShiftキーを取りこぼすのもそのせいかも)

    なお、TOWNSとぜんぜん関係ないですが、皆既日食見てきました。http://ysflight.in.coocan.jp/aviation/logbook/j2024.html

    2024-04-10 14:02:11

  • 496 名前: BCC ID:kYmRjYzU2

    津軽でも実機でも同条件でフリーズするので違いはないと思います。
    割り込みやめてバッファでやればいいんですけど、こっちの方がプログラムはスッキリしているし移植元のWOLF4GWが同じキーボード割り込み使ってるんでそのままにしておきたい、フリーズする原因がわからないのもなんか腑に落ちず、どうせパッドさえ使えばとりあえず問題はない状況なんで、もうちょっとだけ割り込みのままできないかとはやってます。

    2024-04-10 19:28:21


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

  • 1 名前: WINDY ID:5YWNmNTg5

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

    2020-07-28 13:17:50

  • 373 名前: 新作発売記念で・・・。 ID:kZDI1NWFj

    お世話になります。

    とりあえず色々ド素人知識で試しましたが、音飛び、ゲームの動きが遅い等・・・、がVer.2022_03_30~Ver.2023_09_13で症状が出ます。
    TownsOS_V2.1_L51を再インストールし直し、CDプレイヤーでCDを聞いてみたら異常ありませんでした。

    2023-11-21 19:52:48

  • 374 名前: 新作発売記念で・・・。 ID:kMTE0YmRl

    m(__)m申し訳ございませんでした。

    直近でRevo Uninstallerというレジストリ(?)までクリーニングするアプリでアンイストールを多数したので
    これで余計なものまで削除してしまったかなと思い、システムの復元を11月13日までしてみたら、この素晴らしい
    アプリ「津軽」が復活しました。(windows11のシステムの復元は評判悪いのであまり使いたくなく最終手段でした。)

    音がおかしいのも動作が遅いのも治りました。これからはコントロールパネルからアンインストールしたいと思います。

    治そうと考えヒントがないかと、昨日から作者様のホームページとこのサイトの掲示板を読みインターネット等で調べ一つ
    わかった事がございます。作者様が中心になって皆さんの力で作成しているエミュレーターなんだという事を!

    本当にありがとうございますm(__)m ご迷惑をおかけしました。m(__)m

    これからも宜しくお願い致しますm(__)m

    2023-11-22 15:23:17

  • 375 名前: 山川機長 ID:kOWVkNDZi

    直って良かったです!

    なお、リリース出しました。前回のリリースと比べて音がブツブツ切れる現象は大幅に改善しているはずです。よかったらお試しください。

    2023-11-26 03:53:54

  • 376 名前: aochan ID:lZTIwOWFh

    リリースありがとうございます。
    私の所ではどうだろうとプリンセスメーカー2で確認したところ、
    2023_11_24版では特に問題ありませんでした。

    一つ前の2023_09_13版では、ずっとプツプツプツ・・・とほぼ一定周期のノイズ音が鳴りまして、
    CPUクロックを下げるとプツプツの間隔が長くなり、上げると間隔が短くなり、66HMzまで上げると連打音みたいになります。
    CPUは第3世代のCOREi3です。

    2023-11-26 20:38:20

  • 377 名前: 新作発売記念で・・・。 ID:iZDAxZWRm

    山川機長様

    ありがとうございますm(__)m。ご迷惑をお掛け致しました。お騒がせしてすみませんでした。
    新リリースありがとうございます!

    ソフトはまだまだありますのでこれからもご報告させていただきます。

    2023-12-01 14:06:51

  • 378 名前: 山川機長 ID:xNzQwM2U3

    Rocket Rangerのセリフがなぜ正しく再生されないのか解明できたので、いつかクリアしたいと思っていたRocket Rangerを今ならステートセーブの力でクリアできるだろう、と、思ったら、

    第二章に入って、博士とジェーンを救出に向かって捕まったところのムービーが途中で終わってしまって、無視して進めると第三章に進むことができるのですが、次のイベントムービーが捕まったところのムービーをまた再生してしまって、感じとしてこのまま進めてもクリアできなさそうな状況になってしまったのですが、誰か実機でクリアした人います?

    一応念のためメモリ16MB積んでるとおかしくなる可能性を考えて、2MBで再開して、今度は原因を究明すべく解析しながら進めてますが、実機で果たして捕まったとこのムービーは正しく再生されるのか、次のムービーに進むことができるのか、あるいは486だと動かないとか何か情報ありますかね? 実機でやったときは離陸があまりにも難しくてアメリカに戻るたびに2か月ずつ浪費してほとんど先に進めなかったもんで。(当時、ものすごく期待して買ったのに、あまりの難しさにものすごくがっかりした記憶がある。)

    Amiga版のプレイ動画(https://www.youtube.com/watch?v=m75x4iNhTB0) を見ると、TOWNS版はストーリーが微妙に違ってAmiga版には無いシーンが追加されてるようですね。止まってるのはこの追加されたムービーシーンのようです。

    2024-04-04 01:24:15

  • 379 名前: WINDY ID:xMDc5Y2Rj

    >378 山川機長さん

    Rocket Rangerですが、過去に実機でクリアしました。
    その当時特に困った状況になった覚えも有りませんので何事も無くクリアできたことは事実です。ただし、当時は恐らくmodel2でしたがMXやHCでクリアした覚えは無いので、486だとどうかは不明です。

    時代背景が好きなので何度もクリアしましたが、今度HCや津軽でやってみます。

    このゲーム、今居る場所から行きたい都市までの燃料計算に付属の計算尺(と言うほどの物でも無い)が必要なので、ある意味物理的なコピープロテクトが有るのが特徴ですね。
    ゲーム自体はミニゲームの集まりなのですが、仰る通り離陸がネックで、私も慣れるまでは何度もずっこけた記憶があります。

    2024-04-04 09:14:39

  • 380 名前: 山川機長 ID:4OTg5MWZi

    すごい!ロケットレンジャーを実機でクリアできる人がいたとは!これ、離陸さえできればあとはなんとかできそうな気がするのですが。Fort Dixからの離陸がどうしてもうまくいかないんですよ。というかステートセーブできるんだから練習したらうまくなるだろうか。

    しかし、これ、多分バグですね。捕まって尋問されるシーンで正しい受け答えをしないとCL=0でルーチンを抜けてしまうのですが、そうすると何の説明も無くスカンジナビア半島から再開してしまうのですが、正しい受け答え、

    彼女に手を触れるな→やめてくれ、話す!→縄を解いてくれ、そうしたら話す

    これを選ぶと、イベント続行になりました。

    解析したらCL=0以外の場合続行することがわかって、ひょっとしてCL!=0で出てくるパターンがあるかと思って調べたらあっさり見つかりました。正しい受け答え以外出荷前に誰もテストしなかったというパターンだろうか。この部分、CL=0で出てくるののは誤りなのでパッチ当ててデバッグしようと思ったらデバッグできるから、大航海時代みたいに津軽のapplication specific augmentationでバグ取ってやろうかな。

    2024-04-04 10:13:43

  • 381 名前: 山川機長 ID:4OTg5MWZi

    ロケットレンジャー (ステートセーブしまくりで) クリア確認できました!

    なお、問題のイベントシーンは放置してもその後ロケット部品をすべて集めれば普通に先に進んだかもしれません。ステート保存してあるのでいろいろやってみます。多分、選択を間違うと本当はゲームオーバーに移行するはずが、バグって間違ったステートに移行してしまったのではないかと見ています。

    2024-04-04 21:14:06


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

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

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

    2020-09-24 09:40:33

  • 97 名前: WINDY ID:mZWZiODZh

    >aochanさん
    >山川機長さん

    ATも98もPICはエッジトリガなんですが、TOWNS(FM-Rも?)はレベルトリガなんです。
    PCIはレベルトリガなので後にATはICWの設定は無効にして別にピンごとにトリガ種別を設定するためのレジスタが新設されたようです。(98もPCIが有ったので同様かと思われます)

    上に書いたようにINTELのデータシートではIRRは割込を受け付けた時にクリアされ、それと同時にISRがセットされるのですが少々疑問なのがIRRはその名の通りリクエストレジスタなのでこの時点でクリアされてしまうとレベルトリガの場合はCPUから割込禁止を行っても次の瞬間にはINTがHiの場合は再度IRRにbitがセットされて連続で割込がかかってしまうのでは? と思うところです。
    PITのモード3だとOUTがカウント設定値の1/2幅でONするのでOUTが出てPICが割込を受け付けた次の瞬間はまだOUT(=INT)がONでは無いのではと思いますが、如何でしょう?

    2024-03-22 09:29:04

  • 98 名前: 山川機長 ID:2NDUxZTE3

    > PITのモード3だとOUTがカウント設定値の1/2幅でONするのでOUTが出てPICが割込を受け付けた次の瞬間はまだOUT(=INT)がONでは無いのではと思いますが、如何でしょう?
    そうですね。実機の観測から考えるとPITのチャンネルゼロのOUTのRising EdgeでTM0OUTが立って、多分この値がI/O 60Hのbit0に出て、そこから実際割り込みがかかるまでにちょっとのラグがあるのはほぼ確定ですね。ラグがどのぐらいなのか計測する方法が無いか考えてるのですが。しかし、Windows 95まで走るようになってからもなお顕在化する実機との差異があるとは。というか、ポーリングでタイミング取るなら普通IFクリアしますよね。多分想像なんですが、このドライバ書いた人がIFクリアするの忘れたけどなぜか動いてしまってそのままになったというところではないでしょうか。

    なお、一念発起してFPU命令大半を網羅するテスト書いて実機でサンプル取って比較したら一発で津軽と実機と結果が一致したので、結構FPUも再現性上がってきましたね。386ASMで直接FPU命令を書いたので、今まで遭遇してなくて対応してなかった命令もかなり対応しました。

    うーん、Linux動かそうと思ったらハードウェアタスクスイッチングか。。。。モチベーションがあるような無いような。何より需要がない。

    2024-03-22 11:30:39

  • 99 名前: WINDY ID:mZWZiODZh

    >98 山川機長さん

    仰っている"IF"と言うのは、CPUのFLAGSのIFですよね。
    ISRの作りにもよるとは思いますが、割込管理BIOSではIFのクリアはユーザーが行う必要が無いようです。(赤本P553)

    Linuxについては今現在もメンテが行われているようですので"意義"は有りそうです。(http://www.nurs.or.jp/~kurati/)
    が・・・・ ハードウェアタスクスイッチングの実装難易度次第でしょうけど"Win95が落ち着いた時にモチベーションが下がってなければ"みたいな感じでしょうか?
    ソフトウェアに関しては何もお手伝いできない技量な物がこんなことを言うのもなんですが。

    386ASMでFPU命令をゴリゴリと書いたと言うことは・・・・ Blue Impulse SDKのバージョンアップかな? って(冗談)

    2024-03-22 12:21:57

  • 100 名前: aochan ID:lOWM1Nzky

    UPD8259Aの資料を見ていて解釈に迷う所もありましたので、そのまま転載しますね。
    -------------
    レベル・トリガ・モード
     このモードはICW1のビット3を用いてプログラムできます。LTM=1ならば、割込み要求はIR入力への
    ハイ・レベルによって認められ、エッジは必要ありません。この割込み要求はEOIコマンドが発せられる前ま
    たはCPUが2番目の割込みが起こるのを防ぐため割込みをイネーブルにする前に取除かねばなりません。
    -------------

    0x60Hは8253~8259の間にあって、IRET前にTM0OUTを0にする事でタイマ0のH出力をブロックする役割があるのかな。

    そうなると、8253のカウントが完了してOUTピンがH出力にり、その後TM0OUTに1がセットされ、
    次に8259のIR0ピンがHになり、最後に8259がCPUに対して割込み要求をしそうですから、
    TM0OUTが1になる~CPUへ割込み要求が来る間にもラグが発生する余地があるかもしれませんね。

    2024-03-23 05:17:48

  • 101 名前: 山川機長 ID:zYTcyYWNk

    JMPFによるタスクスイッチングだけサポートしたらLinux起動しちゃった。。。。

    2024-03-23 10:26:09

  • 102 名前: aochan ID:lOWM1Nzky

    おー、起動しましたか。お疲れ様です。
    大変良い勉強になりました。

    2024-03-23 14:09:53

  • 103 名前: WINDY ID:yNTAzZDli

    Linux、動いちゃいましたか。 喜ばしいですね。

    PITとPICなんですが、I/Oの0060H(割込制御レジスタ/割込要因レジスタ)にマスクビットやTM0CLRビットが存在しており各割込の許可やTM0要因のクリア,現在の状況を読み取れる等の機能やbitの割り振りやそもそも割込とは関係の無いSOUND出力制御bitが有るので外部回路が挟まっていると思います。

    外部回路が入っているとするとPIC自体はレベルエッジなんですが、PIT出力の立ち上がりエッジを捉えて決まった幅のON信号として出力してPICに渡すことも可能ですのでTOWNSのタイマー回りの回路がそのようになっている可能性も有ると思います。
    初代だと単独で8259相当が載ってるのかなぁ 載ってたら追えば判るような気がします。

    2024-03-27 14:26:10

  • 104 名前: WINDY ID:mZTU5NjY4

    PICの件ですが、↓このサイトの情報ではIRRはEOI後にクリアされて新しい割込が許可されると有ります。
    http://www.brokenthorn.com/Resources/OSDevPic.html

    データシートが間違えていることはよく有ることですが、本当の所は実機の動作とコードから見る限り上記のサイトの内容が正しいのかも知れません。
    もう少し調べてみます。

    2024-03-28 09:53:34

  • 105 名前: WINDY ID:mZTU5NjY4

    と、思ったらIn-Sevice Register(IRR)とか書いてあった。タイプミスですね。(括弧付きの方しか見てなかった)
    どちらにしてもレベルトリガでPITのOUTが直接PICに繋がっていると割込ルーチン内でEOIすると同じ割込が入ってしまう事には違いがないか・・・・
    やっぱり外部回路が存在するような気がします。

    PICをレベルトリガにする理由は、拡張ボード等でINTラインを共有する事が目的でしょうからタイマーなどの一部のデバイスはその目的のために外部回路を入れている可能性は有ると思います。
    (PICのトリガをピン毎に設定できれば全て解決するのですが、8259は全ピン共通設定ですのでどちらが重要かを考えた結果なのかも知れません)

    2024-03-28 10:07:44


全部読む/ 最新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

  • 319 名前: 山川機長 ID:0MWQ0YTE2

    おおなるほど!ICMWRITEを386SXに対応させるの忘れてました。ついでに、L51だと書き込みに成功してもエラーと出てしまう問題も原因を調べたところ、デバイスID 0x50がL51だと使えないんですね。0x4Aも試したのですが、これもだめで、仕方ないので0x50と0x4Aを試してデバイスIDエラーが返ってきたときは、直接メモリを比較して書き込み成功したか失敗したか判定するようにしました。新しいICMWRITE.EXPはGithubにPUSHしましたのでよかったらお試しください。

    2024-03-11 12:08:02

  • 320 名前: aochan ID:2Yjg3YTJh

    ありがとうございます。
    マーティーで試したところ、ICカードへの書き込みに成功しました。
    エラーメッセージも出ませんでした。
    ですがICカードからの起動につきましては、マーティーのロゴが表示された直後に一瞬だけ(0.05秒くらい?)IC MEMORY CARD BOOTの文字が表示されて、画面が真っ暗な状態になります。
    SNの場合はBOOTメニューが表示されます。

    0x4AがICカードの機種があったのですね。
    今まで書き込みはL20で行っていました。

    2024-03-13 07:05:35

  • 321 名前: 山川機長 ID:0OTc4Mjli

    なるほど!考えられる原因としては、(1) MartyはSCSIを積んでないのでSCSIデバイスのリストを取るところで止まっている、または (2)TOWNS OSは使わないCRTC設定で31KHzモードに切り替えているのでMartyのCRTCが認識しない、のどちらかではないかと思います。(1)は一応タイムアウトしたら戻ってくるように書いたつもりなのですが、なにか間違っててそうなってない可能性もありますね。(2)については、これはなんとも言えないですね。

    一応、さきほど新しいバージョンのIPLをPUSHしました。このバージョンでは、SCSIのリスティングでとりあえずまずメッセージを表示してからチェックするようにしたので、果たしてSCSIのリスティングで止まっているのか、CRTCで止まっているのかわかると思います。よかったらお試しください。

    2024-03-13 22:34:29

  • 322 名前: aochan ID:mMDRkMjgw

    ありがとうございます。
    マーティーで試したところ、
    SCSI: H TYPE: H
    と表示されました。

    UGの方は電源が壊れており確認できそうにありませんでした。
    ATX電源を接続出来ないか探ってみようと思います。
    しかし私にはUGは重すぎでした。何Kgあるんだろう。
    HRやMAの横置きプラスチック筐体の方が軽くて扱いやすいですね。

    2024-03-15 07:03:12

  • 323 名前: 山川機長 ID:yZmRhYTZk

    ご確認ありがとうございます!やっぱりSCSIのチェックで止まってるようですね。コードを見直したところ、Ready-Waitの後のタイムアウトをチェックしてなかったので、多分そのままコマンドを出して結果をいつまでも待っていたのではないかと思います。そのチェックを追加したものをアップロードしたので、よかったらお試しください。ただ、Martyだとメニューが出るだけで何か有用なことができるかというと何もできないと思います。Martyってシリアルポートは持ってましたか? そうであればせめてシリアル経由のROMの吸出し機能ぐらいは対応できるかもしれません。

    2024-03-18 06:33:43

  • 324 名前: aochan ID:xMDNkZTA5

    お疲れ様でございます。
    SCSI CD DRIVE NOT FOUND
    のメッセージが表示され、30秒程待つといつものメニューが表示されました。

    マーティーはシリアルポート非搭載ですね。
    アーバンの増設シリアルがあれば・・・と言うところでしょうか。
    私はCMOSの保存に使おうと思います。
    メモリが2MBですとHIMEM.SYSのためにメモリを予約すると、起動しなくなるソフトがあったと思いますのでその切り替え用ですね。

    それとBootMenuからFDを選んでFDから起動すると、MS-DOS6.2は起動しましたがTOSV2.1L20は起動してくれませんでした。

    2024-03-19 05:43:52

  • 325 名前: 山川機長 ID:jYWY2ZWU2

    おお、Martyでもメニューまで進むようになったんですね!ご確認ありがとうございます!

    ちなみに、メニューの右上のMACHINE IDのところですが、4A03になってますかね? MartyのMachine IDはTBIOSの解析からどうやら4AHらしいと推測した(と、当時のソースのコメントに書いてあった)のですが、本当にそのIDになってるだろうかと気になってます。

    2024-03-22 11:46:05

  • 326 名前: aochan ID:mNjE5ZGUz

    白MartyとCAR Marty(MVP-1)、どちらも4A03でした。

    2024-03-23 14:07:09

  • 327 名前: 山川機長 ID:lZDgwNWJl

    了解しました!4Aで合ってるんですね!ありがとうございます!

    2024-03-23 23:45:58


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

  • 1 名前: WINDY ID:kY2JlZjhk

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

    2020-07-28 13:20:43

  • 74 名前: プー ID:iOWQ4ZDRm

    すみません。スレッドがここでいいのかわかりませんが。
    YSSCSICD.SYSを用いてTownsOS V2.1L51(on DOS6.2)をbootすることは成功したのですが、ここからHDDへのインストールでインストールするパッケージ選択後、コピーの段階で先に進まなくなってしまうようです。
    実機の電源を修理し、HDDを交換したのでOSのインストールをしようと思いましたがCD-ROMドライブが不調の状態でYSSCSICDであればSCSI CD-ROMからインストールできそうな雰囲気だったのですが、何か分かりますでしょうか。
    とりあえずはtsugaruでHDDイメージにインストールしたものを実HDDに書き込むことで代替しようと思っています。

    2023-09-13 22:46:13

  • 75 名前: aochan ID:wYjkxNDli

    少しお伺いしたいのですが、
    TownsOS V2.1L51(on DOS6.2)が既にHDDへインストールされていて、CONFIG.SYSにYSSCSICD.SYSを組み込んだ状態で起動し、
    何らかのソフトウェアをSCSI-CDドライブからそのHDDへインストールしたいと言うことですか?

    >コピーの段階で先に進まなくなってしまうようです。
    ファイルは1つもコピーされていなさそうですか?

    2023-09-16 10:11:23

  • 76 名前: プー ID:0OGFhMjVl

    HDD上のDOS6.2上にTownsOSをインストールするところで引っかかっています。
    HDDにDOS6.2のインストールは正常に終了し、\T_FILE\INST_EXTでTownsOS on DOS6起動用FDを作成し、config.sysでysscsicd.sysを
    追加しています。
    この状態でこのFDとSCSI CD-ROMからTownsOS on DOS6は起動出来ています。
    そこからHDインストールを起動し、パッケージ選択までは正常にできるのですが、その後のインストール作業(コピー)から進みません。
    ファイルがコピーされているかどうかは確認していません。

    2023-09-17 08:16:21

  • 77 名前: aochan ID:hOTUyZDNm

    私では何故上手くいかないか全然分からないやつでした。
    TOWNSスーパーブック記載の手順とほぼ同等ですし。

    インストール先は128MB以上2GB未満のEXT区画ですよね。
    HIMEM.SYSの起動には成功していますか?

    127MB以下のDOS6.2区画であれば、救済IPL経由で起動したTownsOSV2.1L51からのインストールは確認しているのですが。

    FD版救済IPLの作り方も紹介しますね。
    詳細はこちら。
    http://ysflight.in.coocan.jp/FM/towns/bootloader/j.html

    概要はこんな感じです。
    https://github.com/captainys/FM/tree/master/TOWNS/IPL/DISKIMG
    のFDIMAGE.BINまたはFDMINI.BINをダウンロードします。
    Windows上でこのダウンロードしたイメージファイルを、1.25MBフォーマットしたFDに書き込めるようでしたら書き込んでください。
    (エクスプローラーなどでのファイルコピーではありません)

    書けない場合は、TOWNS実機で書くために
    https://github.com/captainys/FM/tree/master/TOWNS/FDWRITE/EXE
    FDWRITE.EXPをダウンロードします。

    TOWNS実機でFDWRITE.EXPを使ってFDIMAGE.BINまたはFDMINI.BINを、1.25MBフォーマットしたFDに書き込みます。
    RUN386 -nocrt FDWRITE.EXP A: FDMINI.BIN


    救済FDが出来ましたら
    SCSI-CDドライブにTownsOSV2.1L51をセットし、救済IPLのFDを挿入した状態でリセットしてFDから起動、メニュー画面でSCSI-CDを選択すればSCSI-CDドライブからOSが起動します。
    OSでHDインストールを実行すればインストールできます。
    ただし、この場合は127MB以下の区画でなければなりません。

    2023-09-17 21:50:37

  • 78 名前: プー ID:0OGFhMjVl

    返信ありがとうございます。
    2047MBのDOS ext区画にインストールしたいと思っています。
    HDDのイメージにtsugaruでTOS on DOS6は出来たのでこれをHDDに書き戻し、とりあえずインストールは出来たのですが
    やはり実機で出来ないのが気持ちが悪い、それだけです。
    救済IPLも興味があったのでまた今度やってみます。(TOWNS本体は実家にあるのですぐにはできませんが)

    2023-09-17 22:03:27

  • 79 名前: 山川機長 ID:xMjE2NDhk

    おおなるほど。というと、実機でDOS6上にTowns OS V2.1 L51をYSSCSICD.SYSを使ってインストールしようとしたときにクラッシュしたという感じでしょうか?一応、津軽上でDOS6+EMM386環境でYSSCSICD.SYSが動作することは確認した(と思った)のですが、そういえば、最近High-Fidelity Modeがあるので試してみますね。案外何か見つかるかもしれません。

    2023-09-18 09:32:18

  • 80 名前: プー ID:5MzcwNGZi

    理解いただきありがとうございます。
    クラッシュはしておりません。エラーのダイアログが出てリトライを押しても実行できず、中断しかできない状況です。
    HDDイメージからHDDに書き戻したもので正常に起動できることは確認しましたので現状不都合としてはありません。
    もし何かのヒントになれば幸いです。

    2023-09-19 21:57:13

  • 81 名前: 山川機長 ID:hODA0OTZk

    あ、そうか。YSSCSICD.SYSを入れたフロッピーディスクを使ってCDのTowns OS V2.1 L51を起動してたんですね。だとすると、救済IPLから起動するとうまくいくかもしれません。救済IPLも中でYSSCSICD.SYSを使っているのですが、FDのCONFIG.SYSにYSSCSICD.SYSを書く使い方だと、FDで途中まで起動してからやっぱりシステムドライブはQでした、とTownsOSに思い込ませるようにしていますが、ひょっとするとそれが完全では無いのかもしれません。ですが、救済IPLからの起動だと、もっとかなり初期の段階から起動ドライブをQと思わせて、しかし実はSCSIを見に行ってるというような起動プロセスになるので、(FDで途中まで起動していない分)、完全にコピー元のTownsOSがQドライブと思ってくれるかもしれません。

    なお、救済IPLは、CD-Rから直接起動するオプションもあるので、フロッピーディスクが無くても使えます。aochanさんが上で書いていただいたFD用IMAGEと同じgithubのディレクトリからCDIMAGE.ISOをダウンロードして、CD-Rに焼くと使えます。例えば、SCSI CDドライブのID 3にしたとして、救済IPL CD-Rをドライブに入れて、キーボードの H と 3 キーを同時押ししながら起動すると救済IPLのメニューになるので、そこでSCSI CDドライブを選ぶと、CDを入れ替えるように言ってくるはずなので、Towns OS V2.1 L51のCDを入れると起動できると思います。よかったらお試しください。

    ただ、この手は20F以前だと使えないはずですね。というのもMOが出てきたあたりからシステムROMはデバイスを区別せずにとりあえずSCSIドライブの先頭セクタを読み込んでジャンプしてみるような仕様になったのですが、初期のモデルではわざわざデバイスの種類をチェックしてハードディスクドライブであるということを確認しないとIPLセクタを読み込まないようになってます。ということは、救済IPLのMO版というのを作るとハードディスクモードに設定したMOからの起動が可能になるはずですが、そこまでせんでもいいかと思ってやってないですが。

    しかし、MOドライブが割と安く買えるようになってから、これはバックアップの革命か?と思ったもんでしたが、頻繁に使ってたらドライブがすぐ壊れるという現象に直面して僕は使うのをやめてしまった記憶がありました。高いやつだと長持ちしたのかどうか。3台ぐらい買って結局どれも2~3か月しか持たなかったような気がしますね。当時住んでたアパートにエアコンが無かったから熱で自滅したのだろうか。

    2023-09-27 00:34:27

  • 82 名前: WINDY ID:xYWU5YzA0

    読む限りでは、YSSCSICD.SYSを用いてCDで起動は出来ておりインストールまでは少なくともOSそとしてもCDをYSSCSICD.SYSを通じて内蔵ドライブとして認識はしているように感じます。
    クラッシュなどは起こしておらず、インストーラーのプロセスにおいてエラーとなりOSはダイアログを表示している事からアクセスに失敗しているような感じですね。

    何を以てエラーと判断しているかが判りませんが単純なファイルコピーだと思うので、シーク時間か応答タイミングなのかDMA関連で連続読み出し時にエラーが起こっているのかもしれません。

    通常、TownsOSのインストール時はインストール先やパッケージ(機能)の選択後に実際のコピーが行われ進行状況を表示しますがこの心境状況のバー表示が全く進まない程のタイミングで
    エラーとなるのでしょうか? それともある程度進行した後でエラーとなるのでしょうか? > プーさん

    何か些細な事でも手がかりになるとやりやすいと思いますので、細かく教えていただければと思います。

    2023-09-29 10:23:49


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

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

    現在Windows 3.1の起動までこぎつけられないかと思ってCPUコアをいじってるのですが、まずLARインストラクションで詰まってたのでそれは単にLARを実装して突破したのですが、INT 91Hで詰まってます。

    どうやら、Windows 3.1は、リアルモードのバイナリのうち処理を奪う必要がある個所に 63H (ARPL)を書き込んで、Virtual 86モードでINT 6を出させて処理をいったんカーネル側に移して、その後、IP+1から処理を再開、としているようです。最初ARPLを見たときは何かの間違いではないかと思ったのですが、最初のうちそのままで順調に進んでいるようだったので、どうやらARPLを書き込むこと自体は正しいようです。ARPLが書き込まれる場所の多くは、書き込み前は90H (NOP)になっているのも多分この書き換えが意図的なものであると考えて問題なさそうです。

    INT 6ハンドラは、0048:00000102ですが、どうも169Cセグメント(DOS?)内でARPLが起きることを想定しているようで、INT 6を受けて、Exceptionが起きたインストラクションが63Hであった場合、Exception発生個所+2バイトに飛び、その場でリアルモードへの切り替えが起こるように書いてあるようです。0048セグメントはひょっとするとEMM386かも。

    しかし、あるタイミングでIDTが書き換わって、INT 6をハンドルするのが0028:80006E5Cに変わり、再度0048:00000102に変わった後で、INT 91Hのハンドラの入り口(07F9:000023F4)のARPLでINT 6が出た後、00B8セグメントのあらぬ場所にジャンプしてクラッシュしてます。INT 91Hのハンドラは先頭にARPLが書かれているのですが、+2バイトではリアルモードに切り替わるように書かれていない上に、00B8セグメントのベースは169C0Hを指したままなので、違うセグメントの無意味なアドレスにジャンプということになってます。

    MSDOS.SYS以外のINTのARPLは0028:80006E5Cだとうまくさばけるようなので、IDTが書き換わるべきではないのか、INT 91Hは別の処理の仕方であるべきなのか、そもそももっと前の時点で何かがこわれててINT 91Hが出るべきではないのか、なかなか難しいですね。どうもこの INT 91H (コンソールBIOS) はコンソールに1BHを書き込もうとしてるようなので、すでにコンソールは表示されていないことを考えると実はINT 91Hが出ていること自体が間違ってるのか。

    なお、Core i9のPCを買いました。最近シングルコア性能は世代が変わってもほとんど変わらんと思っていたのですが、案外変わってたんですね。多分486SXの66MHz近いスピードが出てるようでStrike Commanderが快適になりました。ただ、nVidiaのGPUだったので、OpenGLのVSYNC待ち(なぜかnVidiaはデフォルトでオンにしている)をオフにしないと待ちが入ってスピードが落ちるという問題がありました。

    2021-01-21 00:40:27

  • 28 名前: WINDY ID:2MGY5NGY4

    >27 山川機長さん

    Windows3.1の互換性については基本的にはDOS時代からあまり変わらずで、「動けばラッキー」程度だったと思います。
    要はアプリ内でWin16APIだけを使っておれば動くけど、それ以外のI/Oアクセスなどを独自に行っていればフリーズする可能性が有るのだと思います。
    (DOS時代もDOSのAPIだけで組めばATでも98でもTOWNSでも動くのと基本的には同じではないでしょうか?)
    たしか、後の時代(Windows95?)にINTの何番かを無効にするツールが有ったような気がするのですが、見つけられません。

    2023-04-19 09:44:18

  • 29 名前: 山川機長 ID:hN2NlOWM3

    その後、Visual C++をEドライブにインストールして、DドライブのWindowsをそっくりもとに戻して、E:\MSVC\BIN\MSVCVARS.BAT で環境変数を設定したら、普通にDOS窓からVisual C++が使えるようになりました。TGDRVで共有したドライブのソースをコンパイルできるので、いろいろ実験できそうです。未実装のFPU命令を使ってくれたら動作確認になると思ったのですが、少し試した範囲では使ってませんでした。

    ここ数日、Windows 3.1 L10が起動しないという報告があったので、追跡sいていたのですが、なんと、Windows 3.1 L10のSCSIドライバが、DMAのアドレスの最上位バイトに書き込まないため、32MB搭載していると、Windowsがファイルを16MBより上の領域に読み込もうとしたときに正しい場所に読めないという原因でした。L11とL12では解消しているようでした。Windows 3.1がL10だった当時だと16MBは贅沢で、32MBなんてありえない容量だったんでしょうね。

    2023-04-21 01:46:53

  • 30 名前: BCC ID:jMjQ0MGZl

    Windows 3.1 L11にUpdate 2(おそらくL12相当となる修正パッチ)を適用してテストしているのですが、WinGを使うゲームで起動時に行われるWinGのベンチマークプログラムを実行中にフリーズしてしまうようです。次回起動時にベンチマークが完走しなかった旨のエラーメッセージが表示されるので無視すればゲーム自体は問題なく動きます。
    フリーズ時の状況
    VM Aborted!
    Device:486DX
    Reason:Clocks-Passed is not set.
    Towns TIME (Nano-Seconds): 1169731320080
    CS:EIP=1CFF:000004FA LINEAR:80D5023A EFLAGS=00000202 CPL=03
    EAX=00000001 EBX=00000000 ECX=00000028 EDX=8000EBF8
    ESI=000B8E62 EDI=80000000 EBP=00000004 ESP=0000103E
    CS=1CFF(LIN:80D4FD40) DS=30E7(LIN:00000000) ES=0997(LIN:80DB4000)
    FS=0000(LIN:0004AEE0) GS=2FD7(LIN:80D95EE0) SS=0997(LIN:80DB4000)
    CR0=8000002B CR1=00000000 CR2=000C7847 CR3=0034E000
    CF0 PF0 AF0 ZF0 SF0 TF0 IF1 DF0 OF0 IOPL00 NT0 RF0 VM0 AC0
    Default Operand Size=32 Default Address Size=32 Stack Address Size=16
    SS+00000000:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    SS+00000010:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    1CFF:000004FA 0FCA

    実機TOWNSでWindowsは使っていなかったのでTOWNSにおけるWinGの対応状況はわからないのですが、TOWNS版Windows 3.1特有の問題かエミュレータ側の問題かどちらでしょうか。

    2023-04-21 19:10:56

  • 31 名前: 山川機長 ID:kNDVmMzJi

    早速テストしていただきありがとうございます!ゲーム自体は動くんですね!デバッガオンにした状態で実行して何か言いますかね?これまでのエラーのうち、ほとんどの場合がCPUインストラクション実行中に例外が発生したとき、CPUステートを元に戻さないまま例外をハンドルしてしまって何かが起きていたので、デバッガを有効にすると、その条件にヒットしていないかテストするようにしました。

    他にWinG使ったゲームでフリーでダウンロードできるようなのありますかね?手元にぷよぷよ for Windows (ぷよぷよ通もあるけどこれは95以降のはず) があるので試してみようと思ってますが。

    ちなみに僕もTOWNSが現役だったころはWindowsを走らせなかったので、実機がどうなのかよくわかりません。というか実機あるんだから環境作ればいいんですが。

    2023-04-22 04:31:05

  • 32 名前: 山川機長 ID:5NDUwZDk1

    状況、ぷよぷよ for Windowsで確認できました!これ、BSWAP命令ですね。ここまでやってきて一度も使われたことのない命令で、実装してませんでした。実装してみます。

    2023-04-22 07:00:15

  • 33 名前: 山川機長 ID:5NDUwZDk1

    BSWAPサポート追加したソースPUSHしました。うちの環境ではぷよぷよ for Windowsが動作するようになりました。が、なんかキー操作がへんてこでちょっと操作に苦戦しましたが。

    2023-04-22 08:49:45

  • 34 名前: aochan ID:iYThhOWQ5

    > 27  山川機長さん

    Visual C++1.0はAT互換機、PC-98、FMR/TOWNS用でそれぞれ別パッケージで存在するのを見た事があります。
    機種別に発売されたWin3.1用ゲームは見た事が無いですが、存在するのかは私も気になります。
    私の方は機種依存の無さそうな画集ばかり購入していましたので、互換性の問題とは無縁でした。
    WinGが登場して、少し動きのあるソフトも登場しだしたのでしたっけ。

    Windows3.1L11のCD内にINT10NOP.COMなるINT10を無効にしてくれるファイルが入っていますので、
    Windows3.1対応としながらAT互換機でしか動作しない物も一定数はあったのかなと推測したりします。

    Windows95になりますが、DOOMIIの95版パッケージにはPC-98用とAT互換機用でCDが2枚入っていました。

    2023-04-22 22:29:26

  • 35 名前: 山川機長 ID:2ZDM3Yzhl

    Aochanさん、

    MYST日本語版はWindows 3.1用ですが、PC98、FMTOWNS対応って明記してあったので、逆にそう書いてないと対応してなかったということなんでしょうね。MYSTを試したらマウスカーソルが動かなくなってしまって、何かと思ったらTOWNSのハードウェアマウスカーソルは白黒専用なのでカラーがついたらソフトウェアマウスカーソルに切り替えていた影響で、CRTCレジスタからマウスカーソル位置を取得できなくなってしまったというものでした。それで考えて、津軽のHOST-VMインターフェースコマンドにマウス位置の通知というのを追加して、Windows3.1上でバックグランドで動作してひたすらホストにGetCursorPosで取得したカーソル位置を通知し続けるプログラムを書いたところ、無事MYSTもプレイ可能になりました。githubの最新ソースで、winapp/TGMOUSEディレクトリにEXEが入ってて、すぐVMに送れるようにutil/TsugaruUtil.D77にも入ってます。

    2023-04-24 22:13:48

  • 36 名前: aochan ID:kMmNiMTgy

    ハードウェアマウスカーソルって何だろう?と思ってネット検索などしていましたが、これって赤本未掲載なのですね。
    PC-98のグラフィック(PEGC、EGC、GDC)にも無さそうで、GD543Xの資料でやっと同等と思われる機能を見つける事が出来ました。
    TOWNSハイレゾってWindowsでの高速化も意識されていたのかもしれませんね。
    MYSTを発売したインタープログ社は、その少し前にプリンスオブペルシャ2のTOWNS版、PC-98版を発売していましたので、それ故に両機種の対応表記が出来たのかも。

    2023-05-03 23:51:03


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

  • 1 名前: WINDY ID:jMTczMDEw

    掲示板のタイトルからは外れますが、兄弟エミュレータと言うことで。
    FM-7/77/AVエミュレータ Mutsu[陸奥]の情報交換用スレッドです。

    2022-08-31 16:57:32

  • 4 名前: BCC ID:0MWY0Yjg0

    >CSMモード、効果音モード
    ゲームではないですが、フリコレ10に収録されているEUP曲「かがやき」(F-OKESHI氏作曲)で聞こえていなかったパートが聞こえるようになったようです。対応ありがとうございます。

    2022-09-10 00:37:42

  • 5 名前: WINDY ID:3N2E4OTFk

    CSMモード,効果音モードの実装を有り難うございます。

    せっかくなのでシルフィードの第一中間デモまで、訳あってキーボードで行って参りました。
    CSMモードの発声に関しては"あと一息"といった感じで、全体的にノイズが入っているのか声の"明瞭さ"が低く聞き取りにくいと感じました。("そもそもCSMで明瞭なんて無いだろ"って声が飛んできそうですが、実機やXM7と比べてです)
    それ以外は、FMもPSG(SSG)も良い感じでした。 XM7と比べると双方で高音部で違いが感じられますが、大した違いではなくそれぞれの"味"と思える程度です。

    2022-09-14 11:11:23

  • 6 名前: 山川機長 ID:0NTk5MGNk

    そういえば、Alltynexの鳴ってないパートがあった件、ひょっとしたらCSMだったりするのではないかと思ったんですが、どうですかね?CSMモードだとKey On/Offをタイマーがコントロールするので、音が鳴らなかったかも。CSMとSSG_EGは陸奥で作ったやつを津軽にも持って来れたので、よかったですね。

    シルフィードの音声は、まだエンベロープの速さをスロットごとに計算しなおしてないので、それを直すとちょっと違うかもしれないですが、多分、津軽弁ライブラリは本物よりもサイン波がスムーズになってしまってると思います。あと、時間解像度も速いかもしれないので、なかなか他のOPNエミュレータに追いつくのは難しい鴨しれません。

    2022-09-15 03:43:47

  • 7 名前: 山川機長 ID:3N2Q5MjFi

    CSMモードですが、3ch用のF_NUMとBLOCKが3個余計にあるけど、そのうちのどれがどのスロットに対応してるのだ?というのが探してもわからなくて当てずっぽうだったのですが、FM Towns Technical Databookの212ページについに発見しました。間違いも多いけど、FM音源について他には載ってない情報がかなり載ってるので、この本は奇跡的です。それで、対応を直したところ、シルフィードの音声はかなり良くなったように思います。YMのコードはTOWNSEMUのレポジトリに入ってるので、そのソースをPULLして陸奥をビルドしていただけると確認できると思います。

    2022-09-15 11:20:24

  • 8 名前: WINDY ID:5OWNkNDMy

    >7 山川機長さん

    対応の方、有り難うございます。

    CSMモードですが、劇的に良くなったと思います。
    XM7比ですが、多少低音側が強くなっており声が野太い印象ですが随分と良くなったのは確かです。
    実機の記憶ではXM7の音に近く、解りやすいのはゲームアーツのロゴの部分でもう少し子供の声に近いような高い声が正しいような気がします。

    また、Alltynexの方は正直、違いが判らない状態です。

    2022-09-15 16:49:20

  • 9 名前: 山川機長 ID:zMDlmODZl

    そうですねえ、CSMの理屈を勉強した、というか教えてもらったんですが、フーリエ変換してDominant Termsを上から4個を拾ってきてるわけですね。で、声は聞こえるけど低く聞こえる、ということは低周波成分のボリュームが大きいのかな。しかし、FM音源には、高い音のエンベロープの変化を速くするという機能があるものの、現在まだ津軽弁はCSMモードではスロットごとに対応してないんですよね。これをスロットごとにすると、直観的にはかえって低周波成分の減衰が遅くなってもっと低くなるような気がするのですが、とか言ってる間にやってみりゃいいんですよね。今日の晩はボウリングの試合があるので、明日ミーティング中にやってみます、と、思ったら明日から普通に会議室で集合になってしまった。週末はフライトが入ってるし、案外時間ないなあ。とりあえず時間できたらやってみます!

    2022-09-16 00:06:44

  • 10 名前: 山川機長 ID:3MjM4M2Q5

    うーむ、スロット事にエンベロープのスピード変えてみたけど(時間が無いんじゃなかったのか)変わらんですね。実機やXM7のPresented by Game Artsを聞くと、抑揚がついてますね。ひょっとしてMULTIをいじってるのかと思ったけどそのようでもないし。はて、何が違うんだろう。

    2022-09-16 05:47:02

  • 11 名前: 山川機長 ID:4YjI0ZGMz

    さんざん調べた結果、結論は、Wave生成の時間解像度が足りないということがわかりました。2msにしてたのを1msにしたらかなり改善しましたが、まだ実機と違うので、500usまでトライしてみます。謎なのが、以前1msにしたら最後のWave生成からWaveをデバイスに送るまでの時間があまりにも小さかった影響で(多分)再生が間に合わないという現象が起きてたと思ったのですが、起こらなくなってました。

    津軽の方はCSMを使ってるソフトがまだ確認できてないので、引き続き2msで行こうと思ってますが、、、、あそうか。津軽だと486のエミュレーションが厳しくて間に合わんかったのか。77AVだと余裕があるから500usまで下げても大丈夫な気がしてきた。

    今日は時間切れになってしまったんですが、明日やってみます!一応、今のソースPUSHしたので、改善を確認していただけるかと思います。

    2022-09-18 12:59:38

  • 12 名前: 山川機長 ID:kNWVlMTg4

    さらに調べた結果、YM2612のタイマーエミュレーションが間違ってたということが判明しました。津軽でここまで使われてきてるのに、まだこの違いが残っていたとは。XM7のopn.cを参考にさせていただきました。これでシルフィードのPresented by Game Artsはほぼ実機と同等になったと思うのですが、どうでしょう?

    2022-09-20 13:34:33


全部読む/ 最新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 名前: 山川機長 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 名前: nabe@abk ID:yOTA2ZDA0

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

    2020-08-14 21:33:10

  • 39 名前: nabe@abk 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 名前: nabe@abk 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


管理者へ問い合わせ