スレッド分けました。内蔵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
救難IPL更新しました。IO.SYSを、IPLセクタのオフセット0020Hに書いてあるLBAから探すようにして(失敗したら従来通り最初の方をざっと探す)、Super Street Fighter 2もSCSI CDから起動できるようになりました。
それから、PADを読むときCOMをゼロにするようにしたので、これまで使えなかったパッドも使えると思います。 (https://github.com/captainys/FM/tree/master/TOWNS/IPL)
2023-11-06 06:58:20
ありがとうございます。
古いバージョンでSuper Street Fighter 2を試したところ、確かに起動しませんでした。
他の方のサイトで掲載されている外付けCDドライブからの起動可否表には、Super Street Fighter 2は動作可となっているのと、私もかつて外付けでプレーしましたのでノーマークでした。
ところで更新版へ書き換えた場合、保存されているCMOSデータは残ったままですか?
書き換え前に旧版からリストアして、書き換え後は電源を切らずにCMOSを再保存する作業が必須です?
電池を交換してもいずれ電池が切れるからと、交換もせずにCMOSリストアをあてにしてWindows95の環境を作っていまして。
ほんと運用が楽になりました。
2023-11-11 13:12:08
おおなるほど。一応、ICMWRITE.EXPはCMOSバックアップは保存するように書いたつもりで、手元のMXでは保存されてましたが、念のためたしかフリコレに入っていたような気がするCMOSバックアップツールなどを使って他にもバックアップを作った上で更新することをお勧めします。
Street Fighter 2は、従来版でもいったんTowns OSを起動して、その後SSF2.EXPをダブルクリックすれば起動できていたので、一応FRAMカードからの起動はできていたといえばできていた鴨しれません。
2023-11-12 12:37:38
おおー、誰かFRAMカード製作したやつをヤフオクに出してますね! https://page.auctions.yahoo.co.jp/jp/auction/t1114385731
Rescue IPLを「神ソフト」と評してくれているので、素直に喜んでます。(おだてられると木に上る)
2023-11-19 04:54:14
自分もヤフオクで発見して書き込もうと思ったら書き込み失敗で書きそびれていたのですが、発見なされたようですね。
救済IPLは当時実現されなかったことが可能になる神ソフトですから、
FRAMカードを持っていない実機勢もFDやCDで試して欲しいです。
SCSI-IDが5のドライブがTowns MENUに現れたときは嬉しかったなあ。
山川機長さんには本当に感謝しています!
2023-11-19 12:28:49
私も神ソフトであることに一票投じます!
初めて救済IPLを使用した時は衝撃を受けました。
救済IPLのフロッピーもしくはICカードを挿しているだけで、外付けCDドライブからゲームが起動するのですから。
今では起動用フロッピーの付いたCDゲームですら何の手を加えることもなく遊べますし。
手間いらずで快適だなぁと思いながら使わせてい頂いています。
OH!FM TOWNSが現役なら特集記事が組まれていそう。
それと、報告なのですが
バージョンアップ完了しました。
バックアップしていたCMOSも消えずに残っていましたし、Super Street Fighter2の動作も確認しました。
ありがとうございます!
2023-11-20 12:26:43
失礼、報告忘れてました。
自分もFRAMカードとSRAMカードのIPLを更新しました。
スパ2は持っていないのですが電池の心配がないFRAMカードは便利ですね。
2023-11-21 21:28:37
ヤフオク、まさかの4万円越えになってましたね。作った人、即決にしようかみたいに言ってましたが、それだけ需要があるんだったら普通にオークションにかけてもいいのではないかと僕は思いますが。むしろ、それだけ投資してもTOWNSをまだ稼働させ続けようとする人がいるのが嬉しい。
需要がありそうだから増産しようかな。前回無理やり0.7mm厚のPCBを0.4mm用コネクタにつなげたら、ケースに入らなくて失敗したから今度は値が張るけど0.4mm厚のPCBでやってみようかな。
2023-11-29 01:16:09
ヤフオク、4万円台は驚きです。Buyeeかもですが。
即決ありにしたら幾らか公平になるのかも知れませんけど、確かに即決なしがあったら見ものかも。
勿論、出品する方が決めることですけどw
2023-11-30 01:59:59
FMTownsのアプリケーションの動作報告用
2020-07-28 13:17:50
はじめまして。
ソフト「プリンセスメーカー2」なのですが、新作「プリンセスメーカー2 リジェネレーション」が発売になるので、プレイしたいと思い昔のバージョンVer.2020_10_21では問題なく動いてくれます。(作者様感謝です。) 久しぶりに最新バージョンVer.2023_09_13で起動してみたら名前入力画面から音が飛び(ぶ?)ます。設定等があるのでしょうか?教えて下さるとありがたいです。m(__)m。タウンズは亡き父が所有していたので私は詳しくないのですみません。
2023-11-20 20:41:26
>プリンセスメーカー2
自分が確認した限りではVer.2023_09_13でも、最新ソースからコンパイルしたものでも音飛びなどは発生しませんでした。
津軽以外にアプリを起動している場合は全て終了しておく、CPU Speed(FREQ)を16程度まで下げてみる等は試しましたか?
2023-11-20 21:25:51
おおなるほど!プリンセスメーカー2ってリメイクされるんですね!
すでにBCCさんがコメントされている通りですが、CPU速度を下げると音が飛びにくくなる傾向があります。それから、うちの環境ではDOSBoxを起動してると音が飛びやすくなるような傾向があるので、多分ほかにも相性の悪いソフトはあると思うので、他のプログラムをクローズしてみてください。津軽は速いCPUにべったり依存してしまっているもので。
また、最近オーディオの再生方法を大規模に変更したので、以前のバージョンと音が飛ぶ条件に変化はある鴨しれません。一応、以前に比べると飛びにくいはずなのですが、CPUコア数が少ないやつだとかえって飛びやすくなった可能性もあります。
2023-11-21 02:46:08
あ、そうか。オーディオ再生方法変更してからまだリリースしてなかったような気がしてきたから、ぼちぼちリリース作った方がいいのか。
2023-11-21 02:49:22
BCC ID:zNDIzYzZk様
山川機長 ID:3ODc2ZmE4様
とりあえず時間を見てアドバイス頂いたようにCPU Speedを16にして起動。再起動して他のアプリを一度も起動させていない状態で起動。
どちらもプリンセスメーカー2の音飛びとオープニングデモがカクカク起動。ドラゴンスレイヤー英雄伝説も音飛び。麻雀美少女伝リップル=音楽がずれる、ゲームが遅い。
(Ver.2023_09_13で動いていたソフト)
プリンセスメーカー2では以下の通りでございます。(同じ条件でも起動画面まで最新のものの方が遅い気がします。)
Ver.2022_01_17 OK
Ver.2022_09_24 NO
起動実験時間が空いたらまたやって報告いたします。
2023-11-21 13:02:37
お世話になります。
とりあえず色々ド素人知識で試しましたが、音飛び、ゲームの動きが遅い等・・・、がVer.2022_03_30~Ver.2023_09_13で症状が出ます。
TownsOS_V2.1_L51を再インストールし直し、CDプレイヤーでCDを聞いてみたら異常ありませんでした。
2023-11-21 19:52:48
m(__)m申し訳ございませんでした。
直近でRevo Uninstallerというレジストリ(?)までクリーニングするアプリでアンイストールを多数したので
これで余計なものまで削除してしまったかなと思い、システムの復元を11月13日までしてみたら、この素晴らしい
アプリ「津軽」が復活しました。(windows11のシステムの復元は評判悪いのであまり使いたくなく最終手段でした。)
音がおかしいのも動作が遅いのも治りました。これからはコントロールパネルからアンインストールしたいと思います。
治そうと考えヒントがないかと、昨日から作者様のホームページとこのサイトの掲示板を読みインターネット等で調べ一つ
わかった事がございます。作者様が中心になって皆さんの力で作成しているエミュレーターなんだという事を!
本当にありがとうございますm(__)m ご迷惑をおかけしました。m(__)m
これからも宜しくお願い致しますm(__)m
2023-11-22 15:23:17
直って良かったです!
なお、リリース出しました。前回のリリースと比べて音がブツブツ切れる現象は大幅に改善しているはずです。よかったらお試しください。
2023-11-26 03:53:54
リリースありがとうございます。
私の所ではどうだろうとプリンセスメーカー2で確認したところ、
2023_11_24版では特に問題ありませんでした。
一つ前の2023_09_13版では、ずっとプツプツプツ・・・とほぼ一定周期のノイズ音が鳴りまして、
CPUクロックを下げるとプツプツの間隔が長くなり、上げると間隔が短くなり、66HMzまで上げると連打音みたいになります。
CPUは第3世代のCOREi3です。
2023-11-26 20:38:20
FMTowns新エミュレータ Tsugaruの情報交換用スレッドです。
Tsugaru : http://www.ysflight.com/FM/towns/Tsugaru/j.html
2020-07-28 12:41:40
特定のキーを押しながらの電源オンやリセットで 起動ドライブを選択できると知り 試してみたのですが実機と うんづでは出来ましたが 津軽では出来ないようでした。認識されないのでしょうか??
2023-05-18 21:27:25
tomoさん、
キーの判定ですが、起動直後ものすごく短い時間で起こっているので、そのタイミングでキーを押すのが難しいのだと思います。コマンドモードだと起動時はターミナルのウィンドウがアクティブだし、GUIモードだとリセットするためにはGUIモードがキーを取ってしまっているので。代わりに-BOOTKEYオプションでリセットがかかったタイミングで確実にキーが押されてるようにしたのですが、知ってるキーの組み合わせしか対応してないので、未対応のものがあったら追加しますが、以下の組み合わせの他に何かありましたっけ?
CD
F0
F1
F2
F3
H0
H1
H2
H3
H4
ICM
DEBUG
2023-05-18 22:17:37
キーを押しながら[START]や[Reset Virtual Machine]で試してました。Bootタブにありました!失礼しました。
Townsには詳しくないのでよく判っていないのですが、Nで互換モード、Fで高速モードと言うのもあるようでした。
2023-05-20 09:17:42
>499 tomoさん
高速モードでの起動は「T」を押しながらリセットですね。「F」はフロッピードライブ起動に取られてるので。
2023-05-31 14:53:25
ありがとうございます。
参照したサイトは こちらでした。
http://www43.tok2.com/home/cmpslv/Debug/EnrDbug.htm
他のブログでも 同じように(Fで高速と)書いてあったのですが もしかしたら同じサイトを参照したのかもしれませんね。。
2023-06-04 21:48:23
TとNキー、津軽で対応してみました。こんな起動キーがあったとは。津軽だとTを選ぶと他のF0とか選べなくなってますが、実機だと多分T+F+0みたいな感じで高速モードでフロッピーディスク起動みたいなことができたんでしょうね。
なお、需要があるかわからないのですが、津軽に.VGM形式ファイルのキャプチャ・出力機能を追加してみました。知らない人はあまりなじみがないかもしれないですが、FM・PCM音源のレジスタ・メモリへの書き込みをそのままキャプチャするフォーマットで、仮に津軽のFM・PCM音源のエミュレーションの再現性が悪い場合でも、多分VGMプレイヤーの方にデータをかけると正しく演奏してくれます。
そのうち津軽でキャプチャしたVGMを実機で再生するプログラムを書いてやろうと思っているので、需要がほとんど無いと思われる使い方ができるようにしようとか思ってます。一度デモを書くと、何の役にも立たないコードを書く楽しみの味を占めてしまってこういうことを始めたくなるわけですね。もっともF-BASIC 386のPLAY命令で演奏させたデータを実機でそのまま再生させられるとかいうとデモのBGMに使えるかな。しかし、デモもやっぱり何の役にも立たない。
2023-10-04 13:21:34
ここ見に来てる人って大体Windowsでしたっけか?津軽のサウンド再生を一念発起してかなり手を入れたのですが、macOSかLinuxで使ってる人がいたら、最新版ソース試していただけるとありがたいです。
なお、うちの環境では2014 mac miniでも2015 ThinkPad X250上のLinux(Ubuntu 18)でも音が途切れずに再生できるようになりました。
しかし、本来そうあるべきですが、Linuxはさすが軽いですね。さすがに2015年の機種だと重いかと思ったら、ThinkPadでまったく快適に動作してちょっと感心しました。ALSAライブラリには相当困りましたが。
2023-10-22 01:31:06
大きく差異が発生するわけではないですが、486DXCommon::OperandValueのGetAsDwordとGetAsByteは配列でANDを取る値を取ってくるようにはせずSwitch文で計算式をそれぞれ実行したほうが若干ですが最適化できるようです。
ホストCore i5 12600でTMENU画面でpri timebalanceを実行した際の値の最大結果がFREQ66時に290000から300000まで向上しました。配列からの取得で何度試しても300000を超えるようなことはなかったので誤差ではないはず。
2023-11-16 19:19:26
自分はWindowsメインですが、手許にDebian12環境があるので津軽を入れてみました。
UBUNTUではないですが、派生元だし動くだろうと思いまして。
環境は2017年頃のLifebook(i5 2.6GHz)ですが、Galaxy force 2が処理落ちも音切れもなく動きました。
幾つかパッケージの追加は必要でしたが、特別な設定等なしでジョイパッドも使えています。
2023-11-21 22:14:52
他愛もないない事から、悩み事までなんでもお書きください。
では、手始めに私の困ったことから。
我が家の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
"一番おもしろかったTOWNSのソフト","できればオリジナル"と言う縛りに対しての"386ASM"は良いですね。
386ASMもHigh-Cも移植と言えば移植だし、オリジナルを探すのって難しいですね。
私の場合はフリコレかなぁ、毎回楽しみにしていたし。
後はDATAWEST社のPDSシリーズですかね。
移植物だとWingCommander,StrikeCommander,SCYNDICATE,GUNSHIP・・・色々有りますね。
2023-10-17 09:35:28
>448 WINDYさん
386|ASMはDOS汎用みたいなので、移植ではないと思います…
2023-10-25 09:10:56
フォロー有り難うございます。
そうか、DOS汎用なんですね。すっかりその発想が抜けていました。(そういう意味ではHigh-Cもコンパイラ自体はDOS汎用ですかね)
2023-10-25 09:34:07
>450 WINDYさん
追加情報(?)です。
パッケージ製品としての「386|ASM TOOL KIT」を構成する4本のソフトのうち、機種依存しているのは386|DEBUGのみです。
2023-10-25 11:00:32
コンピュータアート、ミュージック、レトロゲームの祭典 Demosplash 2023 (https://demosplash.org)今年もやります!
アメリカ東部時間今週金曜18:00-24:00, 土曜日13:00-24:00 (日本時間土曜日午前7時から午後1時、日曜日午前2時~午後1時)で、会場はペンシルバニア州ピッツバーグ、カーネギーメロン大学ユニバーシティセンター2階ランゴスですが、オンライン配信もあるので、是非ご視聴ください。リンクは上のURLの「Chat」「Broadcast」タブをご参照ください。なるべく頻繁にレトロゲームルームの模様をチャットに流すようにします。
自分もFM TOWNSエミュレータ津軽、FM-7/77AVエミュレータ陸奥の開発について45分ほどプレゼンテーションが入っています。時間は多分金曜19:30のスロットになる予定です。あとJapanese Retro Platformのセッションが45分あるので、今回はFractal Engine Demo, Microcosm, Scavenger4, MegaMorphを流そうと思ってます。
2023-10-30 11:42:29
ふと思ったんですが、TOWNSのNMIって、赤本によるとキーボードから発生する場合があるようなことを書いていますが、津軽では完全に無視しててとりあえず問題なく動いているようなのですが、これってどういうタイミングでかかってくるんでしょうかねえ?発生するタイミングがわかれば一応エミュレートしようと思いますが、赤本の56ページに「RAS機能(キーボード)」とあるだけで、RASとは何なのか書いてないのでNMIによって何ができるのかわからんのですが。誰か知ってます?
2023-11-15 03:02:47
たしか D, U, M, P の4キー同時押しでメモリダンプが始まる機能があって
たぶんこれがNMIなんだろうなと思ったような記憶があります。違うかもしれませんが。
2023-11-15 03:26:05
私の知っているRAS機能は主にFAコンピュータなどに搭載されているもので、異常(FANの異常やメモリの異常など)を検出して外部に出力したり
外部からの信号を受け付けたりして、LED表示やロギング,OSへの通知などを行う拡張です。
ただし、どの機能が有ればRAS機能を搭載しているかは曖昧でメーカーにより出来ることは様々なのですが、要は異常時の障害対応の切り分けを
しやすくしたり、履歴を残すような機能です。
で、TOWNSのキーボードとの関連ですが正直何を目的にしているのかよく解らないのですが、キーボードによっては拡張キー(SYSREQ等)を備えた
物がありますのでそれらのキーと関連しているのかもしれません。
拡張キーは通常ではどれを押しても何も反応が無かった記憶がありますので、実際には使われていなかったのかもしれません。
2023-11-15 09:34:48
おおなるほど!D,U,M,P機能があったとは。しかし、それだとエミュレートしてなくても困らなかったわけですね。試しに津軽でコマンドからNMI出せるようにしてみようかな。
今、誰も使ってない可能性のあるディスクイメージツールのFDDUMPをEXP化して、DOS6からでも使えるようにしようと思ってて、その間プロテクテドモードから抜けられると困るので、大概のIRQはマスクしてしまえばいいもののNMIがかかってきてたらどうしよう?と、思ったんですが、大丈夫そうですね。実際、実機でプロテクテドモード版FDDUMP.EXPはとりあえず成功したようなので、ぼちぼち(今更)実機のSCSI2SDをDOS6ベースに更新して、ついでにWindows 3.1パーティションも追加してやろう、とか思っているところです。
FDDUMP、GUI版作ったら使う人いるだろうか。いや、いないかな。大体FM系のゲームをコピープロテクトまるごと再現してやろう、という需要が無いですよね。クラックしちゃえばいいじゃんという感じで。
2023-11-16 01:16:29
FMTowns実機や各種FMTownsエミュレータを使用する上での質問事項
2020-07-28 13:20:43
すみません。スレッドがここでいいのかわかりませんが。
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
少しお伺いしたいのですが、
TownsOS V2.1L51(on DOS6.2)が既にHDDへインストールされていて、CONFIG.SYSにYSSCSICD.SYSを組み込んだ状態で起動し、
何らかのソフトウェアをSCSI-CDドライブからそのHDDへインストールしたいと言うことですか?
>コピーの段階で先に進まなくなってしまうようです。
ファイルは1つもコピーされていなさそうですか?
2023-09-16 10:11:23
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
私では何故上手くいかないか全然分からないやつでした。
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
返信ありがとうございます。
2047MBのDOS ext区画にインストールしたいと思っています。
HDDのイメージにtsugaruでTOS on DOS6は出来たのでこれをHDDに書き戻し、とりあえずインストールは出来たのですが
やはり実機で出来ないのが気持ちが悪い、それだけです。
救済IPLも興味があったのでまた今度やってみます。(TOWNS本体は実家にあるのですぐにはできませんが)
2023-09-17 22:03:27
おおなるほど。というと、実機でDOS6上にTowns OS V2.1 L51をYSSCSICD.SYSを使ってインストールしようとしたときにクラッシュしたという感じでしょうか?一応、津軽上でDOS6+EMM386環境でYSSCSICD.SYSが動作することは確認した(と思った)のですが、そういえば、最近High-Fidelity Modeがあるので試してみますね。案外何か見つかるかもしれません。
2023-09-18 09:32:18
理解いただきありがとうございます。
クラッシュはしておりません。エラーのダイアログが出てリトライを押しても実行できず、中断しかできない状況です。
HDDイメージからHDDに書き戻したもので正常に起動できることは確認しましたので現状不都合としてはありません。
もし何かのヒントになれば幸いです。
2023-09-19 21:57:13
あ、そうか。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
読む限りでは、YSSCSICD.SYSを用いてCDで起動は出来ておりインストールまでは少なくともOSそとしてもCDをYSSCSICD.SYSを通じて内蔵ドライブとして認識はしているように感じます。
クラッシュなどは起こしておらず、インストーラーのプロセスにおいてエラーとなりOSはダイアログを表示している事からアクセスに失敗しているような感じですね。
何を以てエラーと判断しているかが判りませんが単純なファイルコピーだと思うので、シーク時間か応答タイミングなのかDMA関連で連続読み出し時にエラーが起こっているのかもしれません。
通常、TownsOSのインストール時はインストール先やパッケージ(機能)の選択後に実際のコピーが行われ進行状況を表示しますがこの心境状況のバー表示が全く進まない程のタイミングで
エラーとなるのでしょうか? それともある程度進行した後でエラーとなるのでしょうか? > プーさん
何か些細な事でも手がかりになるとやりやすいと思いますので、細かく教えていただければと思います。
2023-09-29 10:23:49
現在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
>27 山川機長さん
Windows3.1の互換性については基本的にはDOS時代からあまり変わらずで、「動けばラッキー」程度だったと思います。
要はアプリ内でWin16APIだけを使っておれば動くけど、それ以外のI/Oアクセスなどを独自に行っていればフリーズする可能性が有るのだと思います。
(DOS時代もDOSのAPIだけで組めばATでも98でもTOWNSでも動くのと基本的には同じではないでしょうか?)
たしか、後の時代(Windows95?)にINTの何番かを無効にするツールが有ったような気がするのですが、見つけられません。
2023-04-19 09:44:18
その後、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
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
早速テストしていただきありがとうございます!ゲーム自体は動くんですね!デバッガオンにした状態で実行して何か言いますかね?これまでのエラーのうち、ほとんどの場合がCPUインストラクション実行中に例外が発生したとき、CPUステートを元に戻さないまま例外をハンドルしてしまって何かが起きていたので、デバッガを有効にすると、その条件にヒットしていないかテストするようにしました。
他にWinG使ったゲームでフリーでダウンロードできるようなのありますかね?手元にぷよぷよ for Windows (ぷよぷよ通もあるけどこれは95以降のはず) があるので試してみようと思ってますが。
ちなみに僕もTOWNSが現役だったころはWindowsを走らせなかったので、実機がどうなのかよくわかりません。というか実機あるんだから環境作ればいいんですが。
2023-04-22 04:31:05
状況、ぷよぷよ for Windowsで確認できました!これ、BSWAP命令ですね。ここまでやってきて一度も使われたことのない命令で、実装してませんでした。実装してみます。
2023-04-22 07:00:15
BSWAPサポート追加したソースPUSHしました。うちの環境ではぷよぷよ for Windowsが動作するようになりました。が、なんかキー操作がへんてこでちょっと操作に苦戦しましたが。
2023-04-22 08:49:45
> 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
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
ハードウェアマウスカーソルって何だろう?と思ってネット検索などしていましたが、これって赤本未掲載なのですね。
PC-98のグラフィック(PEGC、EGC、GDC)にも無さそうで、GD543Xの資料でやっと同等と思われる機能を見つける事が出来ました。
TOWNSハイレゾってWindowsでの高速化も意識されていたのかもしれませんね。
MYSTを発売したインタープログ社は、その少し前にプリンスオブペルシャ2のTOWNS版、PC-98版を発売していましたので、それ故に両機種の対応表記が出来たのかも。
2023-05-03 23:51:03
雑談スレッドでハードウェア解析や考察が話題となっていますが、個人的に別途スレッドを立てた方がよいと思ったので立てました。
強制はしませんが、今後のハードウェア解析や考察についてはこちらのスレッドで話題にしていただけると助かります。
2020-09-24 09:40:33
プーさん、
FPGA TOWNS、既にFDからの起動が可能ということで、すごいですね!TOWNSのSCSIコマンドは、I/O 0C30hのFIFOバッファのはずですね。DMA転送はしてないと思います。7BD:270付近というと、
07BD:0000026D 8B5402 MOV DX,[SI+02H]
07BD:00000270 EC IN AL,DX
07BD:00000271 A801 TEST AL,01H
07BD:00000273 7501 JNE 00000276
07BD:00000275 C3 RET
07BD:00000276 803EB70C01 CMP BYTE PTR [0CB7H],01H
07BD:0000027B C3 RET
ここですかね? DXは0xC32なので、これはデータ転送フェーズ入りではなくPERRフラグを見ているような感じがします。この付近ではループを組んでいるような感じはしないのですが、アドレスはここで合ってるでしょうか?津軽のデバッガで追ってみた感じだと、その後普通にCOMMANDフェーズに移行しているように見えました。
2022-11-05 06:24:57
山川機長さま:
返信ありがとうございます。山川機長さまは津軽・互換BIOSの作者様でございますでしょうか。
いつもお世話になっております。BIOSソースと動作を見比べながら回路のデバグを行いましたので大変お世話になりました。
おかげでFDDからのDOS bootまではたどり着けました。
上の話ですが、275番地のretで1e5番地に戻っており、1f3番地でREQ,MSG,C/Dを残してマスクし、1f5番地でREQのみ1の状態で
なければ1cb番地に戻り、ループする、と解釈しております。REQ=1,MSG=0,C/D=0の条件はデータ転送フェーズですのでここを抜け出すには
データフェーズに入るしかないように思えますがこのルーチンに入る前はコマンドは1バイトも送っておりません。
2022-11-05 09:30:20
プーさん、
> 返信ありがとうございます。山川機長さまは津軽・互換BIOSの作者様でございますでしょうか。
そうです。互換BIOSはCD起動までKasanovaさんが開発されていたものを、改変したものも公開が自由とのことでしたので、FD起動など僕が追加しました。互換BIOS作っておいたら津軽で使えるほかに将来誰かFPGA TOWNSを作る人が現れたら単体で動作するTOWNSとして配布できるであろう、ということを考えてましたがまさかこんなに早く現れるとは思ってませんでした!津軽は、中身を研究するためにデバッガをかなり強力にしたつもりなので、ご活用ください。
SCSIは、津軽開発自分ジャーナルにアノテートした逆アセンブルが残ってました。ここですが、01F0HからBUSY=0で抜ける可能性もあります。
07BD:000001EE A808 TEST AL,08H ; AL comes from IN AL,0C32H. 08H is BUSY flag
07BD:000001F0 741C JE 0000020E { SCSI Status BUSY=0:}
各フェーズに対する処理はSCSIのInterrupt Handler内で起こっているので、このループは単にInterrupt Handlerがフェーズを先に進めてそれに応じて回っているだけと思います。ですので、フェーズが変わるごとにSCSIのIRQを出して行けば抜けてくると思います。
SCSIのIRQ (48H)のハンドラは 07F9:00DF ですね。と、言ってもALに20Hを入れていったん全部07F9:125に飛ぶことになっていて、そこから分岐ですが。
参考になりましたでしょうか?
2022-11-05 11:46:40
どうも情報ありがとうございました。
どうやら割り込みが無効になっていたため、コマンドを送れていなかったようです。
というのも、テクハンP262、IMSK(bit6)の説明で0=割り込み許可、1=割り込み禁止 と記載されていたため
そのまま負論理で記述していましたが、次ページINT(bit1)の説明でIMSKは0でマスクできると記載されており
こちらは正論理記載です。どうやら263ページの説明が正しく262ページの記載が誤記のようです。
該当部分論理反転したところ、少なくとも該当部分は正常になったようです。
2022-11-05 16:46:04
おおなるほど!そのpp262の誤りは津軽書いてるときに解明していたはず、と、思ったらWikiの正誤表(https://wiki3.jp/fmtowns/page/11)に転載し忘れてますね。一応、津軽開発中に見つけた正誤表が、
https://github.com/captainys/TOWNSEMU/blob/master/FMTOWNS_Technical_Databook_Errata.md
ここにあって、大体はWikiにも転載したはずなのですが、IMSKフラグは転載してなかったぽいです。他にも漏れがある鴨しれません。よかったらこちらも参考にしてください!
2022-11-06 00:22:11
そのようですね。何処かに記載があった気がするけど。。。wikiには書いていないからテクハンが正しかったのか、と負論理で記述してしまいました。
そうですね。先に見たのは津軽のgithubでした。じっくり再度読ませて頂きます。
ところで津軽のデバッガの使い方をご教授頂けないでしょうか。
2022-11-06 23:58:32
そうですねえ、デバッガもコマンド追加するたびに一応HELPには簡単な説明を書くようにしていたのですが、ちょっとわからん機能も多いですかね。一応、デバッガ有効にする ena debug コマンドとか逆アセンブルのUコマンドとか、ブレークポイント設定のBPコマンド、一ステップトレースのTなどはわかりやすいと思うのですが。よく使うのはbrkon(イベントでブレーク)ですかね。メモリに書き込みがあったときブレーク brkon memw seg:offset とか、特定の値の書き込みがあったときブレーク brkon memw seg:offset value=??、とか、あるいは逆にmemrでメモリ読み込みでブレークとかできます。あと、ブレークしないけど通過したときステータスを表示する、mp cs:offset も結構最近多用してますね。現在実機でD77より多くの情報を抜き出すダンププログラム書いててBIOSの細かい動きを解析してるので、IO Monitorコマンド ena iomon IOPort も良く使ってますね。IO書き込み、読み込みでブレークさせることもできます。 brkon iow IOPort みたいな感じで。あと過去65536段階までCS:EIPのログを取っているので hist コマンドで表示できます。hist 1000とかやると過去1000ステップまで見れます。あと、calc eax+edi*4+0x100 みたいな感じで式の計算機能も付いていて、計算機能以外は数値は原則16進数ですが、CALCコマンドの場合は、なにもつけないと10進数、16進にするには$100, 100H, 0x100のいずれかのパターンを使います。あとは、使ってみてこういう機能が欲しいとかこのコマンドはなんじゃ?という疑問があったらその都度聞いてください。
2022-11-07 02:45:39
あ、そうだ。そういえば、津軽と陸奥のデバッガは実はシンボリックデバッガなんですよ。これが使うとめちゃくちゃ便利で(自分で言うな)、起動時に-SYMオプションでシンボルファイルを指定しておいて、デバッグ中に
ADDSYM 000C:0000 "Code Segment Top"
みたいに書くと、逆アセンブルしたときそのアドレスにヒットするとその情報を表示します。また、ADDREMを使うとコメントっぽく表示して、ADDLABだとジャンプラベルみたいな感じの表示になります。あと、I/Oをいちいち覚えるのが面倒だったので、MOV DX,0200h みたいになってるところに、IMMISIO seg:offset みたいに書くと、I/Oの意味をコメントに表示します。その他、.EXPファイルのシンボル情報を読み込む機能もあって、、、、うーん、コマンド忘れたけど、ヘルプで出ますんで。大航海時代のデバッグのときには重宝しました。案外製品のEXPファイルにもシンボル情報残ったままになってるんですよ。ここ数日のFDUTIL.EXEを書くための Disk BIOS 解析でも活躍しました。陸奥の方はまだ I/O のテーブルとかデータに持たせてないんで、そこまでの機能は無いんですけどね。
登録した内容は自動的にシンボルファイルに記録するので次回起動時も同じシンボルファイルを読み込めば続きの解析ができます。これは自作プログラムのデバッグにも多分便利だと思います。
あと、
SYMFIND keyword
でキーワードを含むシンボルを表示します。うーん、ワイルドカード対応してたっけかな?してたようなしなかったような。(書いてるコードが多すぎて端々まで覚えられない)
2022-11-12 11:13:44
Windows 3.1が起動したのにマウスカーソルが出ないのはなぜだろう?と、思ったら、どうもHigh-Res CRTCはハードウェアマウスカーソル持ってますね。しかも、どうやら、Reg0への書き込みが、Byte-WriteだとCRTC2 On/Offだったりするのに、Word WriteだとマウスのX座標になるようです。というか、HRのふりをさせればカーソル出るのかな?と、言ってないで津軽にも実装するかな。
2023-03-26 09:43:38
掲示板のタイトルからは外れますが、兄弟エミュレータと言うことで。
FM-7/77/AVエミュレータ Mutsu[陸奥]の情報交換用スレッドです。
2022-08-31 16:57:32
>CSMモード、効果音モード
ゲームではないですが、フリコレ10に収録されているEUP曲「かがやき」(F-OKESHI氏作曲)で聞こえていなかったパートが聞こえるようになったようです。対応ありがとうございます。
2022-09-10 00:37:42
CSMモード,効果音モードの実装を有り難うございます。
せっかくなのでシルフィードの第一中間デモまで、訳あってキーボードで行って参りました。
CSMモードの発声に関しては"あと一息"といった感じで、全体的にノイズが入っているのか声の"明瞭さ"が低く聞き取りにくいと感じました。("そもそもCSMで明瞭なんて無いだろ"って声が飛んできそうですが、実機やXM7と比べてです)
それ以外は、FMもPSG(SSG)も良い感じでした。 XM7と比べると双方で高音部で違いが感じられますが、大した違いではなくそれぞれの"味"と思える程度です。
2022-09-14 11:11:23
そういえば、Alltynexの鳴ってないパートがあった件、ひょっとしたらCSMだったりするのではないかと思ったんですが、どうですかね?CSMモードだとKey On/Offをタイマーがコントロールするので、音が鳴らなかったかも。CSMとSSG_EGは陸奥で作ったやつを津軽にも持って来れたので、よかったですね。
シルフィードの音声は、まだエンベロープの速さをスロットごとに計算しなおしてないので、それを直すとちょっと違うかもしれないですが、多分、津軽弁ライブラリは本物よりもサイン波がスムーズになってしまってると思います。あと、時間解像度も速いかもしれないので、なかなか他のOPNエミュレータに追いつくのは難しい鴨しれません。
2022-09-15 03:43:47
CSMモードですが、3ch用のF_NUMとBLOCKが3個余計にあるけど、そのうちのどれがどのスロットに対応してるのだ?というのが探してもわからなくて当てずっぽうだったのですが、FM Towns Technical Databookの212ページについに発見しました。間違いも多いけど、FM音源について他には載ってない情報がかなり載ってるので、この本は奇跡的です。それで、対応を直したところ、シルフィードの音声はかなり良くなったように思います。YMのコードはTOWNSEMUのレポジトリに入ってるので、そのソースをPULLして陸奥をビルドしていただけると確認できると思います。
2022-09-15 11:20:24
>7 山川機長さん
対応の方、有り難うございます。
CSMモードですが、劇的に良くなったと思います。
XM7比ですが、多少低音側が強くなっており声が野太い印象ですが随分と良くなったのは確かです。
実機の記憶ではXM7の音に近く、解りやすいのはゲームアーツのロゴの部分でもう少し子供の声に近いような高い声が正しいような気がします。
また、Alltynexの方は正直、違いが判らない状態です。
2022-09-15 16:49:20
そうですねえ、CSMの理屈を勉強した、というか教えてもらったんですが、フーリエ変換してDominant Termsを上から4個を拾ってきてるわけですね。で、声は聞こえるけど低く聞こえる、ということは低周波成分のボリュームが大きいのかな。しかし、FM音源には、高い音のエンベロープの変化を速くするという機能があるものの、現在まだ津軽弁はCSMモードではスロットごとに対応してないんですよね。これをスロットごとにすると、直観的にはかえって低周波成分の減衰が遅くなってもっと低くなるような気がするのですが、とか言ってる間にやってみりゃいいんですよね。今日の晩はボウリングの試合があるので、明日ミーティング中にやってみます、と、思ったら明日から普通に会議室で集合になってしまった。週末はフライトが入ってるし、案外時間ないなあ。とりあえず時間できたらやってみます!
2022-09-16 00:06:44
うーむ、スロット事にエンベロープのスピード変えてみたけど(時間が無いんじゃなかったのか)変わらんですね。実機やXM7のPresented by Game Artsを聞くと、抑揚がついてますね。ひょっとしてMULTIをいじってるのかと思ったけどそのようでもないし。はて、何が違うんだろう。
2022-09-16 05:47:02
さんざん調べた結果、結論は、Wave生成の時間解像度が足りないということがわかりました。2msにしてたのを1msにしたらかなり改善しましたが、まだ実機と違うので、500usまでトライしてみます。謎なのが、以前1msにしたら最後のWave生成からWaveをデバイスに送るまでの時間があまりにも小さかった影響で(多分)再生が間に合わないという現象が起きてたと思ったのですが、起こらなくなってました。
津軽の方はCSMを使ってるソフトがまだ確認できてないので、引き続き2msで行こうと思ってますが、、、、あそうか。津軽だと486のエミュレーションが厳しくて間に合わんかったのか。77AVだと余裕があるから500usまで下げても大丈夫な気がしてきた。
今日は時間切れになってしまったんですが、明日やってみます!一応、今のソースPUSHしたので、改善を確認していただけるかと思います。
2022-09-18 12:59:38
さらに調べた結果、YM2612のタイマーエミュレーションが間違ってたということが判明しました。津軽でここまで使われてきてるのに、まだこの違いが残っていたとは。XM7のopn.cを参考にさせていただきました。これでシルフィードのPresented by Game Artsはほぼ実機と同等になったと思うのですが、どうでしょう?
2022-09-20 13:34:33
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
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
随分と前のことですが、モデル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
ああ、ごめんなさい。
上の資料は元々モデル2で逆アセしてたのですが、途中でHCになったので混在している可能性が有ります。
2020-10-02 11:11:43
たまにはこっちにも書いてみます(?)
TownsOSや起動時の処理に影響するCMOSの内容を、既知の物も含め2点あげておきます。
3C1A 起動時メモリ診断モード(0=通常モード、1=簡略化モード) 3代目あたりから有効
3AD8 各種フラグ (bit7が1の場合、高解像度モードモードON) ハイレゾ機で有効(とはいっても起動時に参照するわけではない)
2020-11-07 12:31:39
SCSIのPhaseのMESSAGE_INとSTATUSの順を入れ替えたら、とりあえずSCSIのエラーは出なくなりました。
が、HIMEM.SYSインストール中に割り込みハンドラを破壊という現象が起きていて原因を調査中です。
なお、デバッガで BRKON INT 21 AH=3D としておくとfile openで止まるので、pri cst するとどのファイルを開くとこかわかるようになってます。
2020-07-28 12:59:54
VERR/VERWありがとうございます。VERRを通過して、CLTS(0Fh 06h)で死亡しました。T-OSはなぜタスク機能を使ってるのか……。
お盆あんまり関係ないんですよね。まとまった時間取れれば集中してドライバ書いてたいのですが。
2020-08-14 21:33:10
CLTS実装ありがとうございます。TBIOSLD.SYSとTOWNS.SYSを組み込んだ状態で起動するようになりました。
ですが、COCO で forrbios.nsd を組み込むとコードでない場所(V86モード)を実行して止まるようです。
(COCOを組み込まなくても適当なEXPを起動してると同じようなところで停止。同条件でEMM386を組み込まない場合は問題なし。)
なんとなく根が深そうなので、お時間あるときに見ていただけら嬉しいです。
2020-08-15 15:15:40
あらぬ場所にジャンプしてしまう現象は、考えられる可能性として高いのは、
(1) Exceptionを正しく出してない。
(2) Exceptionの出し方が正しくない。
(3) Task Gateを使ってジャンプしている。
(4) CPUコアに未発見のエラーがある。
と、このぐらいだと思います。多分、(1)だと思うんですね。なんとか環境を作って調べられないか検討してみます。
2020-08-16 02:51:32
>>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
了解しました!詰まったら、多分実家から回収してきたFM Townsシステムセットアップガイドを見ながらなんとかできると思います。(一応共著者に名前入ってるけどDOS6の部分は全部武井先生が書いた)。やってみます!
2020-08-19 05:36:29
状況再現しました。クラッシュは↓ですね?
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
うーん、もはやどれを信じていいのかわからない。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
>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
そうですね。とりあえずDOS6を走らすレベルでは解決しましたが、ありがとうございます!一応、i486 Programmer's Reference Manualというのを参考にしていて、Intelの公式出版物のようなのですが、エラーが多いです。Intel公式のSoftware Development Manual (多分ia32_arch_dev_man_vol2a_i.pdfがそれかな?) を参考にする方が良い、と、とある知り合いの方から教えていただいたので今後はそのようにしようかと思ってます。
2020-09-03 05:33:45