ブートローダーアップデートしました。
しかし、CMOSの内容はSYSROMの中で初期化されていると思ったのですが、HRでやったらIO.SYSまで初期化されないみたいですね。なので、CD BOOTが使えない環境だと、まずバッテリーは交換したうえでTownsOSかDOSの起動を試みて、一度「起動ドライブがシステム構成に登録されていません」と言わせてからCMOSを再設定しないとだめのようです。まあ、当初からバーチャルハードディスクとSCSI CDを組み合わせて起動することを想定していたので、このぐらいは許容範囲ですかね。というか、ひょっとしてSYSROMのサービスで初期化できるのかな?あとでCOMP_ROMのソースをもう一度読んでみよう。SYSROMで初期化できるんだったらそうするメニューを追加すればいいだけですね。
ところで、さっき試したところ、TownsOSはSCSI CD-RドライブをMOドライブとして認識するみたいですね。FM TOWNSシステムセットアップガイドを見直してみたんですが、58ページにMOには「ハードディスクと同じようにOSをインストールすることもできるので」とありますね。そして、ページ61にはMOから起動するには「TOWNSでは初代~3代(モデル2/2F/20F)がこのスイッチ(MOをハードディスクとして認識させるスイッチ)を使います。」とあります。従ってこの3代以外のTOWNSではSCSI CDからの起動が可能のようですね。ということは多分UXもCD起動が可能のはずですね。
2020-10-03 06:07:12
WINDYさん、
まったく偶然、TownsOS V2.1 L20で「システム読み込み中に異常が発生しました」が出せてしまいました。CMOS異常です(^_^;)ブートローダーでなんとかCMOSが飛んだ状態からドライブレターをいきなりアサインできるようにならないか、と、ドライブレター割り当ての部分だけを無理やり書き換えてIO.SYSにジャンプさせてみたのですが、そのメッセージ出ました。可能性としてですがHDから起動したときにCMOSに何か書き込んでしまっていたりするかもしれません。だとすると再度CMOSを飛ばして起動すると立ち上がるかもしれません。ブートローダーだけで完結させようと思ったらいったん初期化された状態のCMOSイメージをブートローダーに組み込んでおくか、IO.SYSが何を期待しているのかを調べてIO.SYSが機嫌を悪くしないように書き換えてやるしかなさそうですね。そうか。津軽があるんだからIO.SYS初回実行時に何を書いてるか調べればいいのか。(考えながら掲示板に書くな、というセルフ突っ込み)
2020-10-03 07:22:02
>34 山川機長さん
有り難うございます、助かります。
って言うことは、CMOSのぶっ飛び方によってはTownsOSがCDから起動できないような事もあり得ると言うことなのか・・・
私の手順も無茶なもので、バッテリーBOXのスイッチ(必要ないのですが、買った電池BOXに付いてた)を切ってCMOSを飛ばした後でCDROMから起動せずにDOS5で起動してドライブ構成やメモリ構成を行ってHDを認識できるようなるのでその後は「起動できるようになったのでOK!」と思っていたのですが、本来はこの後にSETCRASH.EXEを実行してCMOSの初期化→再度ドライブ構成とメモリ構成を行う必要が有ると言うことでしょうか。
2020-10-03 10:53:33
Type.Dさん、山川機長さん 有り難うございます。無事完全復帰できました。
ついでに今まで目視でCD-ROMのアルミ蒸着面に穴が空いていたので起動を諦めていたTownsOS V2.1 L50も実は起動できる事を確認しました。(どこかが読めない可能性は有りますが)
CDIMAGE.ISOの方でも全く問題なく起動できました!! ある意味感動ものですねこれは!!
ついでについでに、Panasonic LF-1600 PD-ROMドライブのCD-ROMとしての動作確認も取れたりしました。(PD への書き込みはやる意味もあまり感じられないのでパスです)
で、CMOSの初期化データなのですがベースはSETCRASH.EXEが書いている値で、プラスしてCMOS分析スレッドの情報で有用なものが書ければ良いのではないかと思います。
特に海外の方やTOWNSに興味を持って中古で購入したが、システムCDは必要とせず主にゲームをプレイする方には有用ではないかと思います。
(日本語が読める海外の方は良いのですが、そうでない方は日本語のメニューやメッセージは日本人が英語を読む事よりも困難だと思いますので)
2020-10-03 12:02:36
Type.Dさん
BIN/CUEへのセクタ書き込みですが、BIN/CUE自体はデータトラックのセクタ長を2048バイトに設定できて、そのようなBINファイルであればISOと同じように最初の方をバイナリエディタでBOOTSECTに書き換えてしまえばSCSI/Internal両起動対応CDができるはずです。というわけで、コンバータを書きました。津軽のソースのcmdutilの下にflattenbincueというプロジェクトがあるのでそれをビルドするとコマンドラインユーティリティができます。flattenbincue input.cue output.cue みたいな感じで使えます。とりあえず、正しい2048byte/sectorのBIN/CUEができているらしいところまでしか確認してないので、実際これを書き戻せるかどうかまで確認していないのですが、多分行けると思います。これでオーディオトラック込みのscsi起動対応CDが作れると思います。
WINDYさん、
HC完全復活おめでとうございます!多分、IO.SYS内ではSJISの「富士通」を見て初期化されているかどうか判別しているのではないかと見ています。もしも「富士通」が書かれているにもかかわらずIO.SYSが想定する内容になっていないとエラーを出して止まると推測してます。
CMOS初期化データですが、どうも見たところ旧機種で作ったCMOSを別の機種に持って行っても普通に動くっぽいので、8KBサンプルを取ってしまってもいいかと思ってますが、IO.SYSによるCMOSの初期化は例えばゲームのCDでも構わないので、CDのゲームをしたい人はいったんCD起動をした上で次の起動でドライブレターを割り当ててもいいので、まあいいかなと思ってます。当初の予定では、SCSI CDからの直接起動ができない機種用に、SCSI2CDとSCSI CDドライブを組み合わせることでTowns OSの起動を目指してたので、当初の目的を大幅に超えるものができてしまいました。
しかし、CDIMAGE、感動ものでしょう(ドヤ顔)。気にならないならCMOS飛んだままでもいいというところが優秀である、と、自分で悦に入ってます。なにより重要なのが、Wing Commanderが余裕で起動できる点です!(まだこだわる) これで本当にUX以降の大規模救済ができてしまうと、稼働状態に戻せるTOWNSの台数が大幅アップしそうですよね。TOWNS動態保存界(そんな界があるのか!?)の人口が増えてくれないかなあ。
なお、アメリカTOWNSコミュニティでは英語化されたTowns MENUが出回っているようです(^_^;)彼らのレトロPCを動かし続ける執念はおそるべきものがあります。サブカルチャーなんだけどぜんぜん地に潜ってません。また、彼らの執念で著作権法もレトロゲーム保存のためならコピープロテクト解除も合法という解釈になったので、拡大解釈すればTOWNSのゲームを動態保存する目的で、TOWNS自体を動態保存するために、やむを得ずTowns System Softwareを改変しても必ずしも違法とも言えないのかもしれません。割と正々堂々やってるようですし。そういうのを許容してくれる雰囲気もアメリカのいいところだと思ってます。
2020-10-03 13:59:38
偶然見つけたのですが、CD-RWドライブはIDを5か6にするとスムーズに起動してTownsOSのCDプレイヤーで音楽を流せるようになります。
0-4ですとスピンアップ・ダウンを繰り返して起動に時間が掛かり、TownsOSのCDプレイヤーはエラーになります。
CD-ROMドライブの場合、この辺の挙動はどんな感じでしょうか。入れてあるのは富士通の普通のCD-ROMです。
そういえばIDを4にしているとドライブがMOのようなアイコンになってクリックするとストレージにアクセス不能になります。
TownsのMOのアイコンが検索しても出なかったので憶測ですが、TownsOSからMOとして認識されているのかも…。
>>WINDYさん
CMOSが原因だったんですね。直って良かったです!
>>山川機長さん
変換ソフトを作っていただいたとは恐縮です。
ビルドしてみます!
2020-10-03 22:32:15
WINDYさんの陥った状況を考えると、DOS6が無い人はSETCRASHもできなくてバッテリーを引っこ抜くしかCMOSをクリアする方法が無いと思ったので、最新バージョンでブートメニューにRESET CMOS RAMを追加してみました。
> Type.Dさん、
ドライブ構成でSCSI CDドライブのIDにドライブレターを割り当てるとたしかにMOとして認識しているようです。ですが、MSCDEX経由でマウントされるQドライブはMOのアイコンにはならないはずなのですが、QドライブがMOのアイコンになってしまいますか? 僕はPanasonicのCD-Rドライブを使っていますが、今ID4で起動してみましたが、普通にCDのアイコンでしたね。ひょっとするとドライブレターを割り当てていると何か競合が起きて変な状態になるのかもしれません。SCSI ID4にドライブレターが割り当てられていないか確認してみていただけるでしょうか?
2020-10-04 00:38:05
>38 Type.Dさん
Townsで起動指定が出来るSCSIが0~4までなのと関係がありそうですね。(起動メニューでもTownsOS上でもSCSIは4までしか指定できない)
(当時のMO等のSCSI機器に関しては、FMRやFMTOWNSに接続する際にはSCSI IDを0~4の範囲で使用するようにとの但し書きが有ったりしました)
「なぜ4までだろう」と当時は思っていましたが5,6でもCDプレイヤーで音楽が鳴るんですね。
2020-10-04 00:38:17
QドライブはCDアイコンになっています。SCSI CDが横置きドライブのアイコンになっていました。
仰る通りSCSI CDにドライブレターが割り振ってあったので解除してみると、エラーは起きなくなりました。
起動時間の差についてはまとまらないので後で報告します。遅くてすみません。
>>山川機長さん
コンバータのほうはビルドできたのですが、コンバート先のイメージは起動できるものの、音楽トラックが細切れになっていて認識できませんでした。
残念ながら自分は改造できません(^-^;
>>WINDYさん
そうですね。ID0も確認したので起動可能なIDという認識で合ってると思います。
ID5,6はTownsOSからは認識できず、山川機長さんのドライバやローダーからは認識できるので競合を回避できてるんだと思います。
2020-10-04 12:32:15
アイコンの件は説明不足で失礼しました。
起動速度を計ってみました。どちらもドライブレターは割り振っていません。
SCSI ID 5,6 約47秒
SCSI ID 0-4 約2分24秒
速さはともかく、シーク音のような音が小刻みに鳴り続けているのがIDを変えるだけで解消されたので、
何らかの理由で再現されたときの参考にでもなればと思いました。
というか、自分だけなのかなと思ったので質問させて頂いた次第です(^-^;
2020-10-04 14:29:33
> Type.Dさん、
flattenbincueだと、たしかにオーディオトラックがずれますね。大変失礼いたしました。僕はImgBurnを使っていますが、データトラックが2048bytes/sectorの場合、データトラックを正しく書いてくれますが、BINファイル上の2トラック目の位置は(2352*データトラックのセクタ数)と解釈するようです。というわけでもう一本ユーティリティを書きました。padbincue input.cue output.cue で、input.cueにはデータトラックを2048バイト/セクタ化したCUEファイルを指定すると、output.cueにはデータトラック後にパディングを加えて2トラック目以降の位置を調整したBIN/CUEファイルを生成します。Towns System V1.1 L10とAfterburner IIとWING COMMANDERで演奏まで確認したので多分大丈夫だと思います。ただし、パディングしたBIN/CUEは津軽では正しく認識できません。
BIN/CUEファイルが誰かが適当に作ったフォーマットが広まってしまったパターンみたいで公式なデータフォーマットが存在しないのが問題なんですけどね。BIN/CUE自体はバイナリファイルを複数のバイナリに分割することもできるらしくて、それもトライしてみたのですが、そうするとImgBurnは最初のトラックしか認識しないみたいでした。
仕事でも誰かが適当に作ったらしいNASTRANなるフォーマットにいつも悩まされてます。ある解析ソフト用にNASTRANを出したら別の解析ソフトで読めなかったり。
2020-10-05 04:47:27
↑の書き込みの後で、そういうフォーマットのBIN/CUEも津軽が対応すりゃいいだけじゃん。と、思ったので、そのようにしました。また今日の晩にもPUSHします。とりあえずImgBurnでCDに焼いても正常にSCSICDから起動するTowns System Software V1.1 L10とWing Commander 1が使えることを確認しました。もうひとつ興味深いことに気が付いて、Wing Commanderって、新ブートセクタを使って内蔵CDから起動しようとするとDRIVE_R.IMGを読み込もうとするループで起動しないですね。動作の違いを見ようと思って新ブートセクタを書いてないCDで起動したらなんとDRIVE_R.IMGをfopenしてませんでした。どういう法則でDRIVE_R.IMGを使うのかも解明したい謎ですね。というか、誰か既に解明してましたか?
2020-10-05 06:15:16
>>山川機長さん
なるほど、音楽トラックにずれが生じていましたか。
自分はbinとwaveに分割してcueに書く方式で作ろうかと思ってcueの書き方を探したのですが、
cueもデータも読み込むソフトに合わせて書くようになっていて頭を抱えていたところです。
こういうツールは貴重ですね。imgburnで作ってみます!
2020-10-05 22:04:08
お陰様でpadbincueでカスタムCDが作れました。
役に立つ情報かは分かりませんが、自分の環境で若干安定しなかったのですがCDを開け閉めすると改善されることが分かりました。
お手数お掛けしました(o_ _)o))
2020-10-06 20:56:59
成功してよかったです!開閉は、INT 21 AH=0EH の処理に関するものかもしれないですね。実はYSSCSICDもCXでTowns OS V1.1を起動するとき安定しないという報告が上がっているのですが、我が2Fでその現象が見られず、しかし、報告をくれた人がAUTOEXEC.BATの先頭でDIR Q:を挟むだけで良くなった!という追加報告をくれたのでなんとかなったらしい、というところで止まってます。Oh!FMTOWNSの記事でも確認できた通り0EHは開閉のポーリングであることは間違いないのですが、V2.1ではDL、V1.1ではALに値を返してるっぽいんですよね。調べたのがしばらく前で「らしい」で止まってるのですが。うーん、とりあえず津軽/YSSCSICDのTODOリストに入れました。というか、V2.1でも動作は安定しないでしょうか?そうであれば0EHとは違う要因かもしれないです。
2020-10-06 22:59:31
>>山川機長さん
今回使ったのはV2.1L51です。手掛かりになりそうなものを列挙します。
現象は稀に固まる、サイドワークが起動しないなどです。
目視で分かるのはCDプレーヤーを起動してみるとグラフィックの蓋が開いていて暫く待つと蓋のグラフィックが閉じたり開いたりする現象で、CDトレイを開けてから閉めるとそれ以降、現象は発生しなくなります。
一応コマンドモードからDIR Q:もしてみましたが、変化なしです。
先程、FDのブートローダーで普通のV2.1L51を起動しましたが、そちらも同じでした。
トレイが開いているグラフィックになる状況では何度もCDアクセスが発生しているようです。
これらの症状はトレイの開閉をすると改善されてCDアクセスも軽くなりました。
以上、現象報告でした。
2020-10-07 01:02:53
訂正: INT 21H -> INT 93H, AUTOEXEC.BATの先頭 -> AUTOEXEC.BATのMSCDEX直後 の間違いでした。
2020-10-07 06:23:25
津軽のキーボードのTranslationモードを TRANS1 (ESC->ESC+BREAK), TRANS2 (ESC->ESC), TRANS3 (ESC->BREAK) の3種類に分けました。コマンドパラメータまたはGUIでも指定できるようにしたので、DOSモードで起動するときは-KEYBOARD TRANS1, FB386のときは-KEYBOARD TRANS3、FB386でESCキーが欲しいときは-KEYBOARD TRANS2のように使い分けができるようにしてみました。従来同様起動後に切り替えることもできます。最近のキーボードはPause/Breakがついてないのが多いみたいな気がしますね。TOWNSは、キー多すぎ。PF20まではとても対応しきれんですね(^_^;)とりあえず、ソースはPUSHして、明日の夕方テストを通してからリリースにする予定です。なお、最近のバージョンでは、ジョイスティックにキーを割り当てるVirtual Key機能があるので、欲しいキーはUSBジョイスティックに割り当てたりすることもできるようになってます。
2020-10-07 09:27:56
津軽じゃなくてブートローダーの方のgithubにBIN/CUEファイルのデータトラックを2048 bytes/sector化してIPLを書き込むPython Scriptを追加しました。多分、動くと思います。よかったらお試しください。
2020-10-08 13:37:53
サブ環境にPythonを入れて動かしてみました。Pythonはこういうことも可能なんですね。先のツールと同じファイルが作れました。
哲学をやる程長くは待たされませんでしたが洒落が効いていますね(^_^;
別のバックアップファイルで作ってみて気付いたのですが、確認リストにRYXANBERとありますが動きますでしょうか?
自分の環境ではV1.1FDにYSSCSICD.SYS 0.93を入れた状態で動きますが、救済ブートローダですと若干化けたタイトルから進みません。前にあの画面は見た記憶があるのですが思い出せないです。
最近はWindows10が3モードのFDDを切ったためTownsのFDの読み書きができず不便になりました。お陰でどんどんlinuxの重要性が増してきています。FDが飛ぶのも久しぶりに体験しました。今度から.hdsを作ってSDに送ることにしよう…
2020-10-11 01:36:20
ご確認ありがとうございます!我がHRではRAYXANBER動いています。CDIMAGEまたはFDIMAGEからの起動で、BOOTSECTでの確認はしてないです。機種によって結構差があるのかもしれません。現在UXでまったく起動しないという報告があって(FD BOOTとかの最初の文字もでないらしい)、386SXで使えないインストラクションなんか使ってたっけ?と思いながら調査中です。
2020-10-11 08:05:14
調査中ですか。了解しましたm(_ _)m
2020-10-11 12:00:58
なぜUXで起動しないのか原因はまだわからないのですが、RS232CクロスケーブルでTOWNSとPCをつないでCMOSのバックアップ・リストア、それとROMイメージの吸いだしができるようになりました。TOWNSが使ってるシリアルIC、i8251は38400bpsまで安定して出ることがFM-7実機再稼働プロジェクトのときに判明していたので、試したらTOWNSでも38400bps出たのでデフォルトは38400bpsになってます。試しに76800bpsも試したのですが、さすがに出ませんでした。
これにより、CMOSはPC上にバックアップを取っておけば消滅しても復活できるようになりました。というか、バックアップしておかなくてもエミュレータ上で作ったCMOSイメージをそのまま転送してしまえばいいだけになり、エミュレータと実機の連携がよりお手軽になりました。
新しいTOWNSをヤフオクで落としたときなどは、このブートローダーでROMの吸出しができます。ROMを送信するのに約12分ですね。XMODEMで一本のファイルになるので、それを分割するユーティリティdecomrom.pyもUTILにあります。このぐらいやっとけば相当コンディションが悪い実機もなんとかなりますかね。UXで動かないという報告が気になってるのですが、手元にUX無いのでどうやってデバッグしたもんか。
2020-10-13 10:00:25
>55 山川機長さん
「80386DXと80386SXの違いはバス幅のみで命令については違いは無い」と過去から聞いていたのですが・・・・なぜUXでは起動できないのか・・・・
バス幅が狭い為にプロテクトモードでは相対的に速度低下するのが、タイミング上で問題になっているのでしょうかね。
進行状況を画面に表示させるのが良いのでしょうけど、実際に表示されるタイミングが遅れるのであまり充てに出来ないし・・・UXって他にLED等のインジケータが無さそうですね。
XMODEMでのバックアップ・リストアに関しては、結構時間がかかりますね。
記憶だとTownsOS上での通信では、9600bps位が限界だったと思っていたのですが、38400bpsでも大丈夫なのですね。(リアルモードだからかな)
あとは、XMODEMだとどうしてもスピードが出ないのでプロトコルを換える手もありますが、実装側の手間とフットプリントの大きさ,利用しやすさ等から考えるとXMODEMが良いのだと思います。
(XMODEMでバイナリデータを扱う場合、最終データが1Ahで有った場合にデータとパディングデータが同一である事からデータの破損が発生する可能性が有りますので気をつけてください)
2020-10-14 07:52:33
今日は津軽の感想のメールが二本(どっちも英語)届いて気を良くしてました。
UXの状況ですが、報告によると一瞬メッセージが出た後固まるとのことなんですが、この一瞬のメッセージが"FD BOOT"だとすると、止まってるらしい箇所はFM-R互換VRAMアクセスの書き込み先バンク指定直後なんですね。コード読み直したらなぜかIPLの中では指定してなかった。ひょっとすると(手抜きしてパレット再設定してないもんで)UXは初期パレットが違っててカラーコード15が黒になってしまっているという可能性もあります。ここは、まじめに再設定するように書こうかな。ただ、一瞬出るメッセージは読み取れない、ということなんですが"FD BOOT"は1秒は出てるはずなんですよね。それが読み取れないというのはなんとも。
38400bpsが出るのは、多分ポーリングでRS232Cの監視以外何もしていないからだと思います。RS232C BIOSがリアルモードのBIOSだったので、プロテクテドモードに入ってしまうとRS232C割り込みが出てからリアルモードに戻ってI/O読んでまたプロテクトモードに戻って、だと間に合わなかったのかもしれないですね。赤本によるとMXはFIFO Bufferを使える (pp.829)とのことなのですが、これEnableしたら76800bps出るのかな?気が向いたらTowns実機でD77イメージをRS232C経由で転送するプログラムを書こうと思っているのですが。
ちなみに、RS232Cだけに集中させたらFM-7でも38400bps出てます。リダイレクタでテープ版ソフトをRS232C経由で流し込むと実機なのに爆速でロードするので死ぬ前に一度見ておく価値があります。AV40はI/Oでスピード指定なもんだから19200bps止まりですが、AV40に刺しても大丈夫なRS232Cカード(本体のRS232CカードをEnableすると刺した方が寝る)設計だけしてまだ実際にはまだ作ってません。コロナで引きこもってるから作ってみようかな。
2020-10-14 10:20:54
面白そうだったのでRS232Cを使ったcmosバックアップをHCとWindowsPCで使ってやってみました。ダンプの中に富士通の文字を確認。津軽で読み込んでみても正常でした。
システムROMのダンプもやってみましたが、こちらは何か不備があるのかxmodemの転送が開始されずWindows側がタイムアウトになりました。
使ってみた端末のOSはWindows10で通信にはMopTermかTeraTermを使っています。bps変更の都度テストメッセージは確認しています。
余談ですがTownsが38400bpsで通信するのは初めて見ました。シリアル通信も馬鹿にできませんね。
2020-10-19 21:46:51
テストありがとうございます!多分、ROMのダンプがHCでできないのは、PHYSDUMPが動かなかったのと同じ理由ですね。Pentiumだと何かUnreal Modeの動作が違うのだと思います。もう少し勉強が必要のようです。
2020-10-20 07:20:59
>>59
Pentiumのせいでしたか。
Towns末期の機体だけあって市販品も動かないソフトが多いですし仕方ないのかも知れないですが残念です。
なんか指摘したようですみません。
2020-10-20 21:55:02
いえ、そういう報告が無いとどこまで動いているかわからないですし、ありがたいです。何か他にも気づいた点があったら教えてください。PentiumでもUnreal Modeは普通に動くはずなので、多分マイナーな修正で使えるようになると思うのですが。
多分、本来はプロテクテドモードに一瞬入ったときJMP命令でCSも新しくするべきところをNear Jumpでごまかしているあたりが怪しいとみているのですが。多分、Unreal Modeじゃなくて一瞬フルにプロテクテドモードに入った方がいいんでしょうね。
2020-10-22 01:03:35
ハードディスク用ブートローダーも実機で成功しました!以下に手順をアップロードしました。
http://ysflight.com/FM/towns/bootloader/emergency_hd_j.html
副産物で、ハードディスクイメージのパーティションを移植するPythonスクリプト transpart.py (TRANSplant PARTition)ができました。OASYSパーティションの移植もできます。
SCSI2SD等に投資が必要ですが(その点は従来の方法でもSCSI CDドライブの投資は必要)この方法で、model2 (SCSIカードが必要), 2F, 20Fも救えるようになると思います。あとブートローダーで残ってるのはPentiumでプロテクテドモードメモリのアクセス問題と、失敗の報告が上がってるUXでなんで失敗するかの究明ですね。うーん、どっちも手元にないからどうしようかな。Pentium問題はDOSBOXでなんとか実験できるだろうか。
UX問題は津軽にUXモードを追加したらなんか変わるかな。というか、実は2Fでさえ実機と津軽/UNZと動作が違うんですよね。なぜかブートセクタの最初の6バイト後に53Hバイトの隙間を作らないと2Fで起動できなくて、SYSROMが何か書いてるのかと思って表示してみたけど何も書いてないという謎です。津軽もUNZも実行すると2FのROMでも53Hバイトの隙間が無くても起動するんですけどね。あと実機だとRESTOREコマンドを出してからセクタ読まないとREIPLで再起動できないとか。
2020-11-02 01:15:07
>62 山川機長さん
386SXモデルの起動処理ですが、386DX/486/Pentiumモデルより複雑な処理を行なっており、ブートROMがブートセクタ(もしかしたらIO.SYSも、かも)を読み込んだ後に一旦C:\IO.SYSに制御を移し、そこでブートローダーを読み込んだ起動デバイスのIO.SYSのヘッダ部分にあるタイムスタンプを比較して386SX対策が必要なバージョンのTownsOS(はっきり言ってしまうとV1.1)であればIO.SYSと386|DOS-ExtenderとしてC:\IO.SYS/C:\RUN386.EXEで代替する処理が行なわれているようで、その起動処理の違いの影響なのかもしれません。
386SXモデルの一派であるMARTYでも同様の処理はしていますが、こちらの方が更に複雑で、パッドでのマウスエミュレーション機能対応の関係からなのかTownsOS V2.1L20まで対象が広がっており、C:\IO.SYSはコンソールレスシステムとなっています。これでOh!誌に書いてあったTownsシステムソフトウェア V2.1L20のコマンドモードが使えない現象の説明もできます。
2020-11-03 08:40:40
りうさん、
さすがです!貴重な情報をありがとうございます。ということは、津軽でも386SXモードを実装すれば同様の挙動は再現できそうですね。そういうモードもそのうち追加してみようと思います。
ハードディスクブートローダーですが、昨日一念発起して持ってるTOWNSをすべて引っ張り出して、HRとMXでも動作を確認できました。こっちの知り合いが余ってるHGがあるからくれるそうなので、届いたらHGでも動作確認ができるようになる予定です。その友達は最近FM77AVをヤフオクで落としてアメリカまで届いたまではよかったのですが、電源を入れても起動しなくて、今何が動いてないのか原因を究明中です。僕はRS232Cカードを一枚作ってTOWNS HGと交換する予定だったんですがね。そんなことがあったので、現在作業用机の右のFM机にはTOWNS MXが置いてあってその上にFM77AVがあるという非常に心穏やかになる状態になってます。(でもモニタや電源の都合で同時に使えるのは一台)
2020-11-03 12:52:44
> Windyさん、Type.Dさん
Pentium機でUnreal Modeがうまく動いてない問題なのですが、ちょっと変えてみたので実験してみたいのですが、さきほどGithubにPUSHしたPHYSDUMP.EXEがHCで動くかどうかテストできますかね?PHYSDUMP C2180000 で最初の5バイトが"FONT2"、 C2000000だと最初の4バイトが"IPL4"で残りゼロが出ると成功なのですが。よかったらお時間のあるときに試してみていただけると助かります。なお、DOS6だとEMM386の問題で機種にかかわらず動かないのは変わってないので、EMM386を停止した状態で実行してください。なお、変更点ですが、PE=1にする前にLGDTするようにしたのと、CR0の退避と復元にPUSH/POPを使わないでEDXに保存しておくことにしてみました。
2020-11-06 03:23:24
>65 山川機長さん
UnrealModeのテスト、正常動作しました!! C2180000で最初の5バイトが"FONT2",C20000000で最初の4バイトが"IPL4"が表示されるのを確認しました。
変更点のどちらが効いたのか判りませんが、お手数でなければ2通りのバイナリを用意していただければこちらで試しますので、特定は可能です。
別に特定しなくても今のバージョンで問題は無いので良いと言えば良いのですが・・・・ 何かスッキリしたくて。(汗)
ここ3週間ほど恐ろしく出張が続いていましたのでWikiの方もこちらも放置状態でしたが、概ね完了しましたので持ってきたMXの修理とIRコマンダーの捜索を再開します。
2020-11-06 23:18:20
動きましたか!ありがとうございます!原因の特定に協力していただけるとのことなので、3本別バージョンを作ってアップロードしました。
http://ysflight.com/download/FIX1.zip
http://ysflight.com/download/FIX2.zip
http://ysflight.com/download/FIX3.zip
FIX1は、CR0をリアルモードに戻す前にGDTリストアしていたのをリアルモードに戻した後にしました。
FIX2は、プロテクテドモードに入る前にGDTを設定して、リアルモードに抜けた後にリストアするようにしました。
FIX3は、CR0の保存にスタックを使わないようにしました。
予想ではFIX2だけ動いて、FIX1とFIX3が動かないのではないかと思います。僕の解釈ではLGDTはGDTだけ変更するものの、それぞれのセレクタのリニアアドレスとかリミットのキャッシュは変更しないであろうと思っていたのですが、PentiumではLGDTの時点でキャッシュクリアするのかもしれない気がしています。
よろしくお願いします!
2020-11-07 00:35:23
丁度今日拝見したので早速実行してきました。
WINDYさんが既にご報告されていますが折角まとめたことですし貼っておきますね。
C2180000 46 4F 4E 54 32 20 20 20 00 01 00 14 00 14 22 84 | FONT2 ......".
C2000000 49 50 4C 34 CB 00 00 00 00 00 00 00 00 00 00 00 | IPL4............
C2000000は残りゼロでした。おめでとうございます。流石です。
先日HDDイメージにブートローダのパーティションを追加するスクリプトも使ってみました。
HC + RaSCSI ZEROベアメタル版の構成でTownsOS V2.1 L20を起動できました。
今までHDDの形式が分からないため試していなかったのですが、試しにTsugaruで作ったイメージの拡張子を.hdsに変更してSDに入れてみたら普通に起動してしまいました。
HDDは高速モード、SCSICDは互換モードで起動確認しました。
HDDにブートローダは便利ですね。区画設定で起動パーティションを変えるだけでコントロールできるのが良い感じです。
これでPCのように起動後何十秒か操作しないときにタイムアウトして起動ドライブから起動するようになったら常用すらできそうです。贅沢を言えばキーボードで操作できると便利かも知れないですね。
他にもグレーTownsがあるのですが、24KHz必須なもので中々引っ張り出す場所を確保できません。
コマンドモードを31KHz出力させる方法が実はあって、フリコレ収録のcons30.exeの付録のconsi.comというのを使うと普通のLCDに映るのですが、意外とどこのサイトにも載ってませんね。YSSCSICD.SYSを使っていた頃は重宝したものです。
2020-11-07 01:20:33
Type.Dさん、
> これでPCのように起動後何十秒か操作しないときにタイムアウトして起動ドライブから起動するようになったら常用すらできそうです。贅沢を言えばキーボードで操作できると便利かも知れないですね。
むむむ、まさに同じことを考えていました(^_^;)一番簡単なのはI/Oの6CHを使って時間をカウントすることなのですが、あれって20Fからでしたっけ?タイマーとかはSYSROMがなんか設定しているとしたらいじりたくないし、とはいえ、20Fまでだったら386DX 16MHzと仮定してクロックを数えればいいのか。。。。
やりましょう!
というわけで、やります(^_^;)しばらくお待ちください。
2020-11-07 03:04:46
恐れ入ります(^-^;
2020-11-07 03:27:37
>69 山川機長さん
I/O 006Chは仰る通り10F/20F以降ですが、そこまでピッタリの時間でなくても良いと思うので初代に関してはループでも充分なように思います。
後は、VSYNC位が正確な時間を計る方法として使えますね。
2020-11-07 06:45:05
>67 山川機長さん
FIX2のみ正常動作で予想されていた結果通りでした。
正にUndocumentで貴重な情報ですね。 ロストテクノロジーなんだろうけど。
2020-11-07 07:47:07
あ、そうか。確かにVSYNCがいいですね。そのようにしました。
とりあえず、キーボード対応と12秒で自動ブートにしてみまてGithubにPUSHしました。RDHIGH.ASMも新しいものに置き換えたので、HCでもROMイメージ転送ができるはずです。が、今実機机にFM77AVが座っている影響で実機テストできてません(^_^;)甘えてしまって、実機テストお願いしてしまってよいでしょうか?よろしくお願いします。
なお、既にお気づきかと思いますが、HDからブートの場合、最後に起動したオプションを憶えるようになってるので、ほっておくと前回起動したデバイスから自動起動(するはず)します。
2020-11-07 10:08:43
WINDYさん、
テストありがとうございます!ロストテクノロジーでも何か記録に残しておくと100年後ぐらいに誰かが見つけて役に立つかもしれませんね。
レトロPCはこうやって資料を保存できるけど最近のオンラインゲームとか将来に残らないんじゃないかと非常に不安です。まあ、この心配は今のゲームに燃えてる若い人たちがしてくれればいいことですが、学生さんとかには折に触れてコンピュータプログラムは工業製品であると同時に芸術性もあるというようなことを言う変な教員をやってますが。
2020-11-07 10:16:40
> 山川機長さん
起動オプションが保存されているのはいいですね。
今回のは津軽で見てみると16進数でカウントダウンしてブートするのですが、カーソルが2行ずつ動くようです。
実機ではブートローダーの画面が一瞬出た後に「不法な割り込みが発生しました」と表示されて落ちてしまいました。
カーソルは本家のブートセレクタとの兼ね合いもありますし、パッドでもキーボードでも動くほうがいいかと思います。
2020-11-08 00:48:20
むむむ、そうですか。やっぱ実機テストは必要ですね。というわけで今FM77AVにどいてもらったので今からMXでテストします(^_^;)
2020-11-08 03:53:54
大変失礼しました。直ったと思います。 MOV DL,60 DIV DL とすべきところを MOV DX,60 DIV DX と書いてました。津軽のCPUコアは割り算のオーバーフローを無視していたもんで。MXのFDIMAGEで動作確認したので多分大丈夫だと思います。キーボード対応も実機で確認しました。
2020-11-08 04:29:57
> 山川機長さん
無事実機での起動に成功しました。38400bpsでROMDUMPを実行してdecomrom.pyで生成したROMをTsugaruで認識できました。
Townsでこういうことが可能になるなんて凄いです。
なお、あまり重要ではないかも知れませんが、2行ずつ移動するのは津軽の起動オプションで解決しました。
"-GAMEPORT0 KEY"と"-keyboard trans2"(またはtrans1)を有効にしているときのみおきる現象で、
ANA0にしたりtrans0にすると起きないようです。
よくよく考えてみるとtrans2とKEYを同時に有効にしていること自体ちょっと変でしたね(^-^;
以上、ご報告でした。
2020-11-08 18:12:55
おおなるほど。不正な割り込みの方に気を取られてカーソルがふたつ動く問題の方が目に入ってませんでした。
矢印キーとパッドが同じ機能を持ってしまっている影響ですね。津軽の方で直す方が良さそうなので、直しておきます。津軽と実機で同じ環境が使えるのが理想ですね。
しかし、TOWNSのキーボードはキーが多いですよね。日ごろUSキーを使ってるのでそもそも変換と無変換が無く、全角・半角も無く、カタカナ・ひらがなも無いという、まさに津軽だけに「おら日本語キーボードさ行くだ」、と言いたくなってしまうのですが、日本語キーボードでもカバーしきれないですよね。実行キーないし。津軽上で長い日本語をタイプすることは無いとはいえ、仮に日本語をタイプするとしたらどうするのがいいんでしょうかね。
2020-11-09 01:00:13
キーボードエミュレーションモードの問題だから津軽側で直そう、と、思ったら実はブートローダーの方の問題でしたね。
実機でも同じことが再現できます。まずパッドの十字ボタンの下を押し、放す前にキーボードの↓キーを押し、十字ボタンを放すとカーソルが二段動きますね(^_^;)
まさにこれが発生してました。なので、ブートローダーの方を更新してパッドのリリース待ちの中でキーボードのバッファもクリアするようにしました。時間の都合でまた実機テストしないままPUSHしたのですが、さすがにキーボードバッファをクリアするだけだから実機での実害はないと思います。(でも一見無害な更新がよく大ダメージを及ぼしたりするんだな、これが。)
副産物でコード見直したらトランスレーションモードで日本語キーボードの数々のキーを送ってないことに気が付いたので送るようにしました。日本語キーボードだとタイプがちょっと快適になった鴨しれません。
2020-11-09 02:01:07
なるほどブートローダー側でしたか。判明して良かったです。実機でも津軽でもばっちりです。
キーマップの件は難しいですね。普段は別のキーボードを変換アダプタを通して使っているので、純正キーボードを引っ張り出して繋いで思い出していました。
英語キーボードの場合は英語が打てれば良いかと思いますが、日本語キーボードで現状の最低限の英数記号が入力できてWindowsのIMEが有効な状態から長い日本語を打てるように変えるとすると、IMEを無効にする必要があると思います。
ソースを見てkeytrans.cppのNULLの部分を、townsdef.hを参考に書き換えればいいのかと思ったのですがビルドは通るものの、うまくいきませんでした。
文章を入力するとしたら、最低限「ひらがな」「変換・無変換」可能なら「漢字辞書」で足りると思います。
漢字辞書キーはありませんのでShift+かな漢字とかShift+Insとかコンビネーションに割り当てればいけるでしょう。
あまり使わないキーは単語登録、単語抹消、実行と取消です。取消はごく希に使うかも知れません。
ちなみに自分の使ってるクラシックPC研究会さんのアダプタは取消がEND、実行はShift+Enterになっています。
2020-11-10 03:06:45
ありゃーす
2020-12-06 22:08:24