スレッド分けました。内蔵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にジャンプするときのAXを利用することで、B0000~BFFFFを保護することができそうです。Yukioさんの解析結果の通りなのですが、そんなの F7FFH とかB0000~BFFFFだけ無かったことになんてできないんじゃないかと思いますが、実はどうせTownsOSのDOSはHigh Memoryは見ていないので、 07FFH としてもとくに困らなさそうで、DOS ExtenderはC0000H以降は自由に使っていいと思ってるっぽいのでこれでBIOSリダイレクタ用のメモリを64KB確保できそうです!
ただ、そんなに多くいらないんですけど、64KB未満というのはできなさそうですね(^_^;)一応、V2.1L20のIO.SYSだったらどこでC000Hをセットしてるのかわかったのでパッチが可能ですが。そうか。識別できるときは必要最小限にして、識別できないときはAX=07FFHでIO.SYSに飛ばせばいいのか。(考えながら掲示板に書くな)
それから、IO.SYS直後にBIOSリダイレクタを置きたいと思ったのですが、IO.SYSはMSDOS.SYSを自身の直後に置こうとするようで、置き場はハードコードされているようですね。ただ、DOS Extenderが本当にC0000H以降を使うかどうかとかもう少し調査が必要ですね。
かなり希望が見えてきました。
2020-09-24 11:04:46
まだ津軽上だけど、成功しちゃった。
2020-09-25 06:59:33
実機、SCSI CDからの起動に成功しました!ディスクイメージは↓です。
このイメージを焼いた1232KBディスクを入れて、SCSI CDドライブをつなげてフロッピーから起動すると、なんとTOWNSは外付けSCSIドライブを内蔵ドライブと思い込んで起動します!
https://github.com/captainys/FM/tree/master/TOWNS/IPL/DISKIMG
時間の都合でまだTowns OS V2.1 L20のシステムディスクしか試してませんが、他のも大丈夫でしょう。このフロッピー1枚と外付けドライブがあれば、内蔵ドライブが死んだTOWNSをかなり救済できるはずです。津軽上ではアフターバーナーとかTowns OS V1.1 L10とか起動に成功してます。
CD-ROM I/Oを直接攻撃しているソフトはパッチが必要ですが、それ以外であれば多分問題なく起動するでしょう。
ディスクイメージを焼き付けるのが最近難しくなってきてますが、TOWNSがあれば生産できるように、イメージライターも↓に上げました。
https://github.com/captainys/FM/tree/master/TOWNS/FDWRITE/EXE
run386 -nocrt fdwrite.exp a: fdmini.img
みたいな感じで焼けます。ただ、確認も何もしてこないでいきなり焼くので大事なディスクを消してしまわないように注意してください。
一応、この先、
メニューを付けてディスクフォーマットとコピーができるようにする(システムCDが無くても複製が可能に)
RS232C経由でROMイメージを送信できるようにする
SCSI HD用の起動イメージを作る
など予定してます。結構実機の動態保存界(そんな界があるのか)には革命的だと思うんですが。
2020-09-26 08:38:50
>>4
すばらしい! 今はまだ試せていませんが、SCSI接続のCD-ROMドライブの準備が出来次第試したいと思います。
メモリカードの方はあの後こちらで準備できた4in1Adapterに16MBSDカードを取り付けてみましたが、実機での読み取りは出来ませんでした。(HCが読みに行ったまま帰って来ない)
フラッシュ系のカード(リニアは入手が困難なので試せていませんが)は無理なのかなぁと言う感じで、SRAMならIPLを作れば大丈夫そうですがSRAMカード自体も入手なんですので今更時間をかけてIPLを作っても救済目的には使えないので、やはりFDが無難なのかと思います。
最終的には故障したCD-ROMの調整方法の確立や代替案(内蔵CD-ROMの制御を解明してSCSIなりATAPIなりに変換する)が目的なのは変わりないのですが・・・
2020-09-26 13:58:51
>特に誰ともなく
TOWNSで正式サポートされてるICカードってMARTYとSNを除くとSRAMカードとFMR専用のフラッシュメモリカードだけじゃありませんでしたっけ? CFやSDカードなどはプロトコルの違いなどから対応してなかった気がします(うろ覚え)。
2020-09-26 18:26:07
>6 (ただの自爆)
ああ、純正ベクトル文字カードとかCAR MARTYとかのROM系カードにも対応してたか…(完全な自爆
2020-09-26 18:27:55
>6
正式にはその通りなのですが、TOWNSの場合はICメモリカードスロットの構造が専用コントローラではなくてもっと原始的に実現されている物ですから,ひょっとしたらメモリアクセスのみで読み書きが出来るデバイスについてはサポート出来るものが有るのではないか?との疑問から来たものです。
SDカードについては、4in1Adapterが内部でCF←→SDのプロトコル変換を行っていると勝手に思っているのですが、そもそもCFカードアダプターが読み取れなかったので、CFの時点で駄目なのかも知れません。(CDカードアダプタ,4in1Adapterの2つで試したのは、それぞれメーカーが異なる事での相性問題を考えての事です)
F-ROMカードやベクトルフォントカードについてはROMやフラッシュメモリである事から、条件としてはSRAMカードと同じようにリニアにメモリへマップされるメモリタイプでないと読めないのかもしれませんね。
2020-09-26 23:02:17
電源の修理は失敗したのですが、とりあえずAT電源化ケーブルの生産に成功したので(ラジオペンチで虫眼鏡で見ながらクリンプするのめちゃくちゃ目が疲れた)、試しにブートローダーから起動してみたところ、ばっちり起動しました!なお、内蔵CDドライブには天晴CDが入ってました。これでMXとHRは動作を確認できました。あと、別の知り合いのTOWNSユーザー(アメリカ人)が彼のTOWNSでも成功と報告してくれたのですが、機種を聞くのを忘れました。HRは電池をソケット化したものの、CMOSが飛んだ環境でのテストを続行するためにあえて電池を入れてません。
これでうちにMXとHRと2Fがあるという状況になりましたがスペースの都合で一度に一台しか稼働状態にできないんですがね。HRのドライブはCD-Rは読めないですね。仕様なのか、劣化なのかはわかりませんが。HR使ってみた感想ですが、現状の津軽ってCore i7の3GHzでHRの高速モードぐらいのパフォーマンス出てるのではないかという気がしました。
考えてみるとICカードからのブートローダーも作っておくと、誰かがICカードの生産に成功したときに役に立つかもしらんですね。アセンブリプログラミングは楽しいから作っておこうかな。なお、ブートローダーの津軽での検証ですが、
.\Tsugaru_CUI.exe ROM_MX -SCSICD5 TownsOSV2.1L20.cue -FD0 FDIMAGE.BIN
こんな感じでできます。現在、CD-ROMドライブは後半のSCSI IDからスキャンすることにしたつもりがうっかり0番からスキャンしてたみたいでID5,6にSCSI CDつなげてたら5番から起動したよと言われたので、直します、というか、これはほっといてもいいか。
2020-09-27 23:56:49
>8 WINDYさん
pureTOWNSの大半のモデルはJEIDA 4.0まで対応ということで、「I/Oモード」がないのではないでしょうか。おそらくSNのシステムROMでもI/Oモードを用いるデバイスからの起動には対応してないでしょうし…
なお、TOWNSのICメモリカードスロット等の情報に関してはOSASKのWikiが詳しいと思います。
http://oswiki.osask.jp/?PCMCIA
2020-09-28 01:23:08
>10 りうさん
仰る通りで、pureTOWNSではI/Oモードは有りません。(文教タイプは詳しく解らないので、含みません)
なので、いわゆるCardBusカード等は一切使用できませんが、I/Oを使用しないカードは使用できる望みがあると思っています。
OSASKのWIKIでも様々な試みが行われていましたが、結局の所どうなのかが解らない状態でしたので今回、私で用意できたメディアでほぼ再検証に近い内容ですが試しており、
CDアダプタや4in1adapterに関しては、殆ど駄目もとで試しているのが現状です。
(それ以前に山川機長さんに作成していただいたカード領域のダンププログラムが私の実機(HC)でハングアップするので、そちらを動かすのが先ですが)
2020-09-28 08:01:28
(ブートローダーの他にHR復活させたり、Thursutmaster TOPGUNジョイスティック[2本目]修理したり内容の濃い週末だった。。。。)
とりあえず、ysflight.comにもページ作りました。
http://www.ysflight.com/FM/towns/bootloader/j.html
http://www.ysflight.com/FM/towns/bootloader/e.html (英語版)
結構アメリカでTOWNS動態保存しててくれる人多いみたいなんですよ。ありがたいことです。多分、この勢いだと来週にはSCSI2SDや変換番長などを使って起動できる救難ブートローダーもできていると思います。これに成功するとCDドライブもFDドライブも死んだTOWNSも金の力である程度よみがえらせることができるようになりますね。引き続き開発続行します。なお、津軽の開発が相対的に遅くなってますが、ひそかにSCSIコマンドの2バイト目の処理を実機に近づけるなどの変更も入ってます。はっ、既に秋学期が始まってるのに僕はこんなことをしていていいのか!?
> りうさん、WINDYさん、
今のところICメモリカードブートローダーは自分の環境で目処が立たないので保留にしてましたが、考えてみたら作って置いたら誰か方法を編み出したら起動できるかもしれないですね。一応SCSI HDのIPLが済んだら、作っておきましょうかね。
2020-09-28 09:51:35
今、衝撃の事実に気が付いてしまいました!
ついさっき、まさかと思うけど一応なあ、と、思って津軽上で試したところ、なんと!MXのSYSROMですが、普通にSCSIのCD-ROMドライブのブートセクタ読み込んでジャンプしますね。HDDもCDもSCSIの読み込みコマンドは同じで、セクタサイズは違うものの、セクタ0から読み込むのでどっちもメディアの先頭だから、ひょとしたらと思っていたのですが。読み込み前にINQUIRYを出しているのでHD以外だったら読まないと思ってたら、気にせずREAD 10 (28H)を出すようです。
当然、内蔵CDのつもりでブートしようとするので、「不法な割り込みが発生しました」と出るのですが、じゃあ、実機で本当にそうなるかやってみりゃいいじゃん。ということで、やってみたら、なんと出ました!「おお、MX実機でもSCSI CDから起動できるんじゃん!」と、思ってよくよく見てみたら、そういや今日からHRが置いてあるんだった!うっかり、津軽上ではMXのSYSROM、実機はHRのSYSROMで動作を確認してしまいました!
ただし、2FのSYSROMだとだめだったので、おそらく、雰囲気としてCX以降はSCSIにつながってればHDDでもCDでもブートセクタを読むのではないでしょうか。
だとすると、別の起動メディアいらないという事態に発展してしまうんですが。SCSI接続のCDドライブとCD-Rが一枚あればFM TOWNS II以降の救済ができてしまうということに。ただし、CDの入れ替えが必要なので、少し複雑になりますが、パッドのボタンかなんかで対応すればいいだけなので、大した手間ではありません。どうせメニュー作ろうと思ってたし。
とりあえず、先にこの路線をやってみます!
2020-09-28 13:23:12
すごいものができてしまった。
https://github.com/captainys/FM/tree/master/TOWNS/IPL
まず、DISKIMG/CDIMAGE.ISOですが、これをCD-Rに焼いてSCSI CD-ROMドライブに入れて起動するとCDを入れ替えてパッドかマウスのボタンを押すように言ってくるので、そのようにすると、SCSI CD-ROMだけでTowns OSを起動できます。
で、次がBOOTSECT/BOOTSECT.BINで、Towns OSのISOイメージを取って、最初の6KBをこのデータと置き換えると、SCSI CDから起動できるTowns OSになります。
津軽上ではMXのROMで、実機ではHRで確認しました。HRはあえてCMOSバッテリーをはずしてあるので、CMOSが飛んだTOWNSの起動に使えます。
なお、CDドライブのSCSI IDは0~3の間である必要があると思います。それから、多分CXからこの手が使えると思いますが、少なくとも2Fだとだめです。
SCSI CDドライブがスピンアップするのに時間がかかるようだと最初の起動デバイスのサイクルではタイムアウトして失敗するかもしれませんが、次のサイクルで起動すると思います。僕が使ってるCDドライブだと一度目はタイムアウトで失敗して二度目のサイクルで起動します。なので、ハードディスクなどははずしておく必要があります。が、最近の使い方を考えるとハードディスクイメージまではエミュレータ上で作っておいて、あとはCMOSさえ設定できれば起動可能という状況にすると思うので、救済目的には十分すぎると思います。
今のブートローダーの仕組みは、IO.SYSの途中で処理を迎撃して、YSSCSICD.SYSをインストールしてから処理を返してやることでSCSI CDドライブからの起動を可能にしていますが、YSSCSICD.SYSだけ見ると32KBもあって、とてもブートセクタに入らないかに見えたのですが、そのうち28KBぐらいは、 DUP 2356*12 dup (0) が占めているので、実質的に4KBでした。そして、HRとMXのSYSROMはSCSI CDドライブから最初の4セクタを読み込むので、8KB使えます。ということで、ローダーを含めても余裕で青森県地図まで含めて収まってしまいました。
よかったら試してみてください。
2020-09-29 07:49:19
>14
あまり考えていなかった方向で突破口が開けてきて面白いです。
取り敢えずCDIMAGE.ISOを試そうと思ってCD-Rに焼いてみました。
モデル2は予定通り駄目でしたので、HCで試そうと考えたのですが内蔵HDDを外すのが面倒くさくなってドライブ構成から削除してトライ。
と、ここで、ドライブ構成から削除してもIPLはそんなの見てなくてIPL4のシグニチャを持つドライブを発見したら読み込んじゃうので意味無い・・・・ 想像通りIPLを読み込んでハングアップ(IPLより先はドライブ構成が必要なのに削除しちゃったので?)でした。
取り敢えずモデル2は駄目(と言っても全く無視するわけでも無く、エラーが出てスキップしていた)と判ったので、HCの方は後ほど動作確認を行います。
CDIMAGE.ISOを焼いたCD-RはWINDOWSで見たら空っぽだったのですが、これでOKですか? (IPLのみだから見えないのかと解釈しています)
折角なので最終的には開いたスペースでデモを仕込むのも有りだと思います。(山川機長さんHPより)
2020-09-30 10:57:47
早速試していただきありがとうございます!HDはいったんはずさないと多分そっちを見に行ってしまいますね。スピンアップが速いCDであればキーコンビネーションでなんとかなると思いますが、うちのCDドライブだと絶対間に合わないです。
今のところ、CDIMAGE.ISOの中身は空っぽです。たしかにデモを仕込みたくなってきますよね!
2020-09-30 21:48:51
津軽で3種とも起動してみました。これ凄いですね。面白いです。実機でSCSI CDから何かが起動するのは初めて見ました。
ここ数日随分確認して切り分けしてきたのですが、高速モードでFDからCDを起動すると"00000F05"数回の後に"00000105"と表示が出て止まります。
互換モードにするとFDからCD起動はできますが、ブートが途中で止まりました。
ブートセクタを書き換えたCDをSCSICDドライブに入れると、DIRECT SCSI CD BOOTと表示されたところで進まなくなります。
SCSIエミュレータでセクタを書き換えたCDイメージを起動させると同じ辺りで止まります。
手掛かりになるか分かりませんが、TOWNS OS V2.1 L20のコンソール表示の後に起動タイトルが表示されるところで読み込みが止まります。
確認したのはTOWNS OS V2.1 L20とL31で、機種はHCです。ISOイメージファイルは津軽で確認したものです。
環境は一応、GalaxyForce2がYSSCSICD.SYSで動く状態ですので壊れてはいないと思います。
ちなみにうちのHCはHDDの騒音が凄いので、かなり前ですがSCSIエミュレータを買ってHDDの中の線は抜いてしまいました。(^-^;
GUIのブートセレクタがBIOSに入ってるからこの頃のTOWNSは楽でいいですね。
2020-10-01 03:41:22
私のHCもType.Dさんと同じような感じです。(CDIMAGE.ISO)
IPLは読み込めて青森の地図も出て、CDを交換してマウスのボタンを押した後、恐らくSCSIのリスト"SCSI:**H TYPE:FFH"(後から上書きされるので、**の箇所は06のみ残っている場合や04位から残っている場合が有るが、恐らく止まるタイミングと表示タイミングの関係)が表示された後、
"CD DRIVE FOUND AT SCSI ID=03H"
"IO.SYS(FBIOS) FOUND AT SECTOR 25H"
"JUMPF FOUND AT 0A9C:02E1"
00000F05 00000F05 ・・・・・・・ が5x5行表示されて、最下位に"システム読み込み中に異常が発生しました"と出て止まります。
TownsOS V2.1 L30とフリコレ10のCDで試しましたが概ね同じような状態です。(FASTモード,互換モード共)
HCってば何かと動かないのでご迷惑をおかけします。(汗)
2020-10-01 08:13:07
ご確認ありがとうございます!別のユーザの方からMAで成功したという報告があったのですが、HCは難しいですか。00000105 の表示ですが、この意味は、SCSI STATUS, SCSI MESSAGE, PHASE FLAG, DEVICE TYPEで、最後が5になってるのはデバイスタイプがCD-Rドライブという意味です。PHASE FLAGはSCSIのフェーズのCOMMAND(01H), DATA_IN/OUT (02H), MESSAGE(04H), STATUS(08H)のフェーズを通過したかどうかのフラグで、01で止まってるということは、COMMANDフェーズの後 DATAフェーズに移行せずSCSIコントローラが黙ってしまったという意味です。Pentiumだと速すぎるんですかね?
この現象は高速モードで起こるとのことでしたので、FBIOSを探すタイミングはセクタリードを連続で出すのでSCSIコントローラがあまりにも短い間隔でコマンドを受けすぎてSCSIコントローラが対応しきれなかったのかもしれません。間にディレイを入れてみます。
WINDYさんの方だと00000F05だと、STATUS, MESSAGEフェーズをくぐっているということなので、FBIOS検索中正しくセクタが読めているようです。ひょっとするとつなげてるデバイスにも依存するのかもしれないですね。
互換モードでも起動しない問題ですが、HCだとYSCSICD.SYSを使ってTowns OS V2.1 L30は起動しますかね?V2.1はロゴが出ているあたりで INT 93H AX=05C0H CH=FFH (物理アドレスへの直接読み込み) を使っているらしく、YSSCSICD.SYSは現在のところUnrealモードで上位メモリにデータを転送という手を使っているのですが、もしかするとPentiumだとUnreal Modeがうまくうごかないのかもしれません。せっかくSCSIコマンドを直接出すコードを書いたのでUnrealモードを使うのをやめて、DMAで直接データを流し込むように変更しようと思っているので、これもできるようになったら結果が変わるかもしれません。
この二点、変更してみます。
とりあえずコマンドを出す前にディレイを入れてみます。
2020-10-01 09:27:16
とりあえず、やってみました。
- SCSI I/Oを直接攻撃する前に10msのディレイを入れてみた。
- INT 93H AX=05C0H CH=FFH (物理アドレス指定で直接読み込み)で、Unreal modeで転送するのでなくDMAで転送するようにした。
- DMA I/Oを直接攻撃した後は必ずアドレスの最上位バイトをクリアするようにした。
TypeDさんの環境でSCSIコントローラが失神していると思われる状況がPentiumが速すぎるからだとするとディレイを入れるとちょっと改善するかもしれません。それから、SYSTEM ROMとIO.SYSで、SCSIステータスを見るとき、
MOV DX,IO_SCSI_STATUS
MOV AL,DX
MOV DX,IO_SCSI_STATUS
MOV AL,DX
というように、一度ダミーリードしてるんですよね。何の意味があるのかわからないのですが、それに準拠してみました。ときどき、
IN AL,DX
IN AL,DX
と連続リードしてるのを見かけますね。最初のフェッチでChip-Selectが立って、データがバスに出るか不安な場合とかでしょうか?
WINDYさんの環境でクラッシュするタイミング (Towns OS のロゴ)では、INT 93H AX=05C0H CH=FFHを使って、物理アドレス81000000H~にデータを読み込んでいます。おそらくDRIVE_R.IMGだと思います。前のバージョンではこれをリアルモードメモリにいったんデータを読んでUnrealモードで上位に転送する方法で対応していましたが、DMAで直接流し込むように変更しました。
それで、その変更を加えたらいきなりTowns OS V2.1が起動しなくなって何事かと思ったのですが、なんとIO.SYSは↑のINT 93の特殊機能以外でDMAアドレスの最上位バイトに値を書き込まないようです。そのため、いったん81000000Hに値を読み込んだが最後、あらゆる読み込みが81xxxxxxHに発生していたようです。これを防止するために、DMA直接攻撃後は必ず最上位バイトをクリアするようにしました。
他の読み込みも全部自前のSCSIルーチンを使うことにして、CDSD.SYSが使っていたBIOS隠し機能を使わないという手もあるのですが、そうなると読み込みがポーリングになるので、CDを読んでいる間割り込みを止めてしまって、効果音などが長く止まることになります。半面、多分大体どんなゲームもCD読み込み中は音が止まってた気がするのでそれでもいいのかもしれません。
これでHCも対応できるとよいのですが。
2020-10-01 12:09:54
あ、なんかUNREALモードが原因の可能性は大ありのような気がしてきた。同じ方法をPHYSDUMP.EXEでも使ってたので、もしもPentiumで挙動が違うのであれば説明がつきそうな。486では参照してなかったGDTのビットがPentiumだと厳密にチェックするようになったとかそんな感じかもしれませんね。
2020-10-01 12:41:33
早速の対応、有り難うございます。 またやらねばと思っていたので、HCは半分解状態ですので試してみます。
あ、でも、ひょっとしたら・・・ いや,IPLが読めているので無いとは思いますがCD-ROMドライブが不調だったらごめんなさい。
今後必ず必要となりそうだったので今使っているCD-ROMドライブは最近入手したもので、WINDOWSでは動作確認は出来てない(と言うかWINDOWS10では出来ない)物なのです。
それも含めてテストしてみます。(故障や不調も考えて3台確保していますので・・・・ 残り2台はPD-DRIVEですけど←興味に負けた結果)
https://kei-sakaki.jp/2013/10/11/80386-called-unreal-mode/
https://en.wikipedia.org/wiki/Unreal_mode
この辺を読むとUnrealMode自体は隠しでも裏でもなく、少々トリッキーでは有る(マニュアル上に明記はされていない)がINTELが想定した動作みたいですね。
問題はあまりにも情報が少ないのでUnrealModeの制限事項や注意点が判らないことでしょうか。(ここに386,486とPentiumの差が存在する可能性が有りそうです)
2020-10-01 16:43:30
UNREAL MODEですが、僕の使い方だとUNREALモードに長時間滞在する必要が無いので転送中だけネイティブモード入りを寸止めするような感じで使っています。なので、一般的に言われるようなUNREALモードよりもネイティブモードに近いのですが、考えられるのはGDTのフラグなどすべて理解しているわけではないので(全部理解しなくてもエミュレータって書けるもんだと判明)、本当は間違った値が入っているが486まではCPUもチェックが甘かったようなフラグがあるとPentium機で影響が出るかもしれません。
もしも以前の方法でYSSCSICD.SYS起動ディスクから起動が可能であればRAYXANBERを起動可能かどうかでわかります。今までで INT 93H AX=05C0H CH=FFHを利用しているのを確認したのはRAYXANBERのオープニングとTownsOSのDRIVE_R.IMGだけです。(チェックしてないだけでDAPSとかも使っている鴨)
このIPLを作ってみて非常に興味深いのがDRIVE_R.IMGの処理ですね。YSSCSICD.SYSは組み込み時に起動ドライブが内蔵CDであるとTownsOSに思い込ませるようにCMOSというかI/Oの3C32Hに書き込んでいて、以後の処理はほぼCD起動と変わらないのですが、DRIVE_R.IMGは読み込まない模様です。この点はなんとなくそんな気がしていたのですが確認しました。これに対して新IPLを使う方法だと、おそらくより早い段階でシステムに内蔵CD起動と思わせる影響でDRIVE_R.IMGは読み込みます。このため前に書いたDMAアドレスの最上位バイト問題が(解明されるまでの短時間)発生しました。
この先、TownsのDMAを直接攻撃するコードを書く人が他に発生するとは思えませんが、Wikiの方にこの点書いておきました。(とか言ってると海外のレトロPCコミュニティはあなどれないから必ずしも無いとも言い切れない)
しかし!今HD用IPLも書いて一応上がってますが、起動メニューでブートデバイスあるいは同じSCSI IDのパーティションを選べるようにしたのですが、HCでCDからの起動に失敗する可能性があるのだとすると、非常用にドライブレターの割り当てができるようにするといいですね!いったん立ち上がってしまえばあとはいくらでもやりようがあるので。CMOSに何を書き込めばいいのかがわかればパッドで操作するメニューをMASMで書くなどは簡単なのですが、CMOSのどこにドライブレターの割り当てがあるかとかって情報わかります? 現在互換ROMのコードを読み始めましたが。WikiにCMOS情報もあるといい鴨しれないですね。
2020-10-01 23:20:17
UnrealModeに関しての見解については個人個人で様々でしょうし、いつまでIA32が残っているのか判りませんがもう使われることの少ない物ですので深追いする必要も無いと思います。
CMOSの情報についてもWIKIの方に最終的には是非記載しましょう、それが解明できればバッテリーの切れた状態からの復帰の際にシステムCDやDOSのFDが無くても最低限の設定はSCSI BootCDで行えるレスキューCDとしても使えると素敵だと思います。
起動ドライブやドライブ構成,メモリ構成等の他の項目もCMOSで覚えてるはずですが、DOS3のSETUP.EXEかDOS5 or DOS6のSETUP2.EXEを津軽でCMOS領域のR/Wでブレークさせるといいかも(解析よりも早いし)
2020-10-01 23:41:42
おお、たしかに!CDIMAGEの方もブートメニューが出るようにしておくといいですね!やりましょう!今週末は暇だし、CMOSの解釈がさっき書き込んだので合ってたら月曜までにはできる予定です。
2020-10-02 00:37:17
対策有難うございます。ご報告します。HCでTownsOSV2.1のL20とL31,L51の起動に成功しました!
FDブートローダーから起動して、ドライブ構成などの設定の起動を確認しました。
CDブートローダーとCDブートセクタはL20で確認しました。
外付けCD1台だけでTownsOSが起動するなんて凄いです。
互換モードにする必要はありますが、レスキュー手段としては画期的だと思います。
自分の環境では高速モードでブート中にハングするタイミングにゆらぎがあるので、CDドライブのへたりかも知れません。
ところで編集していて思ったのですが、BOOTSECT.BINはimg+cueに適用できないでしょうか。
バイナリエディタでIPL4の文字に合わせて貼ってもIO.SYS NOT FOUNDと出ます。
専門知識に乏しく不勉強でお恥ずかしいです。
2020-10-02 01:38:24
あれ? Type.Dさん動きましたか・・・・
私の方はIPLを読み込んだ後に、一番上に「TownsOS V2.1」 L31,一番下に「システム読み込み中に異常が発生しました」と出てます。
(YSSCSICD.SYSを使ったFDブートでも同じ,互換/高速モードでも同じ)
でも、このメッセージは内蔵CDROMから起動したときもそうなるので、内蔵CDROMの調子が悪いのかなと思っていましたが、何かの設定が足を引っ張っているのかなぁ・・・
この前CDROMのトリマ調整をやったときは内蔵CDから安定してブートできるようになったのですが、その後で故意に電池をOFFにしてCMOSを飛ばしてから
FDでDOS5を立ち上げてSETUP2.EXEを使ってドライブ構成とメモリ構成を再設定したのですが、その時に余計なことをしたのだろうか・・・・
どちらにしても安定して? 上記の状態までブートできているので後はこちらの問題のような気がしてきました。
2020-10-02 07:56:22
予定よりかなり早いですが、ブートメニューできました!まだ津軽でしか試してないですが、ドライブ構成を編集できます!CDIMAGEで起動するか、あるいはFDIMAGEでSCSI CDをセットしないで起動すると使えます。デフォルトではSCSI CDから起動するオプションが選ばれてますが、上のBACK TO MAIN MENUというやつを選ぶとCMOS設定メニューを選ぶことができます。一応、Virtual SCSIデバイスで使うことを想定して、HDIMAGEも作りましたがまだ実機テストができてません。このイメージは後ろに512バイト単位で0を足してやれば単純に大きな容量のHDDになるので後からパーティションを追加してTowns OSなどインストールできるはずなので、それを想定して同じSCSI IDのパーティションからの起動を選べるようにしたのですが、まだ本当にそこまでできるか実験してません。既にあるイメージの後ろにひっつけるためには、どこにLOADERが書いてあるか、どこにYSSCSICDがあるかの情報を書き換えれば可能なはずですが、それもまだ試してません。
Type.Dさん、
テストありがとうございます!「よっしゃあ!」とモニタの前でガッツポーズが出ました。BIN/CUEファイルですが、BINファイルのセクタ長が2048だったらそのまま上書きができるのですが、そうでない場合、セクタ間にデータが挟まってるのでそれを回避するように書き込めば多分行けると思うのですが、そういうファイルの編集ツールって無いもんでしょうかね。
WINDYさん、
内蔵CDからも起動したときもそうなるということは、何か別の要因がありそうですね。HDからの起動は普通にできているでしょうか?
2020-10-02 11:57:07
>28
HDDからだと全く問題なく起動できるので不思議なんです。
内蔵CDでエラーになるもんで、ずぅ~っと前から「CDROMは調子が悪いんだ」と思ってたのですがこの前にCMOSを故意に飛ばした際についでにCDROMのトリマ調整もやったんですが、その直後はCDROMから起動できたのでトリマ調整が効いたんだと思ってたのですが最近になってまたエラーが出るようになったのです。
なんだろ? もう一度CMOSを初期化してみようかな。
2020-10-02 13:08:43
追加情報です。SCSIエミュレータにISOをマウントするとHCの高速モードでも起動できました。
FDブートローダとセルフCDブート、どちらもOKでした。
>>山川機長さん
こちらこそ。うまくいって良かったです。自分も思わず拳を握り締めて喜んでました。
CDのデータフォーマットは後で後学のために調べてみようと思います。
>>WINDYさん
自分のSCSICDドライブもハングすることはありましたが、新しいバージョンではエラーなく起動できています。
cmosはSETCRASH.EXEコマンドでクリアすると確実だと思いますがもう試されましたか?
2020-10-02 22:02:15
なかなか難しいですね。OAKのメッセージやYSSCSICD.SYSのメッセージが出る前だということはタイミング的にIO.SYS内かCTL.SYS内でそのメッセージが出ているように思います。津軽でCTL.SYS前後でわざとINT 93に対してエラーを返して動作を見たのですが、CONFIG.SYSが読み込めなかったとかCOMMAND.COMが読み込めなかったというメッセージが出て、「システム読み込み中に」というエラーは出ませんでした。
しかし、CTL.SYS内であればINT 21Hでエラーを出しそうなので、エラーメッセージは画面上の方に表示されるように思います。なので画面下のメッセージはCTL.SYS以前のように思います。あるいはCTL.SYSが撃ったINTがIO.SYS内で回復不能のエラーを生じている可能性もありますが、この場合「システム読み込み中」と明示しているのであればそうではないように思います。IO.SYS初期化終了後にデバイスドライバやアプリケーションからのINTでエラーが発生したならば、システム読み込み中かどうかIO.SYSは判別できないはずなので。
そういえば、HDD起動ってDOS6ベースですよね。ということはMSDOS.SYSと多分COMMAND.COMもROMドライブから読んでませんね。試しにTownsOS V2.1でコンソールモードの起動ディスクを作ってみて起動するか見てみるというのが手かもしれないですね。そしてDOS6でFORMAT /Sで作った起動ディスクで起動するかどうか。ROMが悪くなってたりする可能性はありますかね。FM-7の時代のPCだと古いEPROMのビットが飛んだりするエラーはよくあったようですが。
ちなみに、一昨年部品取りのために買ったFM-7、起動するなら起動するようにしておこうと思ったら起動しなくて症状からEPROMを疑ったのですが、例の電子工学科の卒業生(当時学生)が診断に協力してくれて、さすがはカーネギーメロンで僕が会った中で最も優秀な学生さん、CPUが悪い、と診断してくれて見たらCPUの足がソケットの中で錆びてました。仕方ないのでなぜか持っていた63C09を刺して今動く状態にしてますが。あ、これはEPROMではなかった例ですね。
2020-10-02 23:19:19
「システム起動中に・・」のメッセージ自体はIO.SYS内で有る事は確かですが、表示なので遅れている可能性も有るので停止時点はどこなのかは解らないのですが、そもそもその表示自体が出ている事が通常では無いと思いましたので、IO.SYSを数年?ぶりに見てみました・・・・ 正直、モトローラに洗脳されているのでインテル表記が見にくくて今日だけでは突き止める事が出来ていません。
あの文字列を表示する為の判断が何を以て行われているかが判ればと思います。折角のCDブートが試せなくて残念ですが時間をかけてボチボチやりたいと思います。
取り敢えず、Type.Dさんと山川機長さんの意見を参考に、V2.1起動ディスクを作成してそれで起動できる事を確認してから、SETCRASH.EXEでCMOSを初期化してみようと思います。
前はFDDの調子もCDROMの調子も悪かったのでCMOSを飛ばしたときに危うく再起不能になりかけたので、準備してから行います。
2020-10-03 00:16:58
ブートローダーアップデートしました。
しかし、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
外付けCDドライブによる確認できましたので、報告しておきます。
メーカーが違う3機種に違いが出ましたので報告です。
IOデータ・・・CDG-TX4A - CD-ROMドライブ
プレクスター・・・UltraPleX 40max - CD-ROMドライブ
ヤマハ・・・CRW8824SX - CD-RWドライブ
TownsOS V1.1L30・TownsOS V2.1L20・TownsOS V2.1L51
以上のシステムCDをブートローダーで起動したところ、
IOデータ
V1.1L30とV2.1L20は起動しました。
V2.1L51は起動しませんでした。
プレクスター
V1.1L30・V2.1L20・V2.1L51とも全部起動しました。
ヤマハ
V1.1L30・V2.1L20・V2.1L51全部起動しませんでした。
また、ドライバ YSSCSICD.SYSをCONFIG.SYSに組み込んで
V2.1L51の起動後、Qドライブを読み込んだところ、
外付けCDドライブの結果はブートローダーと同じ結果となりました。
いくつかのゲームCDを読み込んでも結果は同じでした。
IOデータとプレクスターではゲームによる違いがあることもわかりました。
ゲームをするならIOデータ製、ファイルを読み込むならプレクスター製でしょうか。
V2.1L10のシステムCDはIOデータではファイルは読めませんが、プレクスターではアイコン、ファイルとも呼び出せました。
フリコレ6(V2.1L20)をブートローダーで起動しましたが、IOデータは不可。
プレクスターは起動しました。
また、CD-ROMドライブの方が良い結果が出ましたので、各メーカーの傾向がそうだとは一概にいえないと思います。
2021-06-09 02:18:12
ご報告ありがとうございます!多分初期化さえできればあとのコマンドは同じだと思うので、初期化のタイミングが何か違うのかもしれませんね。あるいは、デバイスの種類の判別で想定しない値が返っているのかもしれません。ヤマハのドライブは残念な結果でしたが、他のドライブではまずまずの結果でしょうか。
2021-06-13 08:54:15
>>83 nanさん
なんとYAMAHAは起動しませんでしたか。自分のはYAMAHAのドライブでした。参考になります。
2021-06-17 22:25:33
>Type.dさん
Panasonic KXL-RW10AN-S、ポータブルですが騒音も静かで使いやすいです。
今はこれをメインに使っています。
PLEXSTORは騒音の面でちとうるさいです。
YAMAHAは繋いでいないので全ての確認ができていません。
2021-06-19 04:52:58
PanasonicのCD-R/RWドライブで朗報があります。
PLEXTORとI-O DATAはハングアップしてTownsがSCSI-0から起動しませんでしたが、
PanasonicとMOドライブをONにしてHRを起動するとMOドライブが生き返りました。
同様をブートローダーで試すとSCSI CDがWAITのままで起動せず。
Towns HRでMO起動を試したかったのですがそれは無理でした。
そこで、Towns OS V2.1 L10はV2.1 L51を立ち上げてからMOにインストールしました。
しかし、メモリ不足でMOのV2.1L10の再起動(REIPL)はできません。
やりたかったことはできませんでしたが、Windows機とMacBook Proとのデータの受け渡しはMO DISKで可能になりました。
2021-06-19 07:21:02
nanさん
SCSI機器は同時に繋いでるドライブの種類や電源のON/OFFによって相性のようなものが発生する上に、変換アダプタを挟むだけでも影響が出るので結構な作業ですよね。調査お疲れ様です。
2021-06-19 23:54:27
>87 nanさん
TOWNS OSをMOにインストール後、メモリ不足で再起動は出来なかったとの事ですが、DOSのエラーが発生したのでしょうか?
V2.1 L51で起動後に、V2.1 L10をMOにインストールされたのは何故でしょう? V2.1 L51をMOにインストールしては駄目だったのでしょうか? この辺りのバージョンの違いや手順の違いで上記のメモリ不足が発生しているのではないかとも思うのですが・・・ (私自身は上記のように起動時とは違う版をHDDなりMOにインストールした事は無いので経験は有りません)
TONWS/FMRの場合、MOの取り扱いについてはリムーバブルとするかどうかで起動ドライブに指定できるか(OSのインストール先として指定できるかだったかも)が決められると記憶していますので、起動に使用する場合はMOドラブ側でDIP SW等で切り換えてやる必要が有ったと記憶しているのですが、違いましたっけ?
2021-06-21 09:51:17
>WINDYさん
ご指摘ありがとうございます。
Panasonic CDドライブと MOドライブがONの状態の時だけ
MOドライブが使えたので試してみたのです。
Towns OS V2.1 L51のCD-ROMは起動しますが、HDインストールでMOに書き込めません。
書き込み時にMOのエラーが出てきて続行できません。
唯一、V2.1 L10のみSCSI HDDで起動して、Qドライブからインストールできましたので
MOの再起動を試みました。
起動しようとするのですが、メモリ不足、EMS、またはHMMを解除してくださいと出ます。
KドライブにはDOS V6.2とWindows3.1がインストールしてあります。
また、MO[MOS-640]にDIP-SWはついていません。
90年代は MOにインストールしていました。
DIP-SWはついていなかったように思います。
2021-06-21 11:46:55
MOの起動はHDDモードで初期化してあれば起動するようですね。
また、CD-Rに
CDSDMINI.SYS
CDISC2.SYS
ASPIFM.SYS
が書き込んでありました。
使い方はすっかり忘れております。今はもう必要ありませんですよね。
2021-06-22 06:25:00
>91 nanさん
記憶では、MOをリムーバブルメディアとして認識させるのにはセミIBMフォーマットでフォーマットする必要が有ったと思います。
それ以外、DOSやT-OSでの区画設定とフォーマットで認識させた場合はHDDと同じ論理フォーマットとなったと思います。 すっかり忘れているので実機で試すのが一番ですが、我が家のMOは生きているのだろうか・・・
CDSDMINI.SYSやCDISC2.SYSは、YSSCSICD.SYSで置き換える事を目標に山川機長さんが開発されている物ですが、何かの役には立つと思います。
2021-06-22 09:11:23
以前、救済IPLからSCSI CDのTowns OSを起動しようとして、自分の環境ではパフォーマンスの問題が生じたり、
FASTモードで起動しなかった件ですが、ドライブをYAMAHAからPlextorに変更したところ、
互換モードでもFASTモードでも今までが嘘のように軽く、ストレスなく動くようになりました。
YAMAHAのときはSCSI IDを5か6にすると若干軽くなったのでそのように設定してあります。
まさかドライブを変えるだけでこんなに差が出るとは。これは相性問題ですね。
CDドライブのメーカー情報を頂いたnanさん、ありがとうございました。
2022-02-06 02:23:43
いろいろ実験していただき、ありがとうございます!
動かないドライブは、多分もともとTOWNSのSCSIにCD-ROMドライブを接続することを想定していないと思うので、なにかの相性問題があるのかもしれないですね。IPLまで読み込んでくれていればIPL側で何か手があるかもしれない気がしますが、IPL読み込んでメニュー画面が出ないことにはどうにも。。。ん?FASTモードで動かないということはI/O書くときにディレイを入れると良かったりするのかな?SCSIコントローラーがCPUについていけてないのだろうか。
2022-02-06 07:17:06
YAMAHAドライブは既に外してあるので今すぐは実験できないのですが、
ディレイについては以前 >>20 で効果があり、HCの互換モードで起動できるようになりましたので、
何らかの効果はあるかも知れませんが、細かいところは自分には分かりません(^^;
>>83 のnanさんの検証でもYAMAHAの場合どれも起動しないとなっていますね。
2022-02-06 12:09:02
いやあ、INT 2Fドライブ追加してもTowns OS V2.1 L31でドライブ選択のアイコンが出ない原因究明しましたよ。
V2.1 L31だと、DOSのCurrent Directory Structureではなく、Drive Parameter Block個数を元に、Aドライブから順にアイコン作ってるんですね。INT 2Fドライブとして追加したドライブはDrive Parameter Blockを持ってないので個数に数えられてなかったんですね。さらにドライブレターが連続してないと追加されないんですね。CD-ROMドライブはQドライブ決め打ちになってるようで、AUTOEXEC.BATのMSCDEXのドライブレターをPとかに切り替えるとTowns MENUからアクセスできなりました。
ドライブアイコンを追加している個所以外は間が飛んでるドライブがあっても大丈夫になっているのですが。ドライブの有無を表すテーブルがあって、途中で止めて適当なところに0 (FFFFhがドライブ無し)を書き込んでやると対応するドライブが現れるのですが、実際のところはTMENU.EXGにパッチを当てない限りそれは無理。おそらく、Townsシステムソフトウェアについてきたバージョンの他に、例えばF-BASIC 386などについてきたバージョンなどちょっと違ってるから全部のパッチを書くのは多分無理ですね。
DOSのDPBカウントって勝手に増やしても大丈夫なのだろうか。実験した感じだと大丈夫っぽかったけど。あるいはダミーのDPB追加してしまおうかな。あとTowns MENUから見えるようにしたら一応使えるようになりそうなんですが。
2022-02-09 23:01:43
↑あ、しまった。雑談スレッドに書こうと思ったのに間違えた。
2022-02-11 01:57:37
折角CXを出しているので>>95の確認をしてみました。HCじゃなくCXに繋いでみたかったので。
件のCD-RWドライブ(24倍速)をCXに繋ぎ、SCSI ID5で起動させています。起動メディアはFDです。
HRで動く筈のライザンバーがHCのSCSIでは起動しないのがずっと引っ掛かっていたので試してみました。
結果ですが、互換モードでTowns OS V2.1L51は安定して動作しました。アフターバーナーとMEMORIESも快適に動作しました。
ライザンバーは残念ながらメーカーロゴが乱れて黒画面から進みませんでした。HCと同じです。
高速モードでのTownsOSは"INTERCEPTED IO.SYS. INSTALLED INT 93H HOOK."というメッセージが出るところで止まってしまいました。
それでもごく希に起動できて、その場合は高速モードのままでも安定してます。
以上のことから、高速モードでは何らかの理由で不安定になるということが分かりました。
386Townsの高速モードはメモリウエイトがノーウエイトになる程度の差しかないと思っていたので意外です。
古い機種は純正キーボードがないと互換モードにするまでが一苦労ですので、
検証では山川さんのサイトに載っているTmenu入りFDが活躍してくれました。
FASTモード時に何が影響しているのかは不明ですがディレイが入れば高速モードでもTownsOSのCDは起動できるかも知れませんね。
まあこのドライブでも互換モードでちゃんと動くことが確認できたのは収穫でした。
2022-02-23 02:20:47
> D-Typeさん
CXでのテストありがとうございます! INSTALLED INT 93H HOOK まで出ているということは、YSSCSICD.SYSの中ですね。(CDIPLはIO.SYSがMSDOS.SYSのインストールを終えたタイミングを捕まえて無理やりYSSCSICD.SYSをインストールする)
ということは、この部分をSCSI I/Oを直接攻撃するように書き替えたら動くかな?やってみます。
2022-02-23 06:33:52
>山川機長さん
よろしくです!
2022-02-23 12:32:21
やってみました。githubに上げる前にDropboxに上げました。
https://1drv.ms/u/s!AmlM0OLrEo8vgf0po83HPQRGzoerVQ?e=pHMBZk
こんな感じでどうですかね?CDSD.SYSが使っていたBIOSの隠し機能(どこで調べたんだろう?) INT 93H AH=FDHを使わず、すべて自力でSCSI I/Oを攻撃してデータを読むようにしました。まだ時間の都合で実機テストできてないのですが、津軽では動いてます。ただ、タイミングの問題だとすると津軽は緩いので、実験しないとなんとも言えないですが。
RAYXANBERは、メーカーロゴが崩れるのは数少ないINT 93H AH=05 CH=FF (物理アドレスに直接読み込み)を使ってるところなんですね。81Hセクタ連続読み込みしているようなので、258KB連続読み込みかな? とくにSCSIの仕様としての制限は無いと思うのですが。(というか津軽のSCSIは少なくとも制限してないと思う。)それでも崩れますね。ちょっと原因がまだ究明できんですね。
2022-02-23 13:19:20
有難うございます。
動かしてみますね。
2022-02-23 19:48:13
いろいろ動かしてきました。
CXとHCに件のドライブを繋いで動かしてみた結果、高速モードでも安定してSCSI CDを起動できるようになりました!
TownsOS V2.1L51,L20で確認、After burnerとMEMORIESも高速モード非対応ながらも起動できました。
お陰様で廃棄検討中のドライブが貴重なものになりました。ありがとうございます。
対応/非対応ソフトは大体YSSCSICD.SYSと同じなのですね。
RAYXANBERは起動FDを作ればいいだけですね。
2022-02-23 22:11:11
動きましたか!よかったです。
ちなみに、RAYXANBERは直接起動は難しそうです。INT 93H AH=05H CH=FFHでCDの特定の部分をがばっとメモリに読み込むのですが、リアルモードメモリに読み込む影響で、A0000Hを超えて読み込むのですが、ぎりぎりIPLがYSSCSICD.SYSを残していくB0000Hは破壊しないものの、YSSCSICD.SYSがB0000H以上を占領している影響でIO.SYSが使う領域がA0000H付近まで下がってきてしまっていて、これが破壊されてしまっているというものでした。
IPLから起動した場合、確保できるメモリのGranurarityが64KBなのでYSSCSICD.SYSが64KBも取ってしまうのですが、起動FDを使うとYSSCSICD.SYSはそんなに大量のメモリを消費しないので(64KBが大量の時代だった!)多分大丈夫ではないかと思います。
2022-02-23 22:55:26
プログラマーの心理というのはおもしろいもので、RAYXANBERの対応は多分難しそうですとタイプしたその瞬間、解決方法に気づいてしまいました!
IO.SYSの初期化を呼び出して、その後YSSCSICD.SYSインストールのために処理をインターセプトした時点でMSDOS.SYSは既にプロテクテドモードメモリからDOS領域にコピーされているので、探してパッチ当てればいいんじゃね?ということに気づいて、ENDMEMがYSSCSICD.SYSの直前に来るようにパッチを当ててみたところ、津軽上だと救難IPLから起動してRAYXANBER起動できました!上と同じURLにとりあえずバイナリを上げたので、よかったらお試しください。時間の都合でまだ実機テストできてません。ひっかかりそうなのは、RAYXANBERはCDDA再生の最後のフレームまで再生しないと次に進まないように書いてあるので、実機でそこでひっかかる恐れはあるのですが、ただ、「黒い画面で止まる」とのことだったので、そこは通過してそうな気がします。
津軽開発の大きな目的のうちのひとつが実機動態保存だったので、本領発揮です!「津軽開発」って書いたら地元の土建屋さんみたいな響きになってしまった。
2022-02-24 08:39:19
先程、救難IPLでのRAYXANBER、CXとHCでFAST/NORMAL起動確認しました!
起動デモが出たときは感動でした。こういうことを思いつけるなんて凄いです。
CXは一度CD-ROMが使えなくなったのを調整してまして、HCもたまにCDドライブから異音がしていたので、
これはニコイチも考えなければいけないかと思っていたのですが、SCSIのCDを使うことでまだまだ使えそうです。
これで捨てずに動態保存する人が増えたら良いなと思ってしまいました。
お忙しい中、大変ありがとうございました。
2022-02-24 20:08:54
動きましたか!良かったです。実機での動作を確認していただき、ありがとうございました!引き続き、どんどん実機も救難しましょう!
2022-02-24 23:33:40
> 108
実在するかと思って調べたら、津軽開発も津軽建設も存在しますね(^_^;)
そういえば、副作用(?)で、パッチを当てたバージョンのぷよぷよがゲームオーバー後にクラッシュする問題が解決したようです。それから、昨日のバージョンだと起動メニューで青森県マップが消える問題が出てたので、今GitHubに上げたバージョンでは青森県地図は消えなくなりました。
さきほど、明日の展示に備えて新バージョンIPLの動作を実機MXでも確認したので、大丈夫そうですね。
2022-02-26 13:00:31
私もFD用のIPL版をダウンロードさせてもらいまして、
パッチ無しのRAYXANBER、SNのFASTモードでコンテニューしまくりのエンディングまで確認できました!
HR、Fresh、SNの全部で内蔵CDが読めなくなっていて落胆していましたが、IPL版は内蔵CDと同じような感覚で使えて有難いです。
互換モードでもCDの読み込みが速く、これが快適でお気に入りです。
ありがとうございます!
さらなる好奇心からFDIMAGE.BINの1MB分をSRAMのICカードに書き込んで、ICカードだけを挿した状態でリセットしたところ次のメッセージが表示されました。
FD BOOT
SECTOR READ ERROR!
途中までは読んでくれているみたいです。
2022-02-26 14:26:48
FD IPL試していただきありがとうございます!
ICメモリカードからの起動は検討したのですが、今となってはICメモリカードの入手が非常に困難で、PCMCIAカードで置き換える実験も失敗に終わったので、結局断念しました。
コネクタさえ手に入ればPCMCIAカードの自作も考えたのですが、もうコネクタも手に入らないありさまなんですね。実はICメモリカードから起動できるとフロッピーディスクドライブもだめになっていても起動できるというメリットがあるのですが。
2022-02-27 06:26:15
なるほど、そのような経緯があったのですね。
32KB~256KBのICカードなら安く見つかるかなと、オークションサイトなどで探しましたが仰る通り全然売っていませんでした。
ふと思い出したのですが、Windows2000以降でICカードを読み書きする方法が分からなくて、Windows98環境を長らく残していました。
フロッピーディスクドライブの破損はこれからの心配事ですよね。
私のHRのフロッピーディスクドライブはコンデンサが液漏れをしていました。
運良く?壊れる前にコンデンサ交換が間に合ったようで、今も動作していますが要注意ドライブだと思いました。
2022-02-28 02:12:55
フロッピーディスクの破損は心配なのですが、HRであればCDIMAGE.ISOを焼くことで、SCSI CDから直接起動ができると思います。起動メニューが出たらCDを入れ替える必要がありますが、これを使うと内蔵CDもフロッピーディスクドライブもどっちも動かないTOWNSでもある程度のCDソフトが起動できてしまいます。こういう道ができたこともあって、ICカード路線は断念したのですが、最初の3世代のTOWNSはハードディスク以外のSCSIデバイスははじいてしまうので、ICメモリカードと互換性のあるカードを生産する方法ができると最初の3世代を救済するブートローダーも作れるのですが。あの特殊なコネクタ形状が厄介ですよね。
2022-02-28 11:18:30
>112 aochanさん
>113 山川機長さん
PCカードのコネクタ自体は現在でもなんとか入手できるとは思いますが、メーカーとしては生産終了品となっている事が殆どなので在庫限りなのではないかと思います。
また、コネクタ自体は入手できてもハウジングがほぼ入手できないのでこちらも困りものです。
以前、PCカードに関してあれこれやった時にSRAMカードは当然ながら、CF-PCカード変換のカードでCFカードへの読み書きは出来ることが判明しています。
ただし、CFカードの全領域ではなく64MB(だったと思います)に限定したアクセスとなります。
また、これらの変換カードについてはTYPE2カードとなりますので、実質的にタワーモデルのTOWNSにしか装着することが出来ません。
(デスクトップタイプに関してはスロットの穴を加工すれば入りますが、それは流石にやりたくないので)
PCカードからの起動に関してはCAR MartyのPCカードが役に立つと思っています。 これは、ROMカードとRAMカードのハイブリッドタイプなのですが、起動はこのカードより行うようにデザインされている関係で、起動に関する各種情報が詰め込まれていると思っています。
2022-03-01 09:51:09
おお!なんと!CF-PCカードでアクセスできましたか!TYPE2であればMXのスロットには入ると思います。成功したCFカードアダプタとCFカードの製品名わかりますか?こちらではSanDiskのPCカードCFリーダーと、SanDiskの32MBのCFカードを使ったのですが、失敗に終わりました。IPL自体は津軽上で開発できるのでICメモリカード用も作ってみようかな。
2022-03-01 13:51:48
MXのカードスロットってTYPE2でも刺さったのですね、盲目的にTYPE1しか入らないと思っていました。 じゃあHCでも刺さりますね。
って、以前に行った検証時の自分の発言でHCでCFカードアダプタやマルチカードアダプタをHCに刺してるでは無いか・・・・
上記のカードアダプタや使用したカード類の形番などの詳細は調べておきます。 もう一度再検証する必要が有りますね。
当時もそうですが、ソフトはOSASKの物(PCCTOOL)を使用しての検証です。
ここで、朗報を一つ。
昨日自分の発言も有り、「CAR MartyのカードをHCでブート出来るのでは?」を思ったので実際にCAR Marty付属のカードをHCのスロットに刺してブートしてみました。
結果は無事に起動できることが判明しました。(HCは互換モード)
残念ながらナビ研のCD-ROMが無いので起動画面で「ナビ研のCD-ROMでは無い」とのメッセージが延々と表示されたままですが、間違いなくカードからのブートが可能であると証明できた事には違いは無いと考えます。
このカードのIPL部分を解析すれば具体的な方法論も導けますが、肝心のPCでPCカードを読む方法を先に作らないと駄目ですね。
2022-03-02 10:26:45
以前に動作確認したCFカードアダプタとマルチカードアダプタは以下のものです。
・BUFFALO PCcard adapter BSCRCFA
・SANWA SUPPLY 4in1Adapter ADR-MSSMK
CFカードはBUFFALO RCF-X 32MBを使用しましたが、マルチカードアダプタに使用したSDカードはどれだったかは不明です。
もう一度PCCTOOLを使って実験してみたいと思います。
2022-03-02 22:38:17
>113 山川機長 さん
> HRであればCDIMAGE.ISOを焼くことで、SCSI CDから直接起動ができると思います。
そうでした。その手がありましたね。
外付けだからCD-Rでも安定しそうです。
Web上では、RaSCSIを使うとCDイメージのマウントも出来る、との情報を何度か見ました(勘違いでしたらごめんなさい)ので、HRの救済パターンは色々ありそうでありがたいです。
>116 WINDY さん
>MXのカードスロットってTYPE2でも刺さったのですね、
こちらでも試してみまして、HR、初代FreshもTYPE2が入りました。
私の方ではWindows98で認識しないICカードの読み書きは、ICMCユーティリティ(オアポケ3などFBIOS用)を使用しています。
ハードディスクが必要になりますが、もしお困りでしたらお勧めです。
2022-03-02 23:25:18
おお、そうですか!そうであれば、ICメモリカード用IPL作ってみます!
2022-03-03 03:43:55
作りました!前と同じディレクトリですが、ICMIMAGE.BINです。
https://1drv.ms/u/s!AmlM0OLrEo8vgf0po83HPQRGzoerVQ?e=teGcsv
Towns OS V2.1 L20が起動しないと思ったら、IO.SYSがバグってますね。DiskBIOSのAL=40hが来た時、物理アドレスのベースをC2000000hとするべきなのですが、IC Memory Cardが入っていたらC0000000hにしてしまいますね。おそらくIC Memory Cardが入った状態ではTowns OS V2.1 L20は起動しないように思います。
なお、JEIDA4カードと判定されてしまった場合はSYSROMが読み込まないので、JEIDA4より前の古いメモリカードと認識させる必要があります。
もうひとつ興味深かったのは、TownsOSが起動した後はICメモリカードのDiskBIOSのデバイスIDは50Hを使うようなのですが、SYSROMだと4AHを使うようでした。4AHがTownsOS起動後も使えるかどうかは試してないですが使えそうな気がします。
それから、コネクタDigikeyで売ってますね。一個$6で売ってたので、うまく差し込めるように基盤を作ることさえできればTOWNS救済カードを生産することは可能な気がします。CFカードで済んでしまえば一番楽ですが。
2022-03-03 14:52:19
もう対応されたのですね。早い!
こちらでも動作確認できました。
ICカードブート、これはカッコいいです!
富士通の1MB ICメモリカードへ書き込みリセットしたところ、
ICメモリカードを読み込み、IPL版のメニューが表示されてカウントダウンが開始されました。
その間にCDをセットして、外付けCDドライブからの起動が出来ました。
ソフトの確認の方は、Towns OS V2.1L31、L50、L51が起動して、仰る通りL20は起動せずで、
ゲームはRAYXANBERとThe Manholeが起動しました。
ICMIMAGE.BINは2MBありますが、データは74KB付近までみたいなので128KB以上のICメモリカードであれば大丈夫ですよね?
ICメモリカードIPL版ですと、FD+CDのゲームでFD入れ替えの手間が省けそうですね。
2022-03-03 22:33:34
>120 山川機長さん
>121 aochanさん
私の手持ちのCFカードアダプタやマルチカードアダプタでは駄目な模様です。 「システムが違います」と表示され内蔵HDDから起動しました。
これはJEIDA4カードと判断されたものと考えられます?
256KBのSRAMカードも持っていますが、それは恐らくaochanさんと同じで正常動作する物と思います。
CFアダプタやマルチカードアダプタが使えれば非常にラッキーだったんですけど、SRAMやリニアフラッシュのPCカードは新しく購入出来ないですし・・・・
Digikeyで$6・・・ やってみる価値は有るかもしれないなぁ・・・
2022-03-03 23:13:54
そうですねえ、これができたら2Fも救えるか?と、思ったら2FはICメモリカードから起動できないっぽいですね。ショートカットICMで起動してくれませんでした。CDIMAGE.ISOで起動できることを考えると、興味以上の価値は無いかもしれません。うーん、20Fは微妙かな。20FのSYSROMがSCSI CDから起動できるのかどうか疑問なんですがね。あとは、ぼちぼち救難IPL動作確認リストとか欲しくなってきますね。(他力本願)
2022-03-04 12:19:49
> aochanさん、
そうですね。使ってるのは最初の部分だけなので小さいやつでも使えると思います。
PCMCIA CFカードのピン割り当てを見たのですが、これってPCカードのピンの一部がそのまま出てるみたいな感じなんですね。なんとかJEIDA4以前の仕様のカードと誤認させることができればCFカードからの起動もできるのではないかと思うのですが。どのピンを参照してJEIDA4またはそれ以前と認識しているのかわからんですね。もしもCFアダプターはPCMCIAのピンの一部をCFカードに出してるだけなのであれば、うちの環境でしくじったのは32MBのメモリカードではだめだったという可能性がありますね。ひょっとすると16MBより上のアドレスピンがつながってなくてエラーになっていたのかもしれません。今どき4MBとか2MBとかのCFカードを探すのが難しいんですが、ひょっとすると小さいCFカードを入手すると読み書きできるのかな?
2022-03-05 12:42:17
ゲームソフト数本をSNにて少しチェックしてみました。
ICカード版の方は、
マッドストーカー、ワーズワース、同級生、ジェノサイドスクェア、モンキーアイランド、カルメンサンディエゴを探せで起動せずでした。
マッドストーカーだけ起動時にTownsOS V2.1L20と表示されますが、他はゲーム側からのメッセージが表示されないままでした。
ICカードのデータが壊れた可能性を考えて、先日問題の無かったThe Manhole、TownsOS V2.1L31を試した所こちらは起動しました。
ワーズワース、同級生については、先にTownsOS V2.1L31を起動し、CDを入れ替えてAUTOEXEC.BATを実行することで起動しました。
モンキーアイランド、カルメンサンディエゴを探せについては、TownsOS V1.1L20を起動し、CDを入れ替えてアイコンをクリックすることで起動しました。
これら6本のゲームは、FD用IPL版では起動します。
不思議なことに、IPL起動用のICカードを挿した状態で、F+0リセットでFD用IPL版から起動した場合はこれらゲームの起動に失敗します。
ICカードを抜いた状態でFD用IPL版を使う必要がありました。
以降はFD用IPL版で動作確認を続けました。
FDIPL版での状況報告です。
〇ワーズワース、同級生、ドラゴンナイト4、モンキーアイランド、カルメンサンディエゴを探せ、ガンダムハイパーデザートオペレーション
オープニング→少しプレーして問題なさそうでした。
〇マッドストーカー
ステージ1開始1秒後あたりで固まります。
機種をHRへ変更すると2面途中まで問題なくプレー出来ました。
1ステージが長いので途中でCD-DA音楽が終了します。
〇ジェノサイドスクェア
1の方は中盤のカニを倒すところまで、
2の方はエンディングまでプレーしました。
動画開始直後や各ステージ開始直前のCD読込中はBGMがスローになります。
ステージ開始はCD読込完了後からなので、ゲームプレーへの影響はありません。
〇ふしぎの海のナディア
少しだけプレーしました。
会話時に左右のスピーカーから別々のCD-DA音声(片方は正しい音声で、もう片方は関係ない音声)が同時に出力されます。
また、CD-DA音声再生時はBGMがスローになります。
〇ミラージュ
オープニング→少しプレーしました。
CD-DA音声再生時にBGMがスローになります。
〇ダークサイドオブジーン
オープニング→少しプレーしました。
場面切り替え(CD読込)時にBGMがスローになりますが殆ど気になりません。
〇ビューポイント
ステージ2のボスまでプレーしました。
ステージ1、2共にボス場面でBGMが切り替わりませんでした。
2022-03-05 16:12:56
テストありがとうございます!Towns OS V2.1 L20に関しては、IO.SYSがバグっていて、ICメモリカードが刺さっているとROMドライブからMSDOS.SYSを読み込まないようです。INT 93H AH=02Hの実装が間違っているようなのですが、起動時しか使われていないようなので、起動中にIO.SYSにパッチを当ててバグを回避するようにしました。↓のURLにアップロードしました。(同じURLです)
https://1drv.ms/u/s!AmlM0OLrEo8vgf0po83HPQRGzoerVQ?e=WSMiJ6
2022-03-06 00:40:46
早速使わせてもらいました!
マッドストーカーが動作するようになりました。
他のゲームは変化なしです。
また、SNではマッドストーカーのゲーム開始直後に固まると書きましたが、本体後ろのマウス設定スイッチで本体ポイントデバイスを無効にすることでプレー可能になりました。
ICカード版で起動しなかったモンキーアイランドはTownsOS V1.1L30を使用していましたので、同OSの起動を試したところ、こちらも起動しませんでした。
2022-03-06 11:29:30
ICカード版での動作可否を大雑把にグループ分けしてみました。
IO.SYSにあるMS-DOS V3.1またはTownsOS V2.1の文字列の次の文字列で分けました。
MS-DOS V3.1の場合
番号、次の文字列、Mのアドレス、ICカード版動作可否、ソフト名
①、L23、10060h、可、TheManhole,達人王,RAYXANBER
②、L30、EE44h、否、TownsOS V1.1L30,クラウズオブジーン,モンキーアイランド,同級生
③、L33、F3BDh、否、ミラージュ,ガンダムハイパーデザート
④、L35、F9E5h、否、ジェノサイド,ワーズワース,ドラゴンナイト4,ダークサイドオブジーン
⑤、L35、1058Fh、可、サイベリア(TownsOS V2.1 L50Aが起動)
TownsOS V2.1の場合
番号、次の文字列、Tのアドレス、ソフト名
⑥、L20、1594Dh、可(今回のバージョンで動作)、TownsOS V2.1 L20,マッドストーカー
⑦、L31、15943h、可、TownsOS V2.1 L31
⑧、L50、15B44h、可、TownsOS V2.1 L50
⑨、L51、15B44h、可、TownsOS V2.1 L51
2022-03-06 13:13:25
おおなるほど!V1.1L30もICメモリカードバグが入ってるんですね!確認しました。まったく同じバイト列だったのでおそらく同じアセンブリコードなのでしょう。ということで、V2.1L20をチェックするのでなく、特定のバイト列 (PUSh DX / MOV DX,048AH / IN AL,DX / TEST AL,06H / JNE +44h / PUSHA / MOV BX,C000H) を探してパッチを当てるように修正しました。津軽上ではICMからV1.1L30, Geno^2が起動することを確認しました。多分実機でも起動すると思います。
同じURLにアップロードしたのでよかったらお試しください。
2022-03-06 13:23:09
いけました!下記ソフトのオープニング付近までの確認ですが、FD用IPL版同様に起動しました。
RAYXANBER
クラウズオブジーン,モンキーアイランド,同級生
ミラージュ,ガンダムハイパーデザート
ジェノサイド,ワーズワース,ドラゴンナイト4
マッドストーカー
このままICカード挿しっぱなし運用をしようと思います。ありがとうございます!
HDDを登録していないせいか、ICMキーを押さなくても最優先で起動してくれるので使いやすいです。
2022-03-06 16:22:28
>123 山川機長さん
WIKIの方にリストを作成してみました。
>130 aochanさん
確認、ご苦労さまです。
取り敢えず確認リストには山川機長さんの救済IPLプロジェクト内のリストとaochanさんのリストを加えておきました。
間違いなどが有れば訂正または本掲示板上でお知らせください。
2022-03-07 13:19:34
FD+CD構成のソフトの検証があまり出来ていませんでしたので、The Legend of Kyrandiaを試しました。
FDから起動するゲームなので、ICカード版IPLメニューを立ち上げて、
FD起動を選択すると、FDを読み込んだ後に画面が真っ暗なまま止まりました。
FD用IPL版ですと、「レジェンドオブキランディアのCDをセットしてマウスボタンを押してください」と表示された所から進みませんでした。
FDにはTownsOS V2.1 L20のシステムが入っていました。
JEIDA3.0と4.0の違いの検出ってどうやってるのでしょうね。
赤本では、I/O 0491h メモリカード属性レジスタのBit7について「サポートするメモリカードが JEIDA Ver.4 規格のものであることを示す」
と書かれていて疑問が深まってしまいました。
3.0と4.0の違いは、ICカードの54番ピンA24、56番A25、61番/REGしか無さそうと予想していますが、フォントやFM-NOTEBOOK用など色々なICカードを試せばBit7の値の異なる物が見つかるのかな。
>WINDY さん
ありがとうございます。
CD読み込み中やCD音声再生時にBGMが遅くなることに関しては〇扱いで良いですか?
ほんの少ししか操作していないソフト多数ですが、
リストに名前があってFD、ICメモリカードで〇のソフトは
TownsOS V1.1 L20
TownsOS V1.1 L30←ICMCでは新バージョンで〇になりました
TownsOS V2.1 L20←同上です
TownsOS V2.1 L31
TownsOS V2.1 L50
TownsOS V2.1 L51
RAYXANBER
リストに名前が無くてFD、ICMCで〇のソフトは
アルシャーク、カルメンサンディエゴを探せ、ザマンホール、ダークサイドオブジーン(CD起動のみ確認で、付属FDから起動するHDDインストーラー兼ワールドオブジーン化ツールでCDを読めるかは未確認です)
リストに名前が無くてFD、ICMCで今のところ×のソフトは
サーク2、スカベンジャー4、パラメデス、プリンスオブペルシャ
FD、ICMC共に注意点ありで〇のソフトは、
達人王、ビューポイント、プリルラ
この3本はボス対戦直前にBGMが切り替わるはずなのですが、切り替わらなくて、
プリルラに関してはキャラクター選択画面でもBGMが切り替わりません。
ですが、ゲームプレー自体は問題なく可能です。
この3本ってCDISC2で動作しなかった(私が設定ミスした可能性あります)記憶がうっすらあります。
2022-03-07 23:39:14
>WINDYさん、aochanさん、
早速ありがとうございます!それで、ソフトウェア対応リストの下に確認済みCDドライブのリストを追加しようとしたのですが、このIPは禁止IPに該当しています、と言われてできませんでした。うちのPCが何かやらかしたのかと思ったのですが、大学のIPアドレスからもできなかったので、ひょっとして海外からのアクセスが遮断されているとか?この設定ってWINDYさんの方で変更できますか?wiki3.jpの制限だと何か別の手を考える必要がありそうですが。
2022-03-08 01:18:39
>133 山川機長さん
あれ? おかしいですね。スパム対策としてある程度の規制の設定は行っていますが、その殆どはcnドメインで、山川機長さんの使用しているIPに関してはリストに有りませんでした。
一時的に除外リストから全てのIPを取り除き、ruドメインとcnドメインのみ除外する設定としましたのでもう一度チャレンジしていただけますでしょうか?
2022-03-08 09:01:16
>132 aochanさん
報告の方、有り難うございます。
BGM再生やスローになる物に関しては各個人の感性により、耐えられない人もいれば問題ないと思う人も居ると思いますので、今のところは○で備考欄に記載しました。
JEIDA4やJEIDA4.1の資料は持っているのですが、JEIDA3に関しては古すぎて資料が有りません。 従ってJEIDA3→JEIDA4の規格上の差が何なのかハッキリと解らないのですが、ふと「JEIDA3って事は、NEOGEOもだったなぁ」と考えが浮かんだので回路図を見てみました。
その結果JEIDA3とJEIDA4では信号線名上の違いは無く、基本的にJEIDA3でピン数の違うメモリカードを併記していた物を68ピンのメモリカードのみに統一した程度ではないかと思われます。
また、アトリビュートメモリ用の信号線である68ピンのREG信号も存在することから、JEIDA3とJEIDA4の判別はアトリビュートメモリのデバイス情報か製品情報タプルを参照している可能性が高いと思います。(製品情報タプルには仕様バージョンが存在)
赤本だとメモリカードに関しては、そのハードウェア構成等の詳細が全く記載されていませんが、SYSROMでメモリカードのアトリビュートメモリを参照していないのであれば簡単な外付け回路が存在する可能性も有りそうですね。
こうなると、JEIDA4のカードをJEIDA3のカードだと思わせる事は一筋縄では行かないような気がします。
2022-03-08 09:57:34
wiki書き込めました!ありがとうございます!
しかし、JEIDA3の判別はアトリビュートメモリですかね?アトリビュートメモリの内容は書き込んである順番も決まってなくて、割と複雑な回路を組まないとバージョンにたどり着けないような気もしますが、謎ですね。
2022-03-08 12:45:45
>136 山川機長さん
wikiに書き込めてなによりです、取り敢えずは現状の設定でスパムが酷くなるようでしたらまた考えようと思います。
メモリカードにはそんなに詳しくは無いのですが、仰る通りアトリビュートメモリに関しては決め打ちではなく、タプルを辿らないと正しく判断できないのが欠点であり、柔軟性でもあると思います。(素人の仕事ではなく製品に関わる仕事で、まさか決め打ちは無いと思います)
同じJEIDA3のスロットを持つNEOGEOの回路図を見る限りでは、ピン配置や信号線名はJEIDA4と同じで有ることからその様な判断方法しか無いのではないかと思う次第です。
本当は68ピンの波形を計測して、アトリビュートメモリにアクセスしているかを見るのが一番なのですが・・・ CD-ROMエミュレータ用の波形を見ていた関係でMXのメインボードを追っかけようと考えていましたので、そのタイミングにでもメモリカード関係の回路や波形は見てみようと思います。
あ、それと 「JEIDA4と判断できないモデル2だと、奇跡が起こるかも?」と思ったのでモデル2でも救済IPLをメモリカードに入れて起動してみましたが・・・
・CDカードアダプタ,マルチカードアダプタ共に 「システムが違います」との表示でメモリカードからはブートできず。
・CarMartyのメモリカードでは正常起動していると思われる。
と、言う結果となりました。 残念。
(CarMartyのメモリカードの結果は恐らく15KHzで出力していると思われ、使用しているモニターでの確認が出来ませんでしたが、CD-ROMチェックでNGとなりブザー音がスピーカーから定期的に鳴っていましたので、間違いなくブートは出来ています)
2022-03-08 23:42:32
なんと、NEOGEOのICカードスロットも/REGへは配線されていたのですね。
JEIDA3だとICカード側で/REG(H:コモン、L:アトリビュート)が接地されているのかと予想しましたが、違う気がしてきました。
(回路保護目的で/REGが接地されていたら遮断する・・・みたいな予想でした)
下記5種でICカードを挿したまま電源を投入しI/O 0491hを読んでみたのですが、bit7は0(JEIDA4対応)でした。
FM-NOTEBOOK用のOASYS V1.0L21(カードにICMCの文字あり)
FM-NOTEBOOK用のアシストパック(カードにICMC4.0の文字あり)
NECの1.25MBリニアフラッシュ
I-O DATAの256KB SRAMカード(カードにICMC4.0の文字あり)
TOWNS用のベクトル文字パターン
手軽にアトリビュートメモリを読んで確認する方法が分からなかったので、アトリビュートメモリの有無や内容はわかりません。
https://cpi-tec.jp/adtek/seihin/cardut/97table/index.html
こちらのサイトではリニアフラッシュの情報が掲載されていまして、三菱樹脂(株)の製品では20MBでアトリビュートメモリ無しがあるようです。
2022-03-09 01:24:39
実は、JEIDA3とJEIDA4の違いではなく、8-bit I/Fか16-bit I/Fかの違いという可能性ありますかね?Compact Flashの仕様に、8-bit I/FではD8~D15はNo-Connectionとあるのですが、結線が無いことを検出ってできるもんでしょうか?OutputだとTri-Stateはあると思うのですが、本体側でNo-Connectionが検出できるものかどうか?
2022-03-09 07:52:54
>138 aochanさん
おお~! 結構な量のメモリカードをお持ちなんですね、CX以降の機種についてはI/O0491hでREGを操作できるのでこれでアトリビュートメモリを選択したらC1000000H以降に内容が見て取れるような気がするのですが、違うのかなぁ?
>139 山川機長さん
JEIDA4.0時代の資料を見る限りでは、「基本は16bitアクセスなのですが8bitアクセスも可能」と記載されていますが8bit=JEIDA3なのかどうかはJEIDA3とJEIDA4の違いが解る文章が無いので判らないのですが可能性は有るかもしれません。
また、1995年版以降のカードとソケットでは、CardBus対応の為にCD1,CD2,VS1,VS2の4本を使用して16bitなのか,CardBusなのかを判断していると記載された資料が有りますが、それ以前での16bit/8bitの検出についての記載が無いことから詳細は不明ですが、CD1,CD2を使っているかもしれません。
ただし、他の文章ではCD1,CD2のコネクトを以てカードを検出したと判断せよとの記載も有る事からよく解らない状況です。
(CD = CardDetect, VS = VoltegeSenceかと思いますが、VSはJEIDA4.2で追加された機能)
NoConnectionの検出自体は、出力側であるカード側の処理によりLowまたはHiに固定しないとI/F素子の破損やデータが不安定となる事から、常にLowまたはHi状態にすると思います。
この状態ではNoConnectionなのか、データがLowまたはHiなのかが判断できませんので、通常はメモリチェックの様に特定パターンのデータを書いて、そのデータが書けているかをチェックする必要が有ります。 ハード的に検出するのは不可能ではないかと思いますし、通常は上記のCD1,CD2ピンを使った通知と同じような機構を採用すると思います。
2022-03-09 10:31:26
Discordの方で聞いてみたら、Oh!FM 1991年5月号に資料があるそうです! JEIDA3カードは最初のセクタにアトリビュートが書いてありますが、JEIDA4はREGビットを使ってアトリビュートとRAMを切り替えて読むということです!Oh!FM 1991年5月号誰か保存してます?
2022-03-09 12:21:31
>141 山川機長さん
なんと! そうでしたか、最初のセクタにアトリビュートが有るとは・・・ 想像できませんでした。
Oh!FM 1991年5月号ですが、Oh!TOWNS誌の全てとOh!FM誌の一部は持ってきているのですが、残りは実家という事実・・・・ 前の日曜日に実家に行ったのに暇だったので押し入れ漁りは程々にして寝ていたと言う不甲斐なさです。
実家まで車で1時間未満,通勤途中で通過する駅であると言う条件ですので、探してみようかと思います。 情報を有り難うございます。
と言う事は、最初のセクタがアトリビュートであればJEIDA4と判断するか、REGのHi時とLow時の内容の違いでJEIDA4と判断しているか、簡単な回路で判断しているとすればそんな所でしょうか?
2022-03-09 12:54:56
最初のセクタですが、メモリカード自体にはセクタという概念が無さそうなので、Oh!FM誌の記事のセクタというのが何を指しているのかが本文を読まないとわからんですね。例えば最初の512バイトがアトリビュートになっているとすると、ちょっとしたワンチップマイコンみたいなのを使わないと最初のバイト列がアトリビュートなのかまったく違うものなのか判別できなさそうですね。
赤本見直してみたら、REGビットはJEIDA4サポートのために追加されたビットなんですね。僕もネオジオのメモリカードのピン割り当てを見つけて、REGピンが出ていると書いてありましたが、実はPCMCIAの仕様をそのままコピーしてきた可能性もあるかもしれません。
aochanさんが普通にICメモリカードにイメージを書き込めてしまったということは、普通に使うときは最初のアトリビュートバイトは無かったことにしてメモリアクセスしているのではないかと思われます。これが本当であれば、ICメモリカードを刺して、C0000000Hをアクセスしたとき、アドレスバスにはアトリビュートのバイト数の分だけシフトしたアドレスが出てくるはず。
カードリーダーを自作できるといいんですけどね。68ピンか。。。。Raspberry PIだと足りんか。というか、僕はそもそもICメモリカードを持ってないんだった。
2022-03-09 14:00:32
>143 山川機長さん
確かにOh!誌を読まない事には進みそうに無いですね。
私が試したCFカードアダプタやマルチカードアダプタは確実にJEIDA4.1の物ですが、何も気にせずにSDカードやCFカードの先頭から救済IPLのイメージを書き込みましたのでJEIDA3では先頭からアトリビュートメモリが存在する事となっているのであれば、アトリビュートメモリだと思ってイメージファイルの先頭部分を読み飛ばしている事になります。
アトリビュートメモリの大きさや構造はOh!誌を読む事として、そのアトリビュートメモリの内容と同じものを救済IPLの先頭に入れてやればひょっとしたら起動できるようになるのかもしれないと僅かな希望が沸いて来ない訳がない心境です。
NEOGEOのREG信号はカードコネクタからASICに入っていますので、制御しているのかいないのかは不明ですが、常時Hiで使用している可能性も有ると思います。
将来的にJEIDA4対応する未来を想像して配線だけは行っておき、当面はREG信号を制御せずにJEIDA3として使用したのかもしれません。
JEIDA4対応のCX以降がどの様なプロセスでJEIDA3 or JEIDA4の判別を行っていたかは不明ですが、正攻法で行うならば仰る通りMCU等で行う必要が有りそうです。
ただし、ある程度の誤認識も覚悟の上で手を抜くとすると、アトリビュートメモリの先頭には必ずデバイス情報タプルが存在する必要が有る事から、これをチェックする方法が有りそうです。(タプルコード/01h,タプルリンクオフセット/??h,デバイスID/??h,デバイスサイズ/??h,デバイス情報終了/FFhの4バイト中2バイトは固定値)
2022-03-09 15:19:36
ICカードについてdiscordの方に投稿した者です。Oh!誌では「メモリの最初」という言葉だったのですが適切な英語が思いつかずセクタという語を当てていました。
Oh!誌の記事「ICメモリカードで結ぶTOWNS&R-CARD」(p.131)でもVer.3の属性情報は細かくは記載されておらず(Ver.3の資料が手元に無い、と書かれています)、ROMカードのダンプとその解析結果が掲載されています。Ver.3もVer.4もJEIDAの「ICメモリカードガイドライン」が国会図書館にあるのでそこで確認するのがよさそうです。
2022-03-09 19:11:49
ああ、日本の方だったんですね!英語ネイティブの人だと細かいところまで聞くのも難しいかと思ってあとはこっちでと思ったのですが、貴重な情報をありがとうございます! (Oh!FM誌を持ってるなら日本の人とわかるだろう、と思ったら英語ネイティブなのにある程度日本の本も読んでて不明な部分の質問をしてくる人いるから案外わからない)
国会図書館だとさすがにPDFとかダウンロードはさせてくれないのか。夏に帰省の予定だから、寄る時間を取れるかな。なお、メルカリ見たらNEOGEOのメモリカードが出てたんで買ってしまいました。ダンプできないか、やってみようと思います。
2022-03-09 22:56:45
FM-NOTEBOOK用のアシストパックは先頭にIPL1が書かれていて、TOWNSでICカードをフォーマットした時と同じくFAT12の1024バイト/セクタ扱いみたいです。
Windwos98のNotePCに挿して、ドライブとして認識される形式だった気がします。
アトリビュートの方はデバッガの使い方を調べて、メモリダンプに挑戦してみようと思います。
救済IPLの報告に変わりまして、
The Legend of Kyrandiaですが、起動FDにYSSCSICD.SYSを組み込んだ場合は動作しました。
また、20Fを発掘しまして、ICカード版救済IPLでザマンホールの起動ができました。
FD版救済IPLでは「メモリ不足で起動できませんでした」と表示され止まりました。
本体メモリは2MBです。
TownsOS V1.1L30の場合はFD版、IC版共に起動しました。
2022-03-09 22:58:18
Oh!誌は発掘しました。 あろう事か去年に実家に行った際に同月号の別記事である「INSIDE TOWNS」内の「CD-ROMサブシステムを解析する(基礎編)」が目に留まったのでサルベージ済みの物でした。
KtJ Dragonさんも書かれていますが、折角なので要約します。
・記事自体はR-CARDとの連携をメインに書かれており、R-CARDのメモリカードをTOWNSで読むためのデバイスドライバ"CARD.SYS"の使用方法並びにダンプリスト,ソースを掲載
・"CARD.SYS"で認識させたメモリカードに対するフォーマットは行えないので、フォーマットはR-CARDやNB1で行う
・上記でフォーマット済みのSRAMカードとROMカードの先頭部分のダンプを比較
・SRAMカードは先頭よりIPLが書き込まれている(R-CARDでフォーマットのため、先頭3バイトがジャンプ命令,次の8バイトに"IPL1 ",次の13バイトにBPB
・ROMカードは先頭よりアトリビュートが入っており、その内容は デバイス情報タプル(5バイト),レベル1バージョン情報(5バイト),レベル2属性情報(13バイト),フォーマット情報(22バイト),パーティション内容情報(7バイト)
※アトリビュートは8bitなので、偶数アドレスに上記のデータが入っています。
・ROMカードのIPLはオフセット0200hより始まっており、これは上記アトリビュート内のフォーマット情報のパーティション開始アドレスと合致
・JEIDA4の推奨するIPL構成は上記SRAMカードの構成,ROMカードのIPLはFMシリーズのIPLの前にアトリビュートが入っている
って事みたいです。 CFカードアダプタでのブートの希望が絶たれたような気がしてます。
2022-03-09 23:50:37
147 で誤りがありましたので訂正いたします。
> FM-NOTEBOOK用のアシストパックは先頭にIPL1が書かれていて、
先頭3バイトがジャンプ命令、その後にIPL1でした。
OASYSは先頭からORF1BBとなっていました。
2022-03-10 01:16:40
>145 KtJ Dragonさん
>146 山川機長さん
貴重な情報を有り難うございます。
国立国会図書館の所蔵図書については、遠隔複写サービスを用いればインターネットからの利用者登録及び海外への発送も可能との事です。
著作権の問題で書籍の半分以下までしか申し込めませんし、個人またはグループで複数回に別けて請求する事も著作権に触れるとの事ですが、目次のみの複写サービスが有るので1回目は目次を入手して、2回目で必要な部分を請求する方法が良さそうですね。 (ただし、処理に時間がかかっている様子なので手間と時間はかかります)
関西館だと遠くはないので取り寄せて閲覧するのも良いかなぁ
>147 aochanさん
救済IPLの動作確認リストを更新しておきました。
アシストパックはOh!誌記事のSRAMカードと同じですね。
TOWNSのIPLはメモリカード用救済IPLをSRAMカードにべた書きして動作確認をしていただいてますので、基本構造はアシストパックのカードと同じなのでしょう。
Oh!誌の記事中のROMカードが何のROMカードなのか記事中には記載がなかったのですが、アトリビュートメモリが搭載されていた場合は、先頭にアトリビュートが現れてその後にコモンメモリがくっついているイメージなのかなと思っています。
何れにせよ私が持っているCFアダプタやマルチカードアダプタは、TOWNS OSのICメモリカードとして認識しない事から、ブートには使えないと考えても良いかもしれません。
ただし、PCCTOLで読み書きが出来る事から実機とのデータやプログラムの受け渡しに使えると思っていますので、まずはPCCTOLでのアクセスと一般的なアクセスとの違いを明確にするのが先決かと思っています。 地道にやるしかないか。
2022-03-10 09:58:17
ICカードを挿した状態でメモリダンプしてみました。
旧TOWNS互換用のC0000000hはI/O 0491hのbit0(1:アトリビュート、0:コモンメモリ)の値に関わらずコモンの方が表示され、
bit0の値で内容が変わる場合があるのはC1000000hの方で、そのエリアを256バイトダンプした結果は下記です。
NECのリニアフラッシュの場合、
bit0の値が0の時、C1000000h~の内容はコモン、1の時はアトリビュート(カードの型番などが書かれていました)
JEIDA4.2のSCSIカード
bit0の値が0の時、C1000000h~はFFで埋まっている、1の時はアトリビュート(カードの型番などが書かれていました)
救済IPLを書き込んだ富士通のICカード
bit0の値が0の時、コモン(IPL4から始まる)、1の時はFFで埋まっている
ベクトル文字パターンとOASYS
bit0の値が0の時と1の時で表示される内容は同じでコモン(ORF1BBから始まる)
アシストパック
bit0の値が0の時と1の時で表示される内容は同じ
アシストパックですが、メモリダンプでは奇数バイトの値がFFになっていて、もしかすると8bit単位で読みだせばFFにならずに済んだかも?と思いました。
そのアシストパックは先頭から1FFhまでがアトリビュートと思われる内容で、200hからがジャンプ先、IPL1となっている雰囲気でした。
今まで使用していた読み込みソフト(多分ICカードドライバ経由)では、投稿147で書いた通りアシストパックは先頭からジャンプ先、IPL1となっていて、データ末尾の200h程度の範囲がアトリビュートと思われる内容で、今回のメモリダンプとはアトリビュートの位置が異なりました。
アシストパックのみ
今回のダンプ:C1000000h~アトリビュート、C1000200h~ジャンプ先+IPL1
今までの方法で作成したイメージ:000h~ジャンプ先+IPL1。1FFE00h~多分1FFFFFhアトリビュート(多分とした理由は1FFE67hからFFで埋まっているため)
> WINDYさん
ありがとうございます。
ザレジェンドオブキランディア
は救済FD(FD版IPL)と救済ICカード(ICカード版IPL)は共に×で、
ザレジェンドオブキランディアに付属するFDをバックアップし、そのFDにYSSCSICD.SYSをコピーしてCONFIG.SYSにそれを登録した物で〇となりました。
ザマンホール
こちらはSN(メモリ8MB)では救済FD(FD版IPL)と救済ICカード(ICカード版IPL)共に〇です。
メモリ2MBの20Fでは救済FD(FD版IPL)は×(メモリ不足と表示される)、救済ICカード(ICカード版IPL)は〇です。
(20FもICカードブートに対応していました、の報告のつもりでしたがメモリ2MBの環境で結果に差が出たのでその報告も兼ねました)
2022-03-10 22:24:52
>151 aochanさん
非常に興味深い結果です。
お時間が取れる時で構わないので2つ程確認をしていたいても構わないでしょうか?
1.それぞれのカードを挿した場合のI/O 0491hのVER4フラグ(bit7)の状態
2.アシストパックを挿した場合のC0000000h~とC1000000h~の内容が同じなのか
NECのリニアフラッシュカードとアシストパックで、恐らくは両方共にアトリビュートメモリが存在すると思われるのですが、その実装方法に違いがある事からこれがJEIDA3とJEIDA4の違いから来るものでは? と感じられます。
n数が少ないのでこれを以て断定するわけには行かないと思いますが、双方でVERフラグに違いがないのか調べて頂きたく思います。
また、SCSIカードはJEIDA4.2のI/Oカードですのでコモンメモリは持つ必要性は無く、動作的にはアトリビュートメモリの読み出し/解析→カード,ソケットのモード切り替えを行ってI/Oカードとして制御するわけですが、SNだと公式にJEIDA4.2対応なのでどこかのI/Oにカードコンフィグレーションレジスタが存在すると思うのですが、SNは希少なモデルですのでこの辺りの資料は出回っていませんので今のところは不明です。
2022-03-11 09:29:17
151の発言の後半部分に間違いが有りました。
カードコンフィグレーションレジスタはアトリビュートメモリ内に存在するようですので、別にI/Oが有るわけでは無さそうです。
2022-03-11 09:40:35
またDiscordの方で聞いたのですが、NeoGeoのメモリカードにOpen Source版が存在するそうです。https://github.com/neogeodev/NeoMemCard2 試しにこれを制作して、TownsがJEIDA3カードとして認識するかやってみようと思います。ここに上がってるSchematicはNeoGeoの制限で多分16KBまでしか認識しないらしいので32KBのFRAMを16KBずつのふたつに分けて切り替えて使うようになってますが、Towns用に作るんだとA14を普通につなげて32KBになると思います。あとは、このSchematicで使ってるFM18W020というチップはもう売ってなくて、FM18W08というやつで代用しないといかんのですが、多分互換性がありそうです。PCMCIA Extenderがあるので、できればプロトタイプはDIPでSolderless Breadboardでやりたかったんですが、DIPのFRAMはちょっと高すぎますね。SRAMだと、Chip Selectがふたつあるのがいまいちなぜなのかがよくわからない。
これが成功したら、単純にFRAM 128KB搭載したカード(ちょっとロジックが必要になりますが)作ればIPLには十分ではないか、という気になってきてます。
2022-03-11 14:48:48
>154 山川機長さん
おお、OpenSource版でメモリカードまで有るとは。
アクセスタイムが130nsなので、16MHzだと3ウェイトくらい必要かと思いますが、どうなんでしょう?
なお、SRAMでCE1,CE2が有る物はチップを複数使ってバス幅やメモリ量を拡張して使う際に使用します。
1チップで使用する場合は通常CE1をLowにCE2をHiに固定しても大丈夫です。
2022-03-11 17:38:02
>WINDYさん
検証済みでしたのでご報告いたします。
>1.それぞれのカードを挿した場合のI/O 0491hのVER4フラグ(bit7)の状態
どのカードを挿した状態でもbit7は0のままでした。
なのでbit0の変更も可能です。
>2.アシストパックを挿した場合のC0000000h~とC1000000h~の内容が同じなのか
bit0の値に関わらずC0000000h~とC1000000h~の内容は同じでした。
(先頭から256バイトと200h~128バイトのみ目視確認)
先ほどHRにアシストパックを挿して試したのですが結果は同じでした。
JEIDA3.0とは一体何者なのだろうか。
SNとHRではI/O 0491hのbit1~6の値だけ異なっていました。
SNでは全て0、HRは全て1。
SRAMの/CE1,CE2は電源OFF時にバッテリーバックアップ側へ切り替えるのにも使えた気がします。
2022-03-11 21:44:50
>156 aochanさん
確認有り難うございます。
結果を見る限りaochanさんの持っているカードは全てJEIDA4って事ですか。
アシストパックだけアトリビュートの見え方が違うのでJEIDA3であって欲しかったところですが、謎が深まってしまいました。(汗)
私の持っているSRAMカードとCarMartyのカードはどうなんだろう? やってみたいがFDが動くかなぁ
SNとHRでI/O 0491hのbit1~6の値が異なるのも気になりますが、赤本上は不定なので何かの仕様変更がSNにはあったのかな?
SRAMのCE1,CE2はその様な使い方も有るのですね、調べたらinfineonのサイトに資料が有りました。 なるほど!
2022-03-11 23:25:20
おおなるほど!ということは、起動可能/不可の違いはJEIDA4、JEIDA3の違いではないということですね。JEIDA4カードの最初の16MBはC0000000hにも出てるということでしょうか。わざわざJEIDA3用、JEIDA4用でC0000000h、C1000000hと分けていたことから、アドレスバスに出し方が違うのではないかと思っていたのですが、C0000000hから読むときはアドレスバスの16MBより上の2ビットは常に0、C1000000hから読むときはI/O 490hで指定した2ビットを上位に追加することにしたのだろうか。だとするとC1000000hの存在意義がよくわからんですね。津軽では、JEIDA3、JEIDA4でイメージをマップする先を切り替えていたのですが、JEIDA4カードだった場合両方にマップするようにしたら普通に起動しますね。起動中にbrkon ior 490, brkon ior 491としてみたのですが、読んでないのでたしかにJEIDA4フラグチェックしてないですね。
だとするとデータバスを8ビットだけ使うと単に偶数バイトにデータが出てきそうですね。(というか、昨日メモリカードが夢に出てTownsでダンプとったら偶数バイトが全部0で機数バイトが全部FFになっててがっかりしたという夢だった。)
FRAMのウェイト問題ですが、刺さってくるメモリカードのスピードがわからない以上、結構なウェイトがかかっていたのではないかという希望的観測を持っているのですが、そうでもないものでしょうか?しかし、DIPのFRAMが安く買えないもんだろうか。
なお、DiscordのInvitationをここに貼ってよいものかわからんので、Discordにも参戦したい方はメールください。
2022-03-12 00:01:19
もう一点気が付いたんですが、IPLをICメモリカードから読み込むとき、MOVSDを使ってるんですね。プロテクテドモードで、物理メモリ全体を単純にDS,ESに割り当てて、次の命令で転送してます。
0010:00002F98 F3A5 REP MOVSD
しかし、JEIDA4の仕様だと16ビットアクセスが限界なので、最低2度の読み込みが必要な計算になります。なので、CPUとメモリカードの間に確実に何か挟まってますね。
それから、NeoGeoのメモリカードのスキマティックを見ると、単純にPCMCIAコネクタのアドレスバスに対応するバイトを返しているので、この構造だとアドレスバスがA0~A25で、64M個アドレスできる計算になります。問題は、それぞれのアドレスのデータが16bitなのか8bitなのかという点なのですが、NeoGeoのカードのSchematicを見ると8ビットで返しているので、結構8ビットである可能性もありそうな気がしています。SRAMを使う場合、CE1,CE2は固定でもOKということなので、試しにSRAMチップで実験してみようかなという気になってます。
2022-03-12 09:02:49
私の持っているICカードでは、I/O 0491h のbit0が0の時
C0000000hとC1000000hは同じ内容
bit0が1の時はICカードの種類によって同じ内容の場合や、C1000000h側にアトリビュートまたはFFで埋っている場合もあるといった感じです。
マーティーですと、00D00000hがI/O 0491h のbit0の値によってコモン/アトリビュートが切り替わりました。
装着されているICカードが16bit/8bitのどちらに対応しているのか、どうやって判定するんだろう??
それとも判定などせずに、IPL読み込み時はMOVSDで何らかの変換が入って16bit固定転送、ICカードドライバ経由だと8bit固定なのでしょうかねぇ。
8bit接続でIPL起動が出来れば、費用が抑えられて有難いところですね。
2022-03-12 22:52:46
というわけで、部品オーダーして、回路図を書いてみました!手元にPCMCIA Extenderが一枚残っているので、その先にとりつけて実験しようと思っています。
僕はプログラマーなので、果たしてこの回路図で正しいのかまったく自信がありません!KiCADのSchematicを↓に上げたので、誰か暇な人がいたら、良かったらコメントください。
https://1drv.ms/u/s!AmlM0OLrEo8vgf4SrfYY3ldxu0VIJw?e=ZT3dR0
ちなみに、まだ一度もSurface Mountのはんだ付けをした経験が無いので、68-pin PCMCIAコネクタが初挑戦になります。
2022-03-13 14:57:26
この機会に新しい経験をと思い、KiCADをインストールして回路図を拝見させて貰いました。
基板のデータと回路図がありますが、どちらか片方を作ればもう片方は半自動で生成される、なんて都合のいい話はあったりしますか?
私の妄想が多いので、どなたか何かお気づきの点がありましたらコメント下さればと。
この回路ですと、#CE2がSRAMに接続されていないので、8bitアクセス時に奇数アドレスの読み書きが出来ない気がします。
8bit偶数時 #CE1:L #CE2:H
8bit奇数時 #CE1:H #CE2:L
16bit #CE1:L #CE2:L
こんな感じだと予想しています。
ICカードを8bitで奇数アドレスを読み書きする場合、D0~D7でデータ入出力が行われたと思うので、
16/8bit両対応とする場合は、#CE2を使用しつつ間にマルチプレクサが必要なのかなと思いました。
イメージ書き込みも含めて、16bit読み書き専用とするなら大丈夫そう。
半田付け箇所が多いから大変なやつですよねこれ。
2022-03-13 22:19:29
すみません、訂正いたします。
8bit偶数時 #CE1:L #CE2:H
8bit奇数時 #CE1:L #CE2:H
16bit #CE1:L #CE2:L
2022-03-14 02:40:24
16bit/8bitは曲者かもしれないですが、マルチプレックスしていたとすると8本のピンをCE2の状態によってD0-D7に出すかD8-D15に出すか切り替えなくてはならないし、PCMCIAの中に実装しようと思ったらそんなチップあったのかな?という疑問があったりするので、案外CE2をH固定で8ビットアクセスしているのではないか、という気もしています。まずは実験して結果を見ようかと思っていますが、少なくとも意味のある結果が出てくるレベルにはなってないといかんと思って、デザインを何度も見直しているのですが。
ところで、
https://www.digikey.com/en/products/detail/hirose-electric-co-ltd/IC1F-68RD-1-27SH-52/1025084
これ、製品のとこに書いてある図のビットマップから計算すると、PCBの厚さは大体0.9mmぐらいと思ったのですが、データシート見てたら0.4mm~0.5mm推奨って書いてあることに気が付いて、ちょっとひどいと思いません?日ごろ使ってるOSHPARKだと0.2mmか0.8mmか1.6mmかしか選べないので、あきらめてMouserの(https://www.mouser.com/ProductDetail/Amphenol-FCI/95622-003LF?qs=sGAEpiMZZMvlX3nhDDO4ADebvHqt5FRjUIFcJyydZGI%3D)買ってしまおうかなあ。Mouserのコネクタだと逆差し防止のノッチも最初からついてるし。
2022-03-14 09:54:41
ああ・・・ 自ら設定したこの掲示板の2000文字制限に引っかかってしまって、長文が失われてしまいました。 (悔しいので本文8000文字にしてしまいました)
メモリカードコネクタのCE1,CE2に関してですが、私の持っている資料に以下の記述が有りました。(JEIDA4.2向けですが、JEIDA4.0でも同様かとは思います)
CE1 CE2
Low Hi - 下位バイトへの8bitアクセス, D0~D7に偶数アドレスまたは奇数アドレスのデータを1バイト出力
Hi Low - 上位バイトへの8bitアクセス, D8~D15に奇数アドレスのデータを1バイトを出力
Low Low - 16ビットアクセス, D0~D16に2バイトのデータを出力
Low,Hiの時の記述 "偶数アドレスまたは奇数アドレス"の部分が気になります。 偶数,奇数どちらのアドレスかはカードの設計次第って事でしょうか?
8ビットアクセスを行うホストの場合、8bitCPUかそれ以上のCPUでもアクセスが8bitに制限されている状況ではありますが、カードが16ビットカードの場合は全ての容量を8bitアクセスで使用するためにはCE1,CE2を切り換えて上位/下位の8bitデータが取れないと駄目でしょうから、CE1=Low,CE2=Hiの状況で奇数アドレスのデータを出力する意味がないように思います。
メモリカードは本来は機器間でのデータの移行なども念頭に置いているはずですので、16bitアクセスするホストが書いたデータを8bitアクセスするホストが完全に読めないなんてあり得ない事だとすると、CE1=Low,CE2=Hi時は普通に考えれば偶数データを出すべきでしょう。
2022-03-14 11:21:26
>158
>161 山川機長さん
DiscordのInvitationに関してこの掲示板自体は全くのウェルカムなのですが、招待状の意味合いから考えるとDiscord側に迷惑をかける可能性が高いので控えられた方が良いと思います。
私自身はDiscordどころか、TwitterやLINEも含めたSNSを全くやってないのですが非常に興味は有りますので、勇気が出たら参戦したいなぁとは思っています。
表面実装部品のハンダ付けに関して、私の経験では要点さえ押さえればさほど困難な作業では無いと思っています。
主に過去の仕事(基板の修理, QFP,DIP,PGA素子の交換)で得た手順などを記載します。 (私の手順ですので、他の方法やより良い手順などもあるかとは思いますので、参考までとしてください)
[準備するもの]
・細いハンダ線 鉛フリーよりも鉛入りがやりやすいので私は主に鉛入りを使用 (個人なので環境問題は無視?)
・ハンダ吸い取り線 これもなるべく細め
・ピンセット 先の細い物を使用 (本来はESD対策品の方が良いとは思います)
・フラックス 液体フラックス
・フラックスを塗布する小筆等 私は毛が抜けるのを嫌って主にマイナスドライバを使用します
・無水アルコール 洗浄用
・カプトン粘着テープ 素子/コネクタの仮止用 (高価なので私はごく一般的なマスキングテープを使用)
・ハンダこて ワット数は必要ないので一般的なもの, こて先は面を持っているもの (ただの円錐形の物ではやりにくい)
・ESD対策品 導電マットやリストバンド等 (無ければ作業前にアースに触れておく,帯電する服装は避ける)
[手順]
・基板のパッド部を必要であれば無水エタノールで洗浄する ※手指の脂などが付着しているとハンダが乗りにくいので、その対策です
・素子やコネクタの取付部周辺にマスキングテープ等を貼り、ハンダが飛んだり垂れたりしても大丈夫なようにある程度の保護を行う
・基板のパッドに予備ハンダを行う ※ハンダを山盛りにする必要は有りません。 パッド面に薄く均一に乗るように
・素子やコネクタを基板に乗せて、マスキングテープなどで仮止めを行う
・ハンダ付け部分にフラックスを多めに塗布する
・足のズレが無い事を確認してから、対角や端-端等の2点程度の脚に対して仮のハンダ付け (フラックスが有れば、ハンダこての面で押さえればOK)
・足のズレが無い事を確認してから、残りの脚に対してハンダ線を使用しながらハンダ付けを行う (酷くなければブリッジしていてもOK)
・仮ハンダをしていたピンに対して上記と同様にハンダ付けを行う
・フラックスの汚れが酷ければここで一度、無水エタノールで洗浄を行う
・目視でブリッジやハンダが多い箇所,少ない箇所を確認する
・フラックスを塗布して、ハンダの少ない箇所にハンダ付けを行う
・ハンダの多い箇所に関しては、ハンダ吸い取り線を用いて余剰なハンダを除去する (ハンダ吸い取り線はピンやパッドに押し付けず、ハンダこてで溶けたハンダに吸い取り線の先端を触れさせて吸い取る)
※ブリッジしている箇所については、上記のハンダが多い箇所と同様、フラックスが有ればブリッジのハンダは毛細管現象により吸い取れる)
・無水エタノールで洗浄
・ピンセットの先端でピン足の先端を横方向に軽く押して、動くものが無いか確認する (動くもの = ハンダ不良 → 再度ハンダ付け → 洗浄)
・テスターを用いてブリッジやハンダ不良が無いか道通チェックを行う ※電源ラインに関しては特に重点的にチェック)
・神に祈りながら機器に取り付けて電源投入 → 匂いがしたり、煙が出なければソフトウェアでのチェック
最後に作業において絶対的に必要なものを挙げておきます。 それは、十分な時間と落ち着いた精神状態です。 (^o^)
後は、"そんなに簡単に熱では素子はイカレないと思い込む間違った知識"でしょうか? でも、経験が一番なので一度は表面実装品(74シリーズでも可)をラグ板にハンダ付けしておいて下さい。
色々な人を見ましたが、手先の器用/不器用で表面実装部品のハンダが出来ない人は居ませんでしたので、安心してください。
2022-03-14 12:55:18
なるほど!貴重なアドバイスをありがとうございます!手先の器用・不器用の問題は別として、近くのものが見えづらい影響で表面実装ができない問題はないでしょうか!? (遠くは昔とまったく同じようにくっきりはっきり見えるのに、手元がつらい) 手元をめちゃくちゃ照らして瞳孔をできる限り小さくするという作戦をしてますが、最近6時間ほど遠視を矯正してくれる目薬ができたと聞いたので処方してもらおうかな。
~CE1と~CE2に関してなのですが、ものすごく希望的な観測なのですが、~CE1=L,~CE2=Hとすると単なる8ビットのROM/RAMとして機能するのではないか、という希望を持ってます。そして、JEIDA4より前のSRAMカードは基本ただの8ビットのROM/RAMだったとしたら、Townsはそのようなアクセスをしてくれるのではないか、という甘い読みをしていて、他の機種でも使えるSRAM/ROMカードを作る必要はないので、この読みで合ってたら、あとはEPROMにIPL焼いて乗せれば完了ということになってくれれば、と、思ってるのですが、さすがにそこまで甘くない可能性はかなりありますね(^_^;)とりあえずDigiKeyからの部品が届いたらPCBも発注しようと思ってます。
2022-03-14 23:11:14
>167 山川機長さん
目に関しては寄る年波には逆らえないものでして、偉そうな手順を示しながらもそのような仕事を行っていたのも20年以上前のことであり、最近はめっきり近くが見えません。
一番楽なのは老眼鏡を作ることですが、私の場合は昔から超ド近眼が幸いしてか裸眼だと見えたりします。(老眼鏡ってイメージが良くないので近年はリーディンググラスって名称ですが、老眼鏡じゃん)
CE1とCE2に関しては、やってみないと判らない部分が多そうですね。
初期ロットはテストも兼ねると言う事で多少背が高くても構わないと割り切って、ジャンパピンを立ててCE1,CE2をプルアップ,プルダウン,SRAMのCEに切り換えれる回路にする方が良いかもしれません。
2022-03-14 23:57:58
回路は、結構いい感じなのではと思うようになってきました。
163で#CE1、#CE2についての書き込みを訂正しましたので、下記のような動作条件になりそうですね。
①8bit転送で書き込んだ場合は8bit転送でのみ読み込み可。(使用されるSRAMはU1のみ)
②16bit転送で書き込んだ場合は16bit転送でのみ読み込み可。(U1、U2が使用されるけど偶数アドレスのみ使用される?)
AS6C62256を2個搭載しつつも32KBとして使う代わりに、アドレスデコーダーなどが省略出来るのかな。
この回路で8bit/16bit切り替えに対応したい場合で、
先頭にIPL4を書く場合、
アドレス0000hへは16bitで書き込み(U1にI、U2にP)
アドレス0001hへは8bitでU1にPを書く。(U2の値は不定)
アドレス0002hへは16bitでU1にL、U2に4を書き、
アドレス0003hへは8bitでU1に4を書く。(U2の値は不定)
このような書き方をすれば、起動完了までに8/16bit切り替えが行われても正しく読み込めるって事かな。
検証用に都合のいい回路ですね。やっと私の理解が追い付いてきた気がします。
>製品のとこに書いてある図のビットマップから計算すると、PCBの厚さは大体0.9mmぐらいと思ったのですが、
Digikeyから飛んでデータシートの図を見てきましたが、足幅細い~って思いました。
画像があるのは便利だけど、まだ正確では無い物も結構あるのかな。
2022-03-15 00:40:19
CE1/CE2問題は、ひとつ実験しないとわからないのが、アドレスバスが26本あって、それぞれのアドレスに16ビットのメモリがあるのか、それとも、それぞれのアドレスに対応するのは8ビットで、ただし16ビットアドレスを使うとふたつの連続するアドレスに対応する2バイトをまとめて読み書きできる、ということなのか、ですね。前者であれば、最大128MBのメモリを使えることになりますが、後者であれば64MBになります。TownsのJEIDA4モードだと最大64MBなので、後者ではないかと見ています。また、メモリカードの仕様に奇数バイト、偶数バイトという記述があるとすると後者の可能性とマッチするような気がしますね。
だとすると、Low-Hiの場合は、ただの8ビットデータバスのメモリということになりそうな気がします。「偶数アドレスまたは奇数アドレス」というのは、アドレスバスのビット0によって偶数アドレスも奇数アドレスも使えるという意味とも解釈できる気がします。また、GithubのオープンソースのNeoGeoメモリカードはそのような仕様を前提にしているように思います。
Hi-Lowの場合、D8~D15に必ず奇数アドレスのデータだとすると、アドレスバスが既に奇数アドレスになってた場合、D8~D15には何が出るのかというのが謎ですね。
しかし、Low-Lowの場合でアドレスバスが奇数アドレスになっててもD8~D15には次の1バイト(偶数アドレス)が出るのだとすると、これもまた不自然な気がします。あるいは、16ビットアクセスのときはアドレスバスには必ず偶数アドレスを書くこと、とか決まってるのかな?
しかも、D8~D15をCE2によって独立して扱えるようにしたとすると、必ずRAMチップをふたつ搭載するか、あるいはRAMチップからの出力をいったんラッチする別のチップが必要になり、このロジックをPCMCIA上に実装するのは結構大変だったような。
さらに、TOWNSがJEIDA4より前のカードにも対応しているということは、かなりの確率でHi-Lowモードしか使ってないのではないかというのが僕の希望的観測で、だとすると二つ目のSRAMチップは刺さなくても機能するはず、(Open Source NeoGeoメモリカードと大体同じ)という予想が当たってるといいんですけどね。
2022-03-15 06:57:27
ああ、最後のとこ、Hi-Lowモード鹿使ってない、ではなくて、Low-Hiモード鹿使ってないの間違いですね。ややこしい(^_^;)
2022-03-15 09:08:26
メモリカードの規格を検討する立場的な考えとしては、
・カードサイズやコスト面から複雑な回路が必要な物にはしたくない
・16bitアクセスと8bitアクセスの両立
・機器側のデータバス幅に関係なく、同じカードが違う機器で読み書き出来るべき
これらを実現する方法として今思いつくのは、
・カード側は8bitRAMの2チップ構成
・それぞれのRAMにCE1,CE2をD0~7,D8~15を接続
・16bitアクセスの場合はCE1=CE2=Lowでアドレスを入力すれば良いだけ。 ただし、アドレスは偶数アドレスのみ。
・8bitアクセスの場合は機器側でアドレスに応じたCE1,CE2の制御と、データラインの選択を行う。
(機器側A0をCE1へ,NotA0をCE2へ,データラインはバスバッファを挟み、バスバッファのOEを自身のA0で制御)
とすれば解決しますが、現実的にはアシストパックの結果はその様にはなっておらず偶数アドレスの8bitにしかデータは無く,NeoMemCard2の回路図はD8~D15の配線が無い。
これはいったいどうなっているのだろう? NeoMemCard2の方はNEOGEO本体が8bitアクセスしか行わない事実を利用して省略している可能性も有りますが、アシストパックの方は製品ですのでJEIDAの規格に沿っているはず・・・・
(NEOGEO本体側の回路図では本体側はD0~D15まで配線が存在しています。 CE1,CE2は一つにまとめられていますのでアクセスとしては16bitアクセスですが、データは8bitしか出ていないのかもしれません)
16bitでのアドレスの与え方に関してですが、当時の16bitCPUで一般的なものとしてはX86とMC68000が有ると思いますが、68000は奇数アドレスを許さずにバスエラーとなりますので必然的に偶数アドレスでのアクセスになります。 対してX86は奇数アドレスが許容されますがバスアクセスは2度行われると記憶していますので、1アクセスあたりで見ると8bitアクセスとなるため、その時にデータライン上に出てくる希望では無い側のデータに関しては極論から言うと何であっても構わないのではないでしょうか?
(回路的にはn+1番地へのアクセス時にはD0~D7へはn番地のデータが出てくると思いますが、最終的にはCPU内で捨てられるデータです)
2022-03-15 09:54:47
うーん、なんとなくC0000000h~は8ビットアクセス(~CE1=L,~CE2=H)、C1000000h~は16ビットアクセス(~CE1=L,~CE2=L)という感じですかね?少なくともMX, 2F, HRのSYSROMはJEIDA4フラグに関わらずC0000000h~をIPLとして読むはずなので、なんかますます希望が湧いてきた気がします。実はJEIDA3のカードではこのへんの仕様がいい加減でバイトアクセスするのが一番確実な方法だった、とかいう可能性でしょうか。
しかし、できれば本体にJEIDA3として認識させたいところですよね。そうしたら多分TICMFMTでフォーマットもできるかもしれないし。。。。。ではない!そうだった。TICMFMTは、REG=1にしたとき最初のバイトがFFhであることだけ確認してるんだった。だから、JEIDA3と認識させて、REG=1のときFFを返すようにすればフォーマットできるかも。
ところで、これって実は正しいプロトコルでC0000000h~を読み書きしたら正式にCFカードドライバ書けたりするかもしれないですね。それができたらすごいけど、FAT32とかサポートするのは大変そうだ。うーん、いや、Raspberry PIとか使ってGPIOピンとつなげて通信できるようになったりしないかな。
2022-03-15 12:40:35
>173 山川機長さん
TOWNS側からC0000000h以降のエリアにデータを書くと、アドレス,WE=Low,データ,WE=Hiと変化しますのでRaspberryPi側でWEのRisingEdgeでアドレスとデータを取り込んで自分のメモリに格納する,読み出しの場合は、OEのFallingEdgeでアドレスの取込,とデータの送出と言う手順で行えばTOWNSとしてはメモリカードにアクセスしているとしか見えないのではないかな?
RaspberryPi側はFAT12のイメージをそのまま見せれば良いのか? 浅はかでしょうか?
なんなら、メモリカードスロットをメモリカードとして使わないと言う、もはや趣旨から外れてしまいますが、そんな使い方が出来るかもしれません。
イメージ的にはFM-7シリーズの共有メモリの様なコマンドとレスポンスを返すイメージです。
(ただし、実際には共有メモリなんて物は存在しないので、これはRaspberryPi側のメモリとなります)
カード側からの主体的な通知や要求信号が必要ならBVD(バッテリ検知信号)の2本を使えばTOWNS側のステータスで読み出すことも可能だし、もう完全にメモリカードとして扱うのをやめるのならTOWNS側のソフトも専用プログラムが必要ですが好き放題なのかもしれません。
2022-03-15 15:25:01
どのような結果が出てくるのか今の時点で楽しみです。
アシストパックを挿した状態でC0000000hとC1000000hを、デバッガ(DDEB)で見た時はどちらも奇数アドレスがFFで、
それ以外のICカードはFFではなかったので、TOWNSのハードウェアとしてはC0000000h、C1000000h共に16bit対応なのかなと考えていました。
TMICM.SYSを登録した状態だと、アシストパックのあるDドライブはDIR表示、ファイルコピー、EXEファイルの実行が出来るので、8bit読みをしていそうです。
FM NOTEBOOKの登場が90年末らしいので、TOWNSはそれより古いですし確実な動作を得るため8bitへ変換している可能性は十分ありそう。
RaspberryPi側から映像データだけをC0000000h~へ出力して、それをVRAMへ転送し続けたら滑らかな動画になるのかな。
2022-03-16 00:03:13
おおなるほど!アシストパックはC0000000hでも奇数アドレスがFFhなんですね。だとすると、仮説としては、アシストパックは奇数アドレスのバイトアクセスに対応していなくて、偶数アドレスからのワードアクセスのみ対応ということでしょうか。おそらくダンプするときにデバッガが1バイトずつ読み込んだので、奇数バイトの読み込みに失敗したと考えられるように思います。SYSROM/IO.SYSのICメモリカードアクセスは必ずMOVSDを使って偶数アドレスから読んでいるようなので、その問題にひっかからなかったのではないかと思います。
そうであれば、A0ピンは常にLowになってるはずですね。それが実験できるようにA0ピンをGNDにつなぐジャンパを追加してみよう。一般的に使えるメモリカードを作る必要はなくてTOWNSからIPLを走らせることができればいいので、TOWNSが使ってないアクセスモードはとりあえず無視してもOKということで。それだと、PCMCIAのA1をチップのA0につなぐようにアドレスバスをシフトしてやるとフルにRAM/ROMを使えそうですね。
2022-03-16 04:55:56
SRAMカードのデータシートをひとつ見つけたのですが、3.1に、どういう状態で何をデータバスに出すかの表がありますね。また、16ビットアクセスではA0の値に関係なく偶数バイトがD0-D7、奇数バイトがD8-D15に出るとありますね。
https://www.amtron.com/sram/sram_datasheet_pretec_2017Aug.pdf
ただ、8ビットデータバス用に奇数バイトをD0-D7に出すパターン以外は現状のカードデザインでも対応できそうですね。ひっかかるのはすべてのTOWNSがそうなってるかという点ですが、富士通が自分で出したアシストパックがそんな状況だったら多分大丈夫かな?
2022-03-16 07:57:51
>177 山川機長さん
表を見るとCE2はD8~15を使用するかどうかを決めるみたいですね。
8bitアクセス時はCE2がHiであればA0ラインで偶数/奇数を決め、CE2がLowの場合は奇数のみアクセスとなると・・・
これだとメモリチップ単体では対処できないので簡単な外付け回路が必要になりますね。
まあ、今回のケースではTOWNSのブートで利用できれば問題ないとすると、行けそうですね。
2022-03-16 09:17:08
A0を使ってるかどうかをチェックするジャンパピンをつけるか、これは16ビットアクセスだったら使ってないこという前提でTowns側A1をSRAMチップのA0に接続するか、迷ったのですが、どうも16ビットアクセスする分にはA0は使ってないと見てまず間違いないと思ったので、Towns側A1をSRAMチップのA0につなぐように修正してみました。同じURLなのですが、なんかコメントあったらください。(他力本願)
https://1drv.ms/u/s!AmlM0OLrEo8vgf4SrfYY3ldxu0VIJw?e=ZT3dR0
他の部品は明日届く予定だから、PCMCIAコネクタのピン幅を確認して、PCB発注しようと思います!
2022-03-16 10:59:47
>179 山川機長さん
パターン図の方は見きれてないのですが、回路図は拝見しました。
問題は無いと思いますが、BVD1,2が接続されていないのは検知回路が無いからですよね?
このままだと浮いてしまうのであまり良くないかもしれません。
バッテリー切れだと検知しても問題はないのですが、浮いている事が気になります。
規格上は「サポートしないならプルアップせよ」となっています。
2022-03-16 18:49:51
おおなるほど!コメントありがとうございます!そのように修正しました、が、これはVccと~BVD1, ~BVD2の間は抵抗入れた方がいいのかな?一応4.7Kの抵抗を挟むことにしてみましたが、直結でもOKそうな気もしますね。
2022-03-16 22:17:23
今思ったんですけど、ReadyピンってNCでも良いもんですかね?NeoGeoメモリカードではReady (~Busy)はNCですが、一応、VccまたはGNDに接続できるようにピンだけ出しておいた方がいいような気もしてきたので、パッドの穴だけ開けておこうと思いました。
2022-03-17 07:47:22
BVD信号の処理について、改めてJEIDA4の規格を見ていたのですが私の認識に多少の違いがあるようです。 お手間を掛けますが回路図の方も修正が必要そうなのでお願いします。
・基本的にはホスト側でBVD2のみプルアップが必要との事
・上記プルアップが必要な理由として、JEIDA3ではBVD2がサポートされておらず、JEIDA3のカードを挿した際にJEIDA4のホストがBVD2をLOWと判断してしまう事を防ぐ為とあります
なので、カード側はオープンでも大丈夫ですね。
また、Ready信号に関してもホスト側でプルアップされていますので、オープンでも大丈夫です。
Ready信号の意味合いについてはカード内の処理が出来ない期間(電源投入時の初期化など)にアサートするようで、これとWaitとは別なのでアクセスを延ばす効果は無いとの事(WaitはJEIDA4.1以降でサポートなのでJEIDA3では存在しない)
今回のようなほぼメモリ素子のみのカードであればReadyは必要ではないと思います。(Readyが必要なケースはメモリコントローラが内包されているケースだと思います)
※BVD2はJEIDA3ではサポートされていないとの記述がJEIDA4の方に有るのですが、I/O 048Ahのメモリカードステータスのbit5,bit4で表される検知内容とはずれが有る。
TOWNSって、ここだけJEIDA4仕様なの?
2022-03-17 10:02:15
書き忘れました。
参照しているPC Cardの規格書ですが、英語版WikipediaのExternal Linksに、有ったりしましたと書いておきますが・・・ 良いのかなぁ
2022-03-17 10:12:13
了解しました!ありがとうございます!BVD1,BVD2,RDYシグナルをNCに戻しました。
JEIDA3にはWAITもRDYも無いということは、反応が遅いメモリだった場合はどうやって対応していたのか謎ですね。SRAMにはデータがReadyになったとするストロボみたいなピンは無いですよね。この方法で起動に成功したらEPROMで本体のスロットにすっぽり入るタイプのカードも作ってみたいと思っているのですが、調べたらEPROMって案外反応速度遅いんですね。MX以降のFASTモードだとついてこないのではないか、という気がしましたが、でもフォントとかはROMだったはずですよね。ものすごいアクセスウェイトが入ってるのだろうか。
Wikipediaのリンクはarchive.orgにつながってるやつですね。僕もダウンロードしておきました。Wayback Machineにキャプチャされたということは、かつてはオープンになっていたデータのようなので、とくに問題ないように思います。
2022-03-17 11:10:06
そうです、archive.orgにつながってるヤツです。 英語なんで斜めに読み飛ばしてたら見事に引っかかりそうになりました。
遅いメモリに対するアクセスについては謎なんです。当時としては速いメモリは限られていましたが遅いメモリはいくらでも有りますでしょうから、どうしていたのでしょう?
一応、メモリカードの形番としてスピードが入っている物も有りましたので、ユーザー側が選択したとしか思えないです。
別スレッドに書いたのですが、MXに載っているROM(P-ROMと書きましたが、マスクROMでした)はHN624116でした。(1048576word X 16bit)
容量的にフォントとかCドライブとかも入ってそうですが、アクセススピードは最速でも150nsですのであまり気にしなくても良いのかもしれません。
不揮発性メモリで速いのとしてはMRAMとかも有りますが、8Mbit品だと選択するには非常に困難な価格です。
2022-03-17 13:45:44
アシストパックは富士通では無くて株式会社アシストの製品で、ワープロ、表計算、データベースがセットになった物です。
>おそらくダンプするときにデバッガが1バイトずつ読み込んだので、奇数バイトの読み込みに失敗したと考えられるように思います。
なるほど!やっと理解できた気がします。
ワード転送
CE1 L ,CE2 L
バイト転送1回目
CE1 L ,CE2 H
バイト転送2回目
CE1 H ,CE2 L
CE1のみでROMをイネーブルしていると、バイト転送2回目がFFになってしまうって事ですね。
今まで、デバッガがワード転送をして、アシストパックが8bit専用と思い込んでいましたので、↑に全然気づけませんでした。
>そうだった。TICMFMTは、REG=1にしたとき最初のバイトがFFhであることだけ確認してるんだった。
私の持っているSRAMカード2種が、TICMFMT使用時にライトプロテクトがされています、みたいなメッセージが表示されて初期化出来なかった記憶があるのですが、
アトリビュートメモリの先頭がFF以外なのが原因の可能性もありそうですね。
2022-03-18 01:34:29
TICMFMTは、最初の1バイトをチェックしてるというか、真面目にアトリビュートをチェックしているようです。どうやらアトリビュートをチェックして、メモリカードでは無いと判断した場合はフォーマットできんと言うようなのですが、アトリビュートに何もない(終端を表すFFhが最初に書いてあった)場合は、あきらめて続行するようです。なので、最低限FFhが出てればフォーマットできるようです。せっかくだからフォーマットぐらいできるようにしてみようかと一瞬思ったのですが、64KBのディスクができてもあまり意味がないから今回は実験用だからやっぱりやめようと思いました。
むしろ、SRAMは速いから読み書きできたけどROMが遅くて読み書きできなかったという状況になったらどうしようかと思っているのですが、内容が飛んだらROMの中身をSRAMに書き込んでIPLを復活させるボタンとか追加するのも手だろうか、などいろいろ考えてます。あるいは、Raspberry PIでICメモリライタ作れんもんかな。
なお、部品届きました。やっぱりコネクタのピン幅が狭いです。0.2mm PCBにするか、0.8mm PCBにするか迷ったのですが、どっちにしてもピンは曲げる必要がありそうなので、0.8mmボード(安い)でトライしてみようと思いました。失敗に備えて多めに部品買ったし、PCBは最低3枚からの発注なので、なんとかなるでしょう。PCBが届くのに2~3週間ということです。発注かけてからエラーが見つかると暗澹たる気分になるんですよね。
2022-03-18 23:28:11
TOWNS OSのCDをSCSIのCD-RWドライブに入れ、救済IPLで起動してインストールしようとすると、
CDの確認を促すメッセージが出てインストールできないのは仕様でしょうか。
OSのメディアは普通のCD-ROMで、内蔵CDからインストールすることは可能でした。
ちなみに、お持ちかも知れませんが半田ごては温度調整付きがおすすめです。
PCBを痛める心配がないですから作業中も余裕が出ます。
2022-03-20 03:54:33
確認しました!原因は、INT 93H AX=55C0H (CDDA一時停止)がAH=22H (既に停止中)を返していたのが原因のようです。そもそも演奏中ではない場合は、AH=00H (エラー無し)を返すべきのようです。
SCSI CDドライブで一時停止中なのかそもそも音楽再生中ではないのか判定する方法がわからないんですよね。演奏中か演奏中ではないのかはわかるのですが、果たして演奏を終了したからなのか、一時停止中なのか見分けられません。
内部にフラグを持たせれば、ある程度は対応できるかもしれません。ので、やってみます。
2022-03-20 09:53:43
あ、PAUSEステートまだ解明できてないと思ってたら既にしてあった。直します。
2022-03-20 10:08:42
直しました!Githubの方にPUSHしましたのでお試しください。津軽上では「CDを確認してください」のエラーは出なくなってTowns OS V2.1 L20は正常にインストールできました!
2022-03-20 10:17:24
>山川機長さん
早速のご対応ありがとうございます!
後ほどやってみます!
2022-03-20 16:50:04
HCにL51のインストールがエラーなくできました!
ありがとうございました!
2022-03-20 18:26:00
フォーマットの出来ないICカード2枚のステータスを確認したところ、ライトプロテクトスイッチの状態に関わらずライトプロテクトONの状態となっていました。
デバッガでC0000000hへ書き込んでも変化なしでした。
スイッチが物理的に壊れているのかもしれません。お騒がせしてすみません。
私の方は、いずれNECのリニアフラッシュに救済IPLを書き込んで運用しようかなと考えています。
1枚しか持っていなくて、他のリニアフラッシュですと書き込みソフトが見つからないのと、TOWNSでの書き込みを想定する場合Vpp5Vのリニアフラッシュを探す必要があるので、ebayのお得そうな新品に手を出せそうに無いのがネックですね。
ところで、デバッガでアセンブラを書いてC0000000hを読もうとしたのですが、不正な割り込み、のエラーが出てしまったので、
プロテクトモードに切り替えないとダメなのかなと思いHIMEM.SYSを組み込んでDOS=HIGHとして、デバッガ上でのアセンブラでCR0レジスタのbit0を1にしたものの別のエラーで止まります。
グローバル デスクリプタ テーブルの作成やA20のONもしないと行けないのでしょうか。
MOV EAX,[EDI] みたいなのはそもそもダメなのかな。どなたでも何かご意見などありましたら、是非お願いします。
TOWNS、ハードルが高い・・・。
簡単に出来そうな方法を探したところ、JEIDA4.1のPC-98NoteだとDA00:0000hの8KBをPCMCIAのメモリウィンドウとして使えましたので、今回はそこを読んでみました。
mov al,es:[di]
mov ah,es:[di+1]
mov bl,es:[di+1]
mov cx,es:[di]
mov dx,es:[di+2]
アシストパックを挿してes=DA00 di=0200hとして読んだところ
AX=FFEB, BX=00FF, CX=68EB, DX=4990
アシストパックの0200h~は EB 68 90 49なので、やはりバイト転送では奇数アドレスの値がFFになり、ワード転送では正しく読めているようです。
2022-03-20 21:04:26
そうですね、DOSからプロテクテドモードメモリを読もうと思ったらGDTは作る必要がありますね。以前YSSCSICD.SYSで INT 93H AX=05C0H CH=FFhをサポートするために使っていたコードを(今はDMAを直接使ってるからこのコードは使ってない)githubに上げてあるのでよかったら参考にしてください。
https://github.com/captainys/FM/blob/master/TOWNS/EXPERIMENTS/UNREAL/RDHIGH.ASM
2022-03-20 23:25:44
ありがとうございます!助かります。参考にさせて頂きます。
2022-03-21 01:31:35
またまたDiscordの方なのですが、実はTownsのExt FDDコネクタ, PCS 50Pという今では手に入らないコネクタということになってますが、ただの1.27mmピッチのコネクタだからSCSIコネクタの余計なプラスチックを切り落としたら入ったという報告がありました!おそらく初代機もExt FDDからのブートに対応していたと思うので、実はこれも本体無改造でFD/CDが動かないTownsを起動するひとつの方法になるかもしれません。あるいは、Ext FDDにHxCなどを接続したとして、救済IPLの方からIO.SYSにパッチを当ててExt FDDをA、Bドライブと認識させることで、FDベースのゲームをExt FDDから起動させる、みたいな芸当が出来るかもしれません。これができたらすごいので、早速手元の津軽で外付けFDDをサポートしてみました。まだソースはPUSHしてませんが、外付けFDDに救済IPLを書いたディスクをマウントしたところ、起動してくれたのでいろいろできそうな気がします。
2022-03-21 14:12:18
TOWNSのExtFDDコネクタは本田のPCS50ですが、最新のWEB上にあるカタログを見る限りだとまだディスコンにはなってないような気がします。
コロナの影響で多くのコネクタが注文できない状態になっており、その煽りでPCSコネクタも現在は注文できないみたいですけど・・・・
また、やったこともないし調べたことも無いのですが、IO 020Ehにドライブスイッチレジスタが有りますので起動時にBootROMが対処してくれていれば起動した側がドライブセレクトの0,1側となる事となります。(FM-77等はそういう処理が入っていた記憶があります)
BootROMで対処してくれていなくてもドライブスイッチレジスタのbit0を"1"にするだけなので簡単かもしれませんね。
赤本の外部FDDコネクタのピン配置を見ると、同名の信号が複数有ったりするので困惑します。
また、SCSIターゲットを再現するArdSCSinoを使用すれば初代以外のTOWNSに対するSCSIを使用した救済IPLは実現できるかもしれませんね。
初代のSCSIカードは中核の素子がゲートアレイで構成されているようで、詳細が不明なのが問題として残りますので初代でSCSIカードを所持していない場合にどうするかと言う問題は残ります。
ArdSCSino
https://github.com/ztto/ArdSCSino-stm32
BlueSCSI(ArdSCSinoのフォーク)
https://github.com/erichelgeson/BlueSCSI
2022-03-23 09:15:39
おおなんと!ArduinoでSCSI2SDとか変換番長みたいなのが作れてしまうとは!それだとFM-7用高速RS232Cカードとか作れるかな?一般用途に使おうと思ったらArduino側にIOW, IOR, アドレスバスの下位8ビットとデータバスが出ればいいんだから、一応合計18本GPIOピンがあればなんとかなるのか。IOR/IOW信号で十分高速にピンモード切り替えられるのだろうか。今度やってみよう。
2022-03-24 03:32:22
TOWNSとは離れてしまいますが、お許しください。
>200 山川機長さん
FM-7の拡張カードに関しては、FS-Microさんの所でZ80カード用スロットにPICやArduinoを使用したカードを搭載するチャレンジを行われています。
https://fs-micro.com/post/list/tag/FM-7.html
TOWNSの拡張スロット等に関してもタイミングがシビアになる事を除いては同じようなカードを制作することも可能だろうなとは思いますが、あっちこっちに手を出すと手が足りないので自粛しています。
何か出来れば良いですね。
2022-03-24 09:00:58
おおなるほど。Z80カードスロットはFM-7でとうとう一度も使うことが無かったので、今から何か活用できると楽しそうですね。TownsのICメモリカードスロットも結局一度も使わなかったので、これが起動に使えたら楽しそうなのと似てますね。そういえば、FM TOWNS Technical Databookの付録A-10に拡張スロットのピン割り当て出てるんですね。これも何か作れたら楽しそうですね。さすがに既に割り当ててあるI/Oを乗っ取るのは無理なんだろうな。CD-ROM I/Oを置き換えることさえできれば。
2022-03-24 23:34:52
そうですね、実際に配線も実装もされていますのでI/Oを乗っ取る事は出来ないでしょうね。
仕方がないのでCD-ROMのエミュレータを作りたいわけですけどね。
赤本に載っている拡張スロットのピン配置については、前々から疑問でして・・・
と、言うのはTOWNSの拡張スロットって途中から汎用スロットに変わったじゃないですか。 って事は赤本のものは初代に拡張BOXを増設した際のスロットではないかと思うのです。
2022-03-25 00:00:46
いろんなものが届きました。まず、NeoGeoのメモリカードが届いたので試したところ、奇数バイトがすべてFFになっていました。MOVSDで読んだので、どうやら16ビットアクセスに対応していないようです。YouTubeなどでNeoGeoメモリカードのバッテリー交換の様子を見るとどうも28ピンのSRAM(?)が一つ載っているだけなので、16ビットアクセスは想定していないようです。バイトアクセスだと奇数バイトが読めるのかはまだ試してませんが、Towns用メモリカード制作にはあまり関係なさそうです。
もうひとつは、試作品用のPCBが届きました。週末にまずはバックアップバッテリー無しで作ってみようと思います。老眼対表面マウントの対決になりますね。果たしてTOWNSはSRAMを読み書きできるか?それから、リセットボタンを押したときに電源が切れたりしなければ、IPLを書き込んでからリセットするとICMからの起動が実験できるのではないか、という希望も持ってます。
ところでDiscordの方で、本体からCDドライブを取り外した場合、IO.SYSがI/O 04C0HでCDドライブのDRYを待ち続けて起動できないという話が出てます。津軽で試したらDRYをオフにしてるとたしかにIO.SYSが待ちに入ってしまうので、これはIO.SYSにパッチを当てれば済みそうです。
2022-04-07 06:14:18
ICメモリカード、実験してみました。表面マウント、なんとかなるもんですね。ちなみに、知り合いからもらって、「理屈はわかるけど、本当に効果あるの?」と思ったピンホールメガネ、効果絶大で、これからはんだ付けの友になりそうです。
しかし、あろうことか、28ピンDIPの幅を間違ってたもんだから、ソケットからSolderless Breadboardに毛を生やすという方法でSRAMをつなげましたが。そうか。何も考えずにi8251と同じソケットにしてしまったが、SRAMチップは細いDIPだったのか。PCB注文する前にチップは届いていたのに、袋を開けて確認するべきだった。
実験の結果、まず書き込みはまったく問題ありませんでした。
書き込みに問題が無いんだから読み込みはもっと問題ないだろうと思ったら、読み込みが問題で、高速モードで4バイト読むたびにある程度のウェイトを入れた場合、(MOV AX,5000 / LOOP: DEC AX / JNE LOOP)完璧に読み込むことができました。
ところが、ウェイトを入れずに一気に読んだ場合、最初の数バイト読み込みに成功するのですが、8バイト目あたりから怪しくなってきて、20バイト目あたりからは完全にデータが崩れてしまいました。
そうであれば、互換モードにすれば成功するのかと思ったらなんと、互換モードでは最初のバイトからほとんど読み込みに成功しませんでした。
また、互換モードで書き込んだデータは高速モードに切り替えてからウェイトつきで読むと何の問題もなく読めました。
それからIPLを書き込んだ状態でI,C,Mキーを押しながらリセットすると、どうやら最初の8バイトだけは読んでいるようで、IPLに飛ぼうとしますが、肝心のIPLの内容が壊れているため不正な割り込みエラーが出ました。
Solderless Breadboardにワイヤーでつなげているので、ノイズを拾っているのではないかという可能性も考えましたが、そうであれば書き込みにも失敗するはずなので、ウェイトを入れるだけで正常に読めてしまうということはその可能性は無さそうです。
NeoGeoのメモリカードで読み込みの失敗は起きていないので、いずれかのピンを使ってReadyを知らせている可能性が高そうです。
偶数バイトだけ読めるNeoGeoのメモリカードがあるので、これを調べられるといいのですが。くっ、ロジックアナライザを展開するスペースさえあれば。と、右舷遥か彼方を地球に向けて侵攻してゆく白色彗星帝国を横目に波動砲を撃てないヤマトクルーのような心境になってますが(いや、あれは撃たなくて良かったパターンだ)。
NeoGeoのメモリカードばらしてみようかな。おそらく42ピンのIORDYか37ピンの~BUSYと見て間違いないですよね。問題としては、~WE/~OEのタイミングでビットを立てるのか、~CE1/~CE2のタイミングでビットを立てるのかですね。
ちなみに、このインターフェースでなんらかのハードウェアを自作して遊ぼうという目的には十分な情報が得られました。16ビットアクセスでばっちりです。それから、16ビットアクセスの場合、~CS1, ~CS2は独立して信号が出ているようなので、~CS1を両方に出すというのはしなくて良さそうです。
2022-04-09 06:52:37
読み書き成功しました!そういえば、失敗したときに備えて別のSRAMも買ってあったっけ、と、思ってそっち開けてみたら、幅広のDIPだったので、そっちに載せ替えたら、読み書き成功するようになりました。うーん、読むときだけノイズに影響されていたのか?あるいはOEの線が不安定だったのか。原因はわかりませんが、とりあえず読み書き成功です。
が、起動には失敗したのですが、どうもPHYSWRITが256バイト単位で3バイトの余計な字を入れているようなので、これを直せば起動も成功するかも。
2022-04-09 10:12:10
うーむ、直したけど起動してくれない。何事も簡単ではない。。。。書き込んだ内容をベリファイするコードを書くか。。。
2022-04-09 10:31:44
書き込んだ内容をベリファイしてみたら、0を連続して書き込むときに途中からランダムにビットがフリップしてしまうことが判明したので、試しに書き込むごとにウェイトを入れながら書き込むようにしたら書き込めるようになりました。これPRETECのJEIDA SRAM Cardのデータシートを見ると、REGメモリに書き込むときは*WEが上がってから一定時間*BUSYを0にしてるようですね。ということは、*BUSYピンを使えばタイミングが取れるのかもしれません。
が、書き込みはソフトウェアでウェイトを入れればなんとかなって、IPL読むときと同じMOVSDを使って内容確認できたのに、なぜIPLが起動しないのか?ピッツバーグは夜になったので、今日はとりあえずここまでにして引き続き調べます。
2022-04-09 12:15:29
成功しました!ダイオードの選択が悪かったようで、電圧を測ったら起動時にSRAMのVcc-GND間の電圧が3.6Vまで低下していました。そして、テスト環境では4.5Vで、しかし、読み書きしている間は4.0V程度まで低下しているようでした。
だったらバックアップバッテリーをあきらめて(どうせ最終バージョンはFRAMで作るつもりだった)ダイオードを直結にしてプルアップ抵抗などを実装しないで、単純なRAMディスク化させてみたところ、無事安定して読み書きできて、IPLの起動も成功しました!
アナログはよくわからないので、適当にダイオードを選んだのですが、やっぱり適当はいかんですね!
ということで、Towns起動用SRAMカード生産に向けて大きな一歩になったと思います。表面実装にも自信がついたので、次は表面実装でTownsのスロットに入るFRAMカードの制作やってみます!これでmodel2, 2F, 20Fが起動できるようになったら大きいですね。僕は2Fはテストできますが、その時がきたら誰かmodel2と20Fで試してくれる人いるかな?
2022-04-10 09:39:22
お疲れ様です。
20Fでしたら私の方でもテスト可能だと思います。
model2も持っていますので、もし電源が入るようならテストできますよ。
私の持っている本体だけかもしれませんが、model2のCD速度がべらぼうに遅くて使いづらかったのですが、CD外付化で改善されるかもしれないですね。
2022-04-10 20:47:56
ありがとうございます!ロジスティクスはそのとき心配するとして、20Fがあるのはありがたいですね!
なお、進捗状況更新しました。 http://ysflight.in.coocan.jp/FM/towns/icm/j.html
2022-04-11 11:44:23
>209 山川機長さん
ダイオードで電圧低下しているのでしょうね。 これは普通のダイオードだと0.7V程度との事で、ショットキーバリアダイオードを使用すつると良いとの事です。
各種テストの方は、わたしはmodel2とMXとHCで可能です。(MXはCD-ROMエミュレータの為にバラバラに分解されていますが、必要であれば組みます)
また、回路図などを公開して頂ければ同一のものを制作する事も可能です。
2022-04-11 12:46:43
ということで、完成版(予定)の回路図とPCBデザインしてみました!2~3日中にこれでPCB発注してみようと思います!またしても他力本願で、何か気づいた点などあったら指摘していただけるとありがたいです!
https://1drv.ms/u/s!AmlM0OLrEo8vgf4SrfYY3ldxu0VIJw?e=Ic0ac7
あと、厚さですね。PCMCIAはType IIが厚さ5mmと仕様にあるのですが、それだと1.6mm PCBにFRAM乗せきらない(あるいは少しコネクタを傾けるという手があるけど)ので、0.8mm PCBにしてまたピンを曲げるか、と、思っているのですが、Type IIってもう少し厚さなかったでしたっけかね?手元のを測ろうと思ったらこの間使わないやつを片付けてしまって薄いのしか残ってないし。。。。0.8mm PCBだと出来てくるのにちょっと長く時間がかかるんですよね。
2022-04-13 10:42:09
>213 山川機長さん
簡単にですが、目を通しましたが問題ないと思います。
厚みに関しては3通りほどありそうですが、不細工な(3)が妥当ですか?
(1)PCカードコネクタを1列タイプの物を使う → ピッチが0.635となりハンダ付けが難しくなる
(2)2列挟み込みのコネクタで、オフセットタイプを使う → 推奨PCB厚が0.4~0.5なので結局ピン曲げが必要
(3)思い切って長いPCBで制作する(厚みの出る部分はスロットからはみ出させる) → 不細工
https://media.digikey.com/pdf/Data%20Sheets/Hirose%20PDFs/Hirose%20JPN/IC1_jp.pdf
↑のPage9 ICH1A-68RD-1.27SHがオフセット付きです。
2022-04-13 12:00:19
早速ありがとうございます!PCMCIAコネクタは逆差し防止のノッチ付きのやつを既に確保してしまったので、それが1.6mm厚のPCB用にできているので、ピンを曲げる覚悟を決めました!0.8mm+2.33mmだと3.13mmで、さきほど発掘したPCMCIA IDE I/F Cardの3.4mmよりも薄くなるので絶対入るはずです。(下面のピンがなるべくまっすぐになって上のピンが下に寄るように曲げなくてはならないので工法を考えているところ)。多分、うまく曲げると、ICH1A-68RD-1.27SHと似たような断面になるはずです。
LEDは無くてもいいのですが、完成版はアクセスがあったらLEDをチカチカさせたいのでLEDとトランジスタと抵抗、それと最初のプロトタイプが動かなかったのが悔しいのでショットキーダイオードを発注して、これは今週中に届くことになってます。
これが動いたら画期的ですよね。初代はSCSIカードが必要で今だと年に一枚ヤフオクに出るかどうかというレベルですが、2代目、3代目に関してはこれによって起動フロッピーディスクが作れなくてもSCSI CDから起動できるはず。というと、僕も2F起動用に10枚ぐらい作り置きしてあるYSSCSICD.SYSを組み込んだ起動フロッピーディスクを別の用途に使えることになるんですね。
2022-04-13 13:36:52
>215 山川機長さん
1つだけ、今になって思った事としてはパスコンも余裕が有ったら保険として乗せても良いかもしれません。
テスターで計れるほど動作時のVCCが落ちているんだからパスコンが効くとは思えないんですが、動作させるとVCCが落ちるのが気になってしまっています。
レスキューICカードは確かに画期的かもしれませんね。 全てのTOWNSで持っている共通のデバイスで計年劣化の心配が無い唯一のデバイスかもしれませんので。
(コネクタの物理的な寿命は存在しますが、殆どのTOWNSは積極的にICカードスロットを使っていないだろうし・・・・ 横型はホコリが溜まっていますけど)
初代のSCSIカードは先日取り外して眺めていました。 「SCSIコントローラでも載っているんだろう」と考えてたんですけど、甘かったです。
2022-04-13 14:54:03
おおなるほど。ありがとうございます!一応、完成版はFRAMを使うのでダイオードは使ってなくて電圧は多分落ちないと思います。それから一応0.1uFのパスコンをひとつだけ入れてありますが、1個増やしてみます。
2022-04-13 22:27:56
初代機はCPUの載せ替えが比較的容易なのも良いですね。
回路図拝見しました。
LEDの部分だけ2点気になりまして、
LED電流制御用の10Ωですと少なくて、明るくなるのではと思いました。
もう1つは、#WE、#OEがHの時(非アクティブ時)にLEDが点灯するように見えますので、点灯条件が逆かもしれないと思いました。
PNP型の方が合っているかも?
あまり自信がありません。
2022-04-13 23:16:33
いやあ、確認して良かった。電力と言えば、そういえばLEDが200mAで計算してたけど、LEDってそんな電力食うのかな?と、思ったら200mAはAbsolute Maximumだった。10Ωだとぎりぎりの出力で光らせるところでした。うーん、3.05V 100mAで光らせるとすると19.5Ω。2.9V 70mAだと、30Ω。10Ωの抵抗発注しちゃったから直列につなげて30Ωにして、暗かったらひとつ取ってショートさせて20Ωにしよう。
2022-04-13 23:17:33
LEDに流す電流はせいぜい数mAにしたほうが良いですよ。
2022-04-14 00:40:41
うーん、LEDは僕もせいぜい20mAと思ったのですが、↓のデータシートのFigure 4を見ると、LIME色のLEDが2.8V 50mA~3.05V 100mAの間ぐらいっぽいんですよね。
https://na2.docusign.net/Member/EmailStart.aspx?a=4f34a199-c864-46f4-bec8-a029aa55865b&acct=0e62ec17-c91f-40b7-8fe8-fb743aa34793&er=5f641439-5608-4dfa-8aaa-d991f76107f0
なるべく薄いやつ、と思って選んだのですが、LEDの選択を間違ったかな?
2022-04-14 05:47:37
リンク間違い。
https://lumileds.com/wp-content/uploads/files/DS146-luxeon-3535l-color-line-datasheet.pdf
これです。
2022-04-14 08:13:31
皆様、フォロー有り難うございます。
そう言えばLEDの所は見てませんでした。申し訳ない。
人に対してのLEDの向きやLEDの形状にもよりますが、そんなに強く光らせる必要も感じられないので、5mA~10mA程度流せば多くの場合問題ないのではと思います。
LEDの点灯に関してはWE,OE共にHiの時に点灯する回路となっていますので、Readサイクル時にWE側が点灯/OE側が消灯,Writeサイクル時にWE側が消灯/OE側が点灯でしょうか。
ICカードスロットへのアクセスサイクルがどの程度なのか解らないのですが、ウェイトが入っているとすれば消灯している時間が短くて見えないかも知れないですね。
この辺りはやってみないと解らないのかもしれません。
2022-04-14 10:18:02
うーむ、そうですか。データシートだと2.65V 20mAぐらいより下はグラフが切れててわからんですが、この設定だと抵抗にかかる電圧が2.35Vなので、0.02で割ってやると大体117Ωぐらい? うーん、どうせPCBが届くまでには日数があるので、何種類か抵抗買ってトライしてみます。
2022-04-14 11:19:00
ということで、同じURLに更新したデザインをアップロードしてみました。一応、抵抗は80Ω前後とマークしましたが、48Ωと100Ωを試していい方にしようと思います。この際なので抵抗 33, 48, 100, 1K, 2.4K をごっそりオーダーしたので、いろいろ試してみます。僕の予想では連続書き込み/読み込み中は結構LEDが暗くなるのではないかと思うんですよね。タイミングを見ると~WE, ~OEをLowにしてから読み込み終わるまでLowにしたままのはずなので、当時のメモリカードのデータシートをいくつか見たところアクセスタイムが結構200nsとかFRAMに近いものが多かったので、そういう遅いメモリに対応するためにTownsがわりとゆっくり目に読んでいるとするとこの時間は結構長いのではないかと思っています。多分回路はこのまま変わら無さそうなので明日PCBオーダーします!
2022-04-14 13:36:29
https://lumileds.com/wp-content/uploads/files/DS146-luxeon-3535l-color-line-datasheet.pdf
https://www.mouser.jp/new/lumileds/lumileds-3535l-leds/
それ照明装置用LEDなので用途違いでは……。
普通のLEDは数mAが定格ですが、ほとんどのものは定格流すと明るすぎます。
2022-04-18 01:23:27
通販サイトで緑色LEDを調べていたのですが、
1608サイズだと5m~20mA、ラジアルリードの5mmサイズで20mA、
65mA品ですと「照明にも使える」、75mA品で「放熱を考慮したハイパワー」見たいな説明がされていました。
2022-04-18 02:26:41
おおなるほど。照明用LEDって別物なんですね。うーん、とりあえず派手に光るのは好きなので、100Ωの抵抗でどんな明るさが出るかやってみます。
ふたをあけるとギラギラ光るメモリカードはそれはそれでおもしろいかもしれません! (というか本体のプラスチック透けて光ったりして)
熱くならなければいいんですけどね。まずはPCMCIA延長コネクタで外に出して実験してみます。
2022-04-19 02:02:16
まだPCB待ちですが、起動用FRAMカードはほぼ成功しそうな気がしてきたので、さらにFRAMカードにCMOSバックアップ機能をつけて、起動すると必ずCMOSをリストアするオプションを書くと、FRAMカードはデータシートによると150年はデータを保持するらしいので、当分の間CMOSバックアップバッテリーがいらなくなるのではないか、とくに充電されてしまうので簡単にバッテリーを交換しにくい2Fなどはこれでさらに救済が進むのではないか、という甘い考えを持って、そのためには32KBの中にIPL、ローダー、YSSCSICD.SYS、CMOS、オプションを全部セーブしなくてはならないので、サイズの削減に取り組んでました。YSSCSICD.SYSは7KB->6KB、ローダー17KB->13KBまで減らしたので、もう少し減らしてからオプションとかメニューとか考えようと思ってます。
ところで、オプションセーブできるようになるなら、必ずYSSCSICD.SYSを組み込むオプションも追加してやろうと思ったのですが、そうすると既にCONFIG.SYSから組み込んである場合、二重組み込みになるものの、そういう場合いちいちメモリカードを取り出すのも面倒なので、YSSCSICD.SYSにInstallation Checkを追加するところまではやり方が思いつくのですが、二重組み込みになる場合、デバイスドライバの最初のInitコールで何を返せばドライバが無かったことになるか知ってる人います?自分のデバイスドライバ開発の情報はかなり↓に頼っているのですが、
https://www.drdobbs.com/writing-ms-dos-device-drivers/184402277?pgno=9
「私、失敗しないので」という感じの書き方で失敗した場合何を返せばいいのかというのが例題にも載ってないようです。
既に考古学的なプログラミングになっていて資料が乏しいのですが、誰か知ってる人いたら教えてください。この点は、たしか津軽開発してる途中にIO.SYSを解析していて何か気が付いてメモしたような記憶があるのですが、既にメモが多すぎてどこに書いたかわからない。。。。(現在、メモは3319824バイトのテキストファイル)
2022-04-26 01:09:51
私も詳しくはないのでどうしようか悩みましたが、調べた結果を書いておきます。 間違っている可能性も有ります。
OADGのテクニカルリファレンス DOS/V技術解説編,デバイスドライバの項目ないの初期化リクエストの所に以下のような記述が有ります。
"初期化ルーチンが装置を設定できないことを決定し、メモリーを使用せずに終了したい場合、次の手順に従ってください。
・ユニット数を0に設定。
・終了アドレス・オフセットを0に設定。
・コード・セグメントに終了アドレス。セグメントを設定"
合ってると良いなぁ。
2022-04-26 17:52:22
おおなるほど!ありがとうございます!最初の2点は納得ですが、"コード・セグメントに終了アドレス。セグメントを設定"だけちょっと解釈が難しいですね。ドライバヘッダのことかな?やってみます!
2022-04-26 22:58:02
変なところに句読点が入ってましたが、中点でしたので、最後の1行は"コード・セグメントに終了アドレス・セグメントを設定"です。
OADGの文章は日本語ですが全体的に解釈に困る言い回しです。
原文だとどうかなと思ったので調べたら、"Set the ending address segment to the code segment (CS)."です。
↓ の2-20ページが該当の箇所です。
http://bitsavers.org/pdf/ibm/pc/dos/6138536_DOS_3.10_Technical_Reference_Preliminary_Feb85.pdf
2022-04-27 09:06:10
救済IPLから起動したとき、YSSCSICD.SYSがBA000H~BFFFFHにインストールされてしまう問題ですが、一応サイズ削減によってRAYXANBERの起動が可能でしたが、Operation Wolfは起動しませんでした。
現状ではIO.SYSの途中の特定のJMPFインストラクションを探して迎撃することでYSSCSICD.SYSをインストールしていましたが、IO.SYSではMSDOS.SYSの初期化後、MSCDEX.EXEインストール直前に INT 21H AH=48H を呼び出すようです。このタイミングで迎撃すればいいのではないか?ということに気がついて、そのようにしてみました。こうすると迎撃先ではMALLOCが使えるので、6KBのメモリを確保してその中にYSSCSICDをコピーしてやると、正式に確保された領域にYSSCSICD.SYSが入る上にメモリの前半を使うので、まだ津軽上の実験だけですが、Operation Wolfも起動できるようになりました。
心配な点としては、IO.SYSがYSSCSICD.SYSとLOADERを壊してしまうのではないかという点がありましたが、Towns OS V1.1L10, L20, L30, V2.1L20, L31, L51, RAYXANBER, Operation Wolfを試して動作したので、大丈夫そうです。
多分今まで起動FDを作ってCONFIG.SYSからYSSCSICD.SYSをインストールすれば動くのに、救済IPLから起動しなかったものは、この修正でかなり動くようになると思います。
ソースとイメージをgithubにPUSHしたので、よかったらお時間のあるときにでも、お試しください。
なおFRAMカードのPCBは今日か明日あたり届くようです。表面マウント対老眼の対決第二弾です!
2022-04-27 13:18:29
IO.SYS解析してみました。V2.1L31のIO.SYSだとAF37:0000066AのINT 21Hでドライバ読み込み、AF37:0000068C~で初期化のためにSTRATEGY, INTERRUPTを呼び出し、AF37:000007A1~でドライバをドライバチェインに追加、と、なっているようです。
どうもドライバを組み込ませないためには、DEVICE_ENDのセグメントをC000Hより後(C000Hだとリンクに追加してしまう)にする方法がひとつあるようです。ただ、この方法だとエラーメッセージを表示されてしまうのでちょっとクリーンではなさそうです。
もうひとつの方法はブロックデバイスであることにして、ドライブ個数(PACKET+0DH)を0にするという手があるようです。WINDYさんに教えていただいた方法の(1)ですね。最初、YSSCSICD.SYSはCHAR DEVだからどうしようかなあ、と、思ったのですが、考えてみたら組み込まないことにした時点でBlock Deviceのふりをさせればいい(WORD PTR [0] &= 07FFF) ということに気が付いたので、これはできそうですね。
Set the ending address segment to the code segment (CS).は原文を見てわかりました。原文2-20ですね。3項目のうちの最後のふたつは、
• Set the ending address offset to O.
• Set the ending address segment to the code segment (CS).
ということなので、DRIVER_ENDを、CS:0 に設定しろということですね。この場合CSはドライバが読み込まれたセグメントという意味だと思います。Townsに入ってるDOS 3.1だとEXE形式のデバイスドライバも許容しているようだったので、「CSに設定する」というと意味が謎になってしまいますが、DOSの3.0より前(多分)はデバイスドライバは.COM形式である必要があったんですね。そのため、必ずデバイスドライバのコードを実行中はCSはドライバのセグメントを指していたようなので、「CSに設定する」という表現でもあっていたのかもしれません。
2022-04-28 09:58:12
なるほど、解った様な解らない様な・・・・(汗)
歴史的な問題も絡むのか。
原文やOADGの資料には該当の記載が有ったのですが、その前にNECの資料を漁っていたのですがこちらには同じページにはその記載が有りませんでした。
そんなに綺麗にこの部分だけ抜けているなんて・・・・何故だろう。 少し悪意を感じてしまいました。
ともあれ、何とかなりそうなので安心しました。
2022-04-28 17:17:20
早速ICカード版を使わせて頂きました。
〇 今まで起動しなかった、プリンスオブペルシャ、パラメデス、サーク2の3本が、
オープニング~序盤までプレーできました!
若干の不都合はありまして、
サーク2は、町長の家や病院に入ると本来はCD-DAが止まってFM音楽に切り替わるのですが、CD-DAが再生されたままFM音楽が演奏されました。
〇 今まで動作していましたザマンホール、アルシャークは変わらず起動しました。
〇 ザ・レジェンドオブキランディアは起動しないままでした。
このゲームはCD+FDの構成なのですが、光栄のゲームと違いFD側にOSやAUTOEXEC.BAT、CONFIG.SYS、CDドライバが入っています。
救済IPLのメニュー画面でFloppyを選択した場合、YSSCSICDがロードされない事はありませんでしょうか?
遂にサーク2、プリンスオブペルシャのプレーが出来ましたので、今回のアップデートは私にとって衝撃のパワーアップでした。
うまく表現できないですがこれはヤバい。
2022-04-28 20:10:54
訂正いたします。
ザ・レジェンドオブキランディアのFDにCDドライバは入っていません。
入っているのはOS、AUTOEXEC.BAT(MSCDEXあり)、CONFIG.SYS、RUN386やゲーム実行ファイルなどです。
2022-04-28 20:54:09
おおなるほど。早速のご確認ありがとうございます!いくつか新しいタイトルが動くようになったようで、良かったです!
FDから起動を選ぶとYSSCSICDはロードしてません。どうしてそうなってるかというとFD/HD起動の場合はFD/HDにYSSCSCCD.SYSをCONFIG.SYSで組み込むことができるから、という理由なのですが、FDにプロテクトがかかってたりする場合、バックアップを取ってそっちのFDにYSSCSICD.SYSを組み込むということができないので、オプションでどこから起動してもYSSCSICDを組み込めるようにしようと思っています。メモリの真ん中にYSSCSICDが非公式に常駐するという状況も解消できたし、オプションでなく必ず組み込むことにしてしまってもいいかもしれないですね。
それから、CDDAが止まらない原因は多分わかって、CD-ROM BIOSには、n秒後にCDDA停止という機能があるのですが、SCSIコマンドでは対応できないので無視しています。うーん、即時停止で良ければできるんですがね。同じ理由でリピートも対応してないんですよ。
2022-04-29 06:37:46
オプションになってませんが、SCSI CDドライブをつなげてるということは、それを使うということだろうということで、SCSI CDドライブが検出された場合は起動デバイスに関わらずYSSCSICD.SYSを組み込むように修正してみました。これでキランディア起動しないですかね?そのうち、組み込むか、組み込まないか選べるようにしようと思います。
なお、PCB届きました。明日はついに老眼対表面マウント対決です!
2022-04-29 14:01:29
ザ・レジェンドオブキランディア、起動しました!
CONFIG.SYSの編集をサボりたい私にとって便利な機能です。
プロテクトの有無は判別するのが難しそうですし。
英雄伝説やダイナソアで、CD音源への変更が出来るようになっているといいですね。
> CD-ROM BIOSには、n秒後にCDDA停止という機能があるのですが、SCSIコマンドでは対応できないので
> 無視しています。うーん、即時停止で良ければできるんですがね。
なるほど、即時停止にしてしまうと、他のソフトで音が出ない可能性がありそうですね。悩ましい。
サーク2だとCD-DAを止めて、FM音楽を開始して・・・の間に発生するかもしれない僅かな無音時間を減らすために、この機能を使用しているのかな。
> なお、PCB届きました。
いよいよですね。
もし私の方でのテストが必要になりましたら、メールにて送付先をお知らせしますね。
2022-04-29 20:10:02
大成功!老眼の勝利でした!
なお、LEDは100Ωでぎらぎら光ってます!熱くならないようなので、これはこれでいいや、という気になってます!
もう少しテストしてからSchmaticとPCBを公開します!
2022-04-30 09:00:01
お疲れさまでした。
こちらは追加報告です。
CD+FD構成のサムライスピリッツと、英雄伝説+CD音源での動作を確認しました。
英雄伝説につきましては、セーブデータのロード時にディスクエラーが出る事がありましたが問題は無さそうでした。
YM2203音源のを使用すれば、PC-98版をプレーしているような感覚になれますよ。
2022-04-30 11:15:58
山川機長はレベルアップした!
表面マウントが使えるようになった!
とりあえず、完成版のSchematicとPCBを
https://github.com/captainys/FM/tree/master/TOWNS/KiCAD/FRAMCard
ここに上げました!MXと2Fのスロットに0.8mm厚のクレジットカードを一緒に差し込んでみたら入ったので、どうやら1.6mm厚のPCBでも大丈夫のようです。その方がPCBがペラペラしなくて良さそうです。
2022-04-30 11:46:34
たった今、FM TOWNS 2FもICメモリカード経由SCSI CDドライブからの起動を確認しました!
ただ、なぜかスロットに最後まで入って行かなくて、延長アダプタを介する必要がありました。何がひっかかっているのやら。
2022-05-01 10:01:59
ICメモリカードによるTowns 2Fの起動には成功したのですが、24KHzモードなものでメニューが見えませんでした。そこで、31KHzにしてしまおう、と、思って、試しに通常の640x480 16色モードに設定してからCRTCのLO0, LO1を80として1行あたりのバイト数を80*4=320バイトに無理やり設定してみたところ、MXだとなんと、31KHzモードなのに、一応コマンドモードの画面が見えるようになりました。
ですが、惜しくも、ノイズが乗るのでいまいちでした。こうなったらUnreal Modeを使って、640x480モードでVRAMにストレートにフォントを書くコードを書いてやろう、と、思って書いてみて、MXで実行できることは確認したのですが、Unreal Modeだけに他のCPUで動くか自信が75%ぐらいしかありません。もしもよかったら、お手持ちのTownsでコマンドモード(ORICONなどでも可)に入って、以下のURLにあるCRTCTEST.EXEを実行してテキストが表示されるかテストしてみていただけるでしょうか?
https://1drv.ms/u/s!AmlM0OLrEo8vgoABw0bMroGqL1J_iQ?e=q3Yu3P
これができたら、救済IPLのメニューを640x480モードにして、MX以前の内蔵アップスキャンコンバータを持ってない機種でも31KHzメニューが出るようにできると思います。良かったらご協力ください。
それから、
https://github.com/captainys/FM/tree/master/TOWNS/IPL/TOWNSOS
ここにTowns OSで動くIC Memory Card Rescue IPL Writerを追加しました。実機が無いと起動用ICメモリカードを作れないのだとニワトリと卵ですが、我が家のように二台TOWNSがあって片方が怪しいような場合だと使い道があると思います。
2022-05-02 11:59:17
ICメモリカードを使った2Fの起動成功おめでとうございます。
24KHz非対応なモニタにTownsを直接繋いでコマンドモードでCRTCTEST.EXEを実行してみました。
その結果、CXとHCで正常に31KHz出力できることを確認しました。
ご参考になればと思います。
2022-05-03 01:20:34
早速ありがとうございます!我がMXでも動作したので、386,486,Pentiumで行けるようなので、大丈夫そうですね!後ほどIPLを更新してMXより前の機種でも31KHzでメニューが出るように書き換えます!しかし、640x480モードのCRTCセッティングでLO0, LO1を0080hにするとなぜノイズが乗るのだろう。。。。
ちなみに、IPLのローダー後はまた24KHzに戻して起動プロセス続行とする(そうしないと一部のゲームが24KHzを前提にしてるので動かない)のですが、機種判別してMXより前のモデルだったら31KHzなんだけどLO0,LO1を0080Hにした画面モードで続行させるとノイズは乗るものの31KHzモニタで画面が見えるようになる鴨しれません。これもオプションがセーブできるようになったらいい鴨しれないですね。
2022-05-03 04:29:22
> LO0, LO1を0080hにするとなぜノイズが乗るのだろう。。。。
80h ではなくて 80 (50h) ですよね。
この場合、1024バイト境界をまたぐときのキャリーがライン途中で発生するので、これを捨てていると正常に表示されません。(さきの1024バイト境界まで巻き戻る)
CRTCのレジスタ28番(1ch番)の CEN0(あるいはCEN1) を1にセットすれば直りますよ。
2022-05-03 05:26:24
おおなるほど!そうだったんですね!大工事して通常の640x480モードで描画するようにしてみたものの、そのような方法があったとは!
そっちの方がローダーサイズが小さくなるので、そのようにしてみます。
なお、大工事後のIPLを今PUSHしてしまったので、一応、工事の後見れるようになってます(^_^;)
ありがとうございます!
2022-05-03 11:11:09
2FとMXで動作確認しました。pinさん、さすがです!ありがとうございます!IPLからIO.SYSにパッチ当てて起動時のコンソールモードも31KHzになるようにしてやろうか、などと思ってしまいますね。
せっかく書いたコードを消してしまうのももったいないので、31KHzMenuというBranch作って残しました(^_^;)
あとは、オプションでICMへのCMOSバックアップとリストア、それと自動リストアオプションが選べるようにしたら、とりあえずIPLの目的は達成という感じになってきました。
2022-05-03 12:10:35
CRTCTEST.EXE、20FとSNで31kHz表示確認できまして、MARTYではハングアップしました。
2022-05-03 20:06:30
おお、すみません。テストしていただいてありがとうございます!しかし、CRTCTEST.EXEはTownsの標準的な640x480モードにCRTCを設定した上でUnreal Modeを使ってVRAMにビットマップを書き込むテストだったのですが、pinさんから31KHzでFM-R互換モードでVRAM書き込んでもノイズが出ない方法を教えていただいたもので、使わなくても良くなってしまいました。
それから、MartyやUXなど386SX機はVRAMの物理アドレスが違う影響で実行できないですね。ですが、386SX機はもともとIPLが使えないので、影響はないですね。
2022-05-03 21:19:58
そうでしたか!赤本を見ながらpinさんと山川機長さんのやり取りを見ていたのですが、何をしているのか読み解けていませんでした。
答えを教えてもらってようやく見えてきました。
貴重な情報やヒントがたくさんあってありがたいです。
CRTCTEST.EXEを実行した時も、コマンドモードの文字と3色のグラフィック文字?が合成されて、TOWNSのMS-DOSでもこんな合成ができるんだと驚いていました。
2022-05-04 11:09:04
試作品の写真その他アップロードしました。
http://ysflight.com/FM/towns/icm/j.html#20220503
2022-05-04 13:20:53
あれ?なんか書き込めなくなった気がするけど、今度は書けるかな?
UXなど386SX機の救済についてなのですが、一連のIC Memory Cardの解析で、Towns OS V1.1 L30~V2.1 L20までのIO.SYSにはバグがあり、メモリカードが刺さっていると正しくない物理アドレスからMSDOS.SYSを読み込んでクラッシュしてしまうという問題があります。どうも、その正しくないアドレスというのがメモリカードの一部のような感じです。
386SX機は、IPL、IO.SYS、RUN386などがすべてROMドライブに入っているため、IPLを書いて起動プロセスを乗っ取ることはできなかったのですが、UX,UGが出たタイミングを考えるとIO.SYSには同じバグが入っているのではないか、だとすればUXがMSDOS.SYSだと思って読み込む部分にIPLを埋め込めば、起動プロセスを乗っ取ることができるのではないか、というアイディアが出たのですが、手いっぱいでいつ実験・実現できるかはわからんですね。
しかしこれをもってしてもMartyの起動はわからんですね。あ、いや、津軽でMarty起動できるようになってるからメモリカード起動のプロセスぐらいわかるか。うーん、と、言ってもSCSIインターフェースが無いからやっぱり救えないか。
2022-05-05 00:42:39
メモリカード用IPL更新して、CMOSバックアップ、リストア、オートリストアに対応しました!うちは、2Fでちょっとテストが大変な状況(MXからケーブルとかつなぎなおしにくい) なので、まだMXでしかテストしていませんが、バックアップ・リストアできているように見えます。(実機で試すまでCMOS RAMをメモリマップしたときはバイトアクセスのみと知らなかった)。
ということで、CMOSバックアップバッテリーがだめになったTOWNSでもメモリカード起動すれば毎回メモリカードからCMOSと辞書RAMを復旧できるようになりました。後期のバッテリーがはんだ付けされているモデルだと、基盤をばらしてはんだ付けするのはさすがに怖いという6年前ぐらいの僕のようなユーザでも、ドライブ構成とか保存できると思います。後期モデルだと、ICMキーを押しながら起動ができましたが、2Fとかだとハードディスクつなげた状態では、すべてのパーティションで起動フラグをオフにするとメモリカードから起動するかな?多分。
我が2Fのメインの任務は最近はレトロゲームナイトとかDemosplashとかのイベントでゲームを走らせることなので、メモリカード経由でSCSI CDドライブから起動できる時点で目的には十分なんですがね。
2022-05-05 12:21:15
お疲れ様です。
これで電池切れっぱなしの実機でもHDD運用が出来るのですね。
今は外付けドライブをASPIマネージャで使っているだけですが、内蔵ドライブを探してこようかな。
> 386SX機は、IPL、IO.SYS、RUN386などがすべてROMドライブに入っているため
なんだかすごいですね。複雑すぎて調査が大変そうな予感がしますが、OS無しディスクからの起動の可能性などの夢が詰まっていそう。
マーティーのROMでうんづを使用していた時、FDDのシングルドライブモードを解除してもTowns OS V2.1 L20以前だと1ドライブしか使えなかったのですが、この辺りが理由なのでしょうかねぇ。
> メモリカードが刺さっていると正しくない物理アドレスからMSDOS.SYSを読み込んでクラッシュ
空のICカードを挿したままの20Fですと、内蔵CDドライブからTowns OS V2.1 L20の起動が出来たのですが、この現象って旧版IPLブード+SCSI-CDの時だけですか?
2022-05-05 15:15:07
おおなるほど!どうやら、このバグにひっかかるのは、メモリカード先頭の4バイトが"IPL4"の場合に限られるようです。興味深いですね。IO.SYSの初期化の一部で、デバイスID=40Hに対してGet Drive Status (AH=02H)を出すのですが、本来40HはROMドライブのデバイスIDらしいのですが、このときメモリカードが入っているとポインタを書き替えてメモリカードのアドレスを見に行くようになってしまう、のですが、どうやらどこかで"IPL4"が書いてあったらそこがROMドライブ、みたいなチェックをしているようです。ひょっとすると富士通内部でこの機能を開発中何かの目的で使っていたかもしれませんね。
2022-05-06 14:09:07
IPL、バージョン20220506cでは、IO.SYSにパッチを当てて、Towns OS V2.1以降の起動中のコンソールも31KHzで出すようにしてしまいました。これによりうちの2Fも起動中のメッセージが見えるようになりました(やりすぎだろうか)。
ちなみに、PCMCIAは電源入った状態で抜き差ししても平気だから、FRAMカードも平気か、と、思ったらデータの破損が起きたので、やめた方が良さそうでした。ちょっと思ったのは、ひょっとするとパスコン入れない方がいいのだろうか?という点で、実はコンデンサから供給電圧がちょっとずつ減っていくよりも、コネクタから抜いたらシャープに電源電圧が消える方が良かったりするのでしょうか?
2022-05-07 11:35:03
ありがとうございます!
解析がおはやい。
> どうやらどこかで"IPL4"が書いてあったらそこがROMドライブ、みたいなチェックを
内蔵ROMドライブと同じようにICカードにMSDOS.SYSとMSCDEX.EXEを書き込んでおけば、それらが使用されて起動するんでしょうかねぇ。
富士通の方がどのように使用されていたのか、妄想するのが楽しくなりそうです。
> このときメモリカードが入っているとポインタを書き替えて
そんな使い方があったのか・・・。すごい。
Towns OS V2.1 L20が起動できるかどうかは、IPL4の有無が原因でしたか。
20Fに該当ICカードを挿して、内蔵CDからTowns OS V2.1 L20を起動させたところ無事に止まりました。
マーティーでは、Towns OS V1.1 L30とV2.1 L20のどちらも起動してしまいました。
2022-05-07 12:30:51
ごはんを食べててリロードせずに投稿してしまいました(汗
他のアドレスやデータピンよりもCS、WEの方が先に電圧が下がってしまったのかな。
WEはLEDにも接続されているから、他よりも早く下がりそうな気配はあるのですが。
何が原因なんだろう。
メモリカードスロットのC0000000hは486CPUキャッシュのアンキャッシャブル領域ですよね多分。
2022-05-07 12:56:22
山川機長さんの258の書き込みが興味深くて、色々妄想していたところ別の興味深い結果が得られました。
互換ROM(512KB)をICカードに書き込み、それを20Fへ挿した状態で内蔵CDドライブにTowns OS V2.1 L20のCDをセットし、電源を入れたところ互換ROMが読み込まれて起動しました。
起動画面を撮影して確認したところ、YAMAND.COM for FM TOWNS Emulators. By CaptainYS の文字が表示されていました。
これは面白いですね。
2022-05-07 19:41:39
非常に興味深い実験をしていただきありがとうございます!まさかYSDOSとYAMAND.COMが実機で走るとは!おそらく初の事例ですね。
~CEと~WEが先に下がってしまった説は説得力ありますね。Vccが下がったとき~CEと~WEをパスコンからPull Upなんてできるのでしょうか?いや、単にVccからPull Upしておくといいのだろうか。
これまで結構実験してきましたが、データ壊れたのは電源入れたまま抜き差ししたとき一度だけなので、多分それをしなければ大丈夫のようです。
2022-05-07 23:42:29
FRAMカード用IPLですが、なんとかすべてを32KBに詰め込もうとしていたんですが、ふと、「あれ? 32KBのFRAMチップを2個積んでるんだから、合計64KBじゃね?」ということについさっき気が付いたんですが、64KB積んでますね。。。。アドレスバス全部繋げてあったから普通にC0008000H以降に書き込むことができました。ここ数日の苦労は。。。。いや、よくあること、よくあること。
しかし、32KB以上の余裕があることに気が付いたんで、フロッピーディスクフォーマットとかいろいろ追加できそうな気がしてきました。
なんかデモを埋め込めないだろうか。
2022-05-08 04:01:37
非アクセス時に点灯する条件のLEDの存在が原因、と仮定した場合次の可能性を予想してみました。
①ICカード抜き取り後にGNDが浮くのと、VCC-GND間の抵抗値が低くて、FRAMが想定している電圧降下速度よりも早く電位差が無くなる。
②トランジスタのベースからの吸い込みが多くて、_WEが早く下がり、トランジスタが閉じてVCCが下がるのが遅れてしまう。
これだと_CSは下がっていなさそうですし・・・FRAM内部で_CS~_WE間の抵抗が低いなんて事があるのかな。
LEDをそのままにするのでしたら、プルアップは解決案の一つになりそう。
>なんかデモを埋め込めないだろうか。
TOWNS初のエンターテイメント系ICカードになるのでしょうか。
魅力的なアイテム。
ゲーム好き向け路線ですと、パッチ済みの雷電伝説などのファイルを置くための空間ってのも嬉しいかもです。
2022-05-08 11:41:49
> パッチ済みの雷電伝説などのファイルを置くための空間
今になって気づきましたが、
電池切れでもハードディスクが使えるようになったのですから、パッチを当てたゲーム専用のパーティションを2つ(V1.1とV2.1)用意すれば不便なく遊べそうですね。
それと救済IPLの追加報告です。
レインボーアイランドエクストラとぷよぷよは、プレー可能ですがBGMが演奏されませんでした。
エンジェル、Evolutionは問題無さそうでした。
2022-05-09 20:50:47
すみません、レインボーアイランドエクストラとぷよぷよは、パッチがリリースされていたのを見落としていました。
2022-05-09 21:12:29
Rainbow Island Extraのセクタ0は意図的かどうか、意図的の方がすごいような気がします。でもそれ以降のVINGのSplatter Houseとかにはかかってないですね。想像ですが、誰か偶然間違ってCRCエラー入りのCDを作ってしまったら、「あれ?これTOWNSで普通に読めるんじゃね?」ということに気が付いて、セクタ0を意図的にCRCエラーにしておいたらCD-Rでコピーしようとしてもエラーが出るからコピーできない、というコピープロテクトにしたのではないか、でも、新しいバージョンのTOWNSのドライブが真面目にCRCエラーをチェック始めたらどうするんだ!という話になってやっぱり次からやめたのではないか、というのが僕の説なんですがね。
2022-05-09 22:50:50
暫く留守にしていました。 ICカードは無事成功のようで、素晴らしい事だと思います。
ホットプラグでメモリが書き換わってしまう事があるようで、私も何か有るかなと考えたのですが、カードの物理特性上では電源ピン,信号ピン,検出ピンでは長さが違います。
電源ピン = 5mm,信号ピン = 4.25mm,検出ピン = 3.5mmで、これからすると電源ピンが抜けたときにはCEとWEは既にオープンとなってますよね。
その瞬間のデータやアドレスに関しても同様ですので、メモリからするとどう解釈されるかは判らず、メモリの書換が起こる可能性が高そうです。
CSとWEに関してはプルアップすると少なくとも書換が起こる事は防げるような気がします。
2022-05-10 11:51:04
なるほど!wikipediaで見たのですが、FRAMからの読み出しは基本的にdestructiveなので、write-after-readの仕組みが必要とあるので、これは、読み出しが途中まで進んでしまったところで力尽きてもデータ破損が起きそうな気がします。
バッテリーバックアップ付きメモリカードの回路図で、~CE1,~CE2をpull-upしているようだったので、多分この仕組みでなんとかなるような気がします。次のバージョンで試してみます。
2022-05-10 22:05:43
(「やってみます」って書く前にやってみてから書けばいいのに、僕はこのパターンが多い気がする)。無理やり基盤上のチップの~CEピンと+5Vの間に4.7Kの抵抗を挟んでみました。試しに10回ホットプラグ・ホットアンプラグを繰り返しましたが、データの破損は見られませんでした!前回は、一回ホットアンプラグ&プラグで最初の3バイトぐらいが壊れていたので、これで結構直ったような気がします。いつも貴重なアドバイスをありがとうございます!
なお、YSSCSICD.SYSでゲーム起動してもCDDAが本体のスピーカーから鳴らないからスピーカー持って行かなきゃならなくて面倒なんだようなあ、と、思っていたのですが、ふと、CDDA再生コマンドが入ったらLINE INのMUTE解除するようにすればSCSI CDのオーディオをLINE INにつなげておくと本体のスピーカーで音が鳴るようできるのではないか、ということに気が付いたので、そのようにしてみます。CD再生開始後にあらためてLINE INのボリューム消したりすればだめですが、わざわざLINE INのボリュームゼロにしているものはほぼ無いのではないか、と思います。
2022-05-11 08:45:50
FRAMカードのデータシート見たら明示的に~CEピンをプルアップした方が良い、って書いてあるし。真面目にデータシート全部読んでから始めるべきだった。まあ、わかったからいいけど。
2022-05-12 05:39:56
何はともあれ解決に向かって良かったですね。
aochanさんの発言が無かったらピンの長さの事はすっかり忘れてたので思い出さなかったし、(PCMCIAの解説書を読んだのにちっとも覚えてない)
FRAMチップのデータシートも読んだのに全く気づいてないし・・・・ 本当なら回路図を見たときに気づくべきだったかもとは思います。
きっと、回路設計者なら気づいてたんだろうなぁ。
2022-05-12 17:43:41
救済IPLの入ったFDをmodel2に入れたらどうなるのか、31KHz出力の確認も兼ねて確認してみました。
結果、なんと普通に起動してしまいました。
Towns OS V2.1L51,rayxanber,AfterBurnerII,memories共にOKでした。
ついでにCD-DAのミキシングに背面のLine inが使えないかと思い繋いでみましたが、
残念ながらゲーム側でミュートされてしまうようでした。
2022-05-13 20:51:57
スピーカー搭載のCDドライブを使っているのですが、音がガビガビなのでオーディオイン対応は有難いです。
Xak2はTOWNS内蔵スピーカーからCD-DA音が出力されるようになりました。
また、病院や町長の家に入った時の不具合も解消されていまして、CD-DAが止まり、FM音だけが演奏されるようになりました。
(今まではCD-DAが止まらず、FM音と同時に鳴っていました)
この時にオーディオケーブルを抜くとCDドライブからはCD-DAの音楽は再生されたままでした。
プリンスオブペルシャでは、画面が上に寄り、下側80ライン?はゲームの上の方のグラフィック、もしくは次に表示される場面のグラフィックの一部などで埋まっていました。
また、このソフトは新救済IPLを使用せずともオーディオインが有効になっていました。
2022-05-14 14:34:59
ライザンバーもオーディオイン経由でTOWNS内蔵スピーカーからCD-DAの音が出ました。
機種はSN、救済IPLはICカード版です。
目玉TOWNS(CXあたり?)を使ってCDISC2で色々遊んでいた頃、オーディオインを有効にするcomファイルを作ってミキシングをしていたのですが、ある時期から何故かミキシングが有効にならなくなりました。
もしかするとミキシング回路に壊れやすい部品があるのかな?と密かに疑っています。
2022-05-14 15:31:05
すみませんFD版は386sx以外全機種で使えるんですね。
自分の記憶違いでした。失礼しました。
audio inの件はTowns OSV2.1L51からアフターバーナーのab2.exp起動で試してみたのですが、
タイトルによっては有効のままなんですね。
2022-05-14 21:34:45
aochanさん、D-Typeさん、
いろいろテストしていただきありがとうございます!LINE IN無事機能しているようでよかったです!
AfterburnerIIですが、うちのMXだとLINE INから音が入りますね。ただ、うちのMXだとBGMがかなり小さいですね。LINE INのボリュームはMAXにしていて、SCSI CDドライブのボリュームもMAXなので、これが限界のようです。Xak2の問題が直ったのは、偶然かもしれません。最新版のYSSCSICD.SYSだと、CDDA Play/ResumeコマンドでLINE INのボリュームMax (3FH)、Stop/PauseでMuteとしています。
2022-05-15 06:35:22
あ、プリンスオブペルシャは、おそらく起動時からCRTCを変更していないのではないかと思います。Amaranth IIIとかもそうなんですよね。起動時の640x400モードをそのまま使っているのですが、これだと、津軽としてはCRTCレジスタ設定時をつかまえてアプリケーションの起動を検出という手が使えないので、Amaranth IIIは何か別の手を使ったんだったような。しかし、救済IPLは変則640x480モードにしてしまうので、本来見えないはずの画面下80ピクセルが見えてしまうのだと思います。多分31KHzのまま見えなくすることも可能なのですが、見えるのはそれはそれでおもしろいような。
2022-05-15 11:22:58
見えない部分が見えて楽しいので、消すのは勿体ない気もしますね。
20Fの内蔵CDドライブでXak2の様子を見ました。
町(CD-DA)→町長の家に入るとCD-DAが1秒くらいかけてフェードアウト→FM音楽開始と同時に町長の顔表示→家を出る→FM音がフェードアウト→CD-DA演奏開始と同時に町で移動可能になる。
救済IPLでLINE-IN使用の場合
町(CD-DA)→町長の家に入ると1秒くらい経過してCD-DAの音楽が止まる→FM音楽開始と同時に町長の顔表示→家を出る→FM音がフェードアウト→CD-DA演奏開始と同時に町で移動可能になる。
Xak2ではCD-INのボリュームを徐々に下げた後にミュートをしていて、たまたまCD-INとLINE-INの両方を選択してミュートしていた事になるのかな。
ボリュームのBIOS置き換えが出来れば、CD-IN(Lチャンネル)、CD-IN(Rチャンネル)のミュートを、LINE-INのL、Rチャンネルに置き換えて、ふしぎの海のナディアの音声の問題解決になる可能性がありそうですね。
2022-05-15 17:57:53
先に書いたAfterburnerIIのCD-DAが鳴らない件ですが、CDの劣化による蒸着面の欠損でした。
内蔵ドライブに入れたら全く起動しないので、もしやと思い盤面を見たら蒸着面に小さな穴があいていました。
TownsOSのCDプレイヤーが鳴るからおかしいとは思っていたのですが…
お騒がせしました。
2022-05-15 18:11:11
>281自己レスです。
正常動作するAfterburnerIIを手に入れて、CXでFD版の救済IPLを使い起動し、ミキシングが正しく動作することを確認しました。
Towns本体は無事なようです。前のディスクとハッシュの比較しようと思ったのですがマイナーバージョンが違うのでそれは叶わず。
古いほうは1.02なんですがAB2.EXPのSHA1が"C7A27D1DD15269AD09F050B0F60B006BA0195428" でした。
難あり品のほうをWindowsPCに取り込んだら普通にイメージ化できたので津軽でSCSICDとして動かしてみたのですが、
Ver.20220330で音も動作も正常でした。どうも変なディスクです。
原因がいまいち分かりませんが、正常なディスクが手に入って良かったっす。
2022-06-11 02:27:21
私のAfterburnerIIも1.02でしたので、SHA1を出したところ下記の値で多分同じです。
SHA1: c7a27d1dd15269ad09f050b0f60b006ba0195428
ナディアのボリューム関連(ラインINとCD-IN入れ替え)のためにINT80hを変更しようと思い、リアルモードの0000:0200hを見に行ったらそれらしき物が全くなくて(RUN386使用時にINT80hが有効になる??)、
諦めて次にDXレジスタに04E2hを入れてそうなバイナリを適当にサーチして、1個所ずつ04E0hへ変更してもダメでした。
TOWNSのアンリアルモードをちゃんと調べて、丁寧に解析をしなきゃいけないなと痛感しています。
それとICカード版の追加報告で、サムライスピリッツとエルムナイトがスタート~序盤でプレー出来ました。
2022-06-21 00:11:17
サウンドBIOSの 80h のことでしたら、int 80h ではなく push 110h; pop fs; call fword ptr fs:[80h] になります。
run386は110hのセレクタを、CMOSの内容から設定します。(I/O 3b90hからの4バイトが物理アドレス、3b98hからの4バイトがサイズ)
サウンドBIOSのアドレスでしたら、たぶんこんな感じで辿れるのではないでしょうか。
tbios_phys_addr = dword_of(in(39b6h), in(39b4h), in(39b2h), in(39b0h))
snd_ptr = unreal_read_far_ptr(tbios_phys_addr + 80h)
assert selector_of(snd_ptr) == 110h
snd_phys_addr = tbios_phys_addr + offset_of(snd_ptr)
2022-06-21 01:03:11
ありがとうございます!CMOSにそのような役割があったなんて・・・。時間を作って早く調べたい。
2022-06-21 06:19:09
> aochanさん
SHA1の書き込みありがとうございます。
そうですか同じでしたか。不思議だなあorz
2022-06-21 20:00:49
山川機長さん制作のFMTOWNS起動用FRAMカードを預からさせてもらっています。
全部で4枚預かっていますが、aochanさんとD-Typeさんに1枚ずつを優先的に割り当てたいと思います。(以前に掲示板にて動作テストに手を挙げていただいた経緯です)
残りは2枚となりますが、興味がある方で動作テストに協力していただける方がいらっしゃればその方にも割り当てたいと思っていますが2名より多い場合はこの2枚を
期限を設けて皆で順に動作確認をしようと思います。
aochanさん,D-Typeさん,その他興味のある方は、下記メールアドレスにハンドル名と連絡先メールアドレスを書いてメールを入れていただけますでしょうか?
折り返し具体的な方法について私の方から(別アドレスより)メールを入れさせていただきます。
[email protected]
2022-07-01 22:40:10
WINDY さん
先ほどメールいたしました!
2022-07-02 12:15:32
WINDYさん、
お忙しい中、FRAMカードの件ありがとうございます!
aochanさん、D-Typeさん、
もしもよろしければテストにご協力ください!
よろしくお願いします!
2022-07-03 00:05:21
了解しました。ありがとうございます。
今メールを送りました。よろしくお願いします!
2022-07-03 18:04:31
早速SNと初代機で試したところ共に外付CDドライブでライザンバーを起動でき、オーディオINも有効になっていましてなんら問題なさそうです。
しばらく挿したままで運用しようと思います。
外付CDドライブだと読み込みが速いから、初代機でも快適になりますね。
2022-07-06 01:10:47
>291 aochanさん
無事届いて良かったです。(昨日は結構な雨だったので少し心配でした)
初代機でも快適・・・・ そうか! そう言うメリットもアリなんですね。
私もまだなのですが、Wikiの方にレスキューIPLの動作確認リストが有りますのでもし確認が取れていないドライブやソフトが有ればそちらに書き込むか、この掲示板でお知らせください。
2022-07-06 08:59:25
aochanさん、
おおー、初代機で成功しましたか!SCSIカード搭載の初代機はなかなか無いので貴重品ですね。
テストしていただきありがとうございます!
2022-07-06 14:35:30
山川機長さん、WINDYさん、頒布ありがとうございます。本日無事にFRAMカードを受け取ることができました。
これはスマートで素晴らしいですね!
FDのように摩耗を気にする必要もないですし、非常に快適です。
CMOS設定、バックアップ、リストアも手軽で使い易いですね。
一々OSを起動して設定しなくてもジョイパッドで設定可能なのが便利です。
先ず、HCとCXでTownsOSV2.1L51とアフターバーナーIIを起動しましたが問題なく動きました。
後でmodel2を引っ張り出して動かしてみます。
とりあえずご報告まで。
2022-07-06 18:59:39
先程Model2で動かしてみたところ、問題なくICMCでブートができました。
ソフトはTownsOSV2.1L51とアフターバーナーIIを試して問題ありませんでした。
Model2のメモリーカードスロットはただの穴だと以前何かで見たのですが、
本当にレールもイジェクト機構もないので、試す方がいらっしゃったらお気を付けてください。
2022-07-06 21:09:13
D-Typeさん、
テストしていただき、ありがとうございます!これで、初代、CX、HCで動作が確認できましたね!うちのMXと2Fでも入れっぱなしで使っているので、どうやらTOWNSの386SXを除くすべてのモデルで使えそうですね!
しかし、model2のスロットは、ただの穴なんですね。2Fは、一応脱落防止のためのレールと、Ejectボタンはありますね。
2022-07-06 22:58:55
>295 D-Typeさん
無事届いたようで安心しました。
初代のカードスロットはほんとに危険ですよね、もし内部に落としてしまったら結構バラさないと取り出せないし。
初代は完全に分解したことは無いのですが、話によるとそれはまさしく箱根細工のような構造だとどこかで見た覚えが有ります。(なので分解してません)
今更なのですが、メモリカードスロットは結構汎用性が高いスロットなのかもしれないと考えてます。
「MCUかFPGAを繋げたら何か出来るかなぁ」等と野望が頭をもたげます。 割り込みがかけれないのが欠点ですけど。
2022-07-06 23:02:34
>296 山川機長さん
こちらこそありがとうございます!無事テストができて一安心です。
本当にこれは素晴らしい技術ですね。流石です!
メモリーカードスロットを使う方法は使い方が簡単でいいですね。
>297 WINDYさん
送って頂きましてありがとうございます。
縦型Townsの構造はどれも複雑で、開けるのは難しそうですね。
職人さんが書いた本を見てCXの調整をしたことがありますが、プラスチックが弱くなっていて苦労した記憶があります。
メモリカードスロットの活用法は考えるだけでも夢が広がりますね。
2022-07-07 01:57:49
質問です。
IC Memory Card 救済IPL書き込みユーティリティ(ICMWRITE.EXP)はFRAMカードに使えるのでしょうか。
“書き込み内容が一致しませんでした。”というエラーが出るのですが、この場合書き込みはされているのでしょうか。
何方かご教授頂けますと幸いです。
2022-09-30 23:54:54
使えます、というかそれ以外今のところユーティリティが無いですね。ただ、書き込み内容が一致しなかったというのは、ベリファイに失敗してますね。ライトプロテクトがかかっていた場合は、ライトプロテクトエラーになるはずなので、書き込みに失敗していると思います。それって、先日送ったFRAMカードでしょうか?アメリカの知り合いにもひとつ送ったところ、コネクタのはんだ付けが甘くて輸送中に取れてしまったらしく、彼はハンダを溶かしなおしたら直ったと言ってたんですよね。同じ状況になってないと良いのですが。
2022-10-01 09:36:49
>山川機長様
そうです。先日送って頂いたものです。Townsが非常に使い易くなりました。ありがとうございます。
今は2022511cが正常に動作しているのですが、そこに同じバージョンの上書きを試しています。
icmwriteの使い方は何処かに書いてありますでしょうか。
起動方法を幾つか試したのですが、普通にダブルクリックで起動したり、
run386 -nocrt icmwrite.exp icmimage.bin
を実行したりしたのですが、同様のエラーメッセージでした。
icmimage.binがカレントドライブになくてもエラーに変化が無いので、パラメータに問題があるのかもと思っています。
なお、ライトプロテクトスイッチはunprotectに切り替えたままで、cmosバックアップとリストアがエラーなく動作しています。
FRAMカードは段ボールを切り抜いて頑丈なパッキングが施されていたので大丈夫だと思いたいところですが、
悪あがきしても駄目だったらはんだを溶かすのもやってみようかと思います。
2022-10-01 21:03:57
私の環境でもFRAMカード、SRAMカード共に同じく“書き込み内容が一致しませんでした。”と表示されます。
run386 icmwrite.exp
を打ち込んで、メニューに従って書き込みを選択しています。
エラーが表示されるものの、書き込みは行われているようで、そのまま救済IPLとして使用しています。
普段書き込みに使用しているユーティリティでもFRAMカードではエラー表示されますが、書き込みは出来ているようです。
同ユーティリティでSRAMカードへ書き込む場合、容量64KB程度の小容量を指定した時だけエラー表示され、書き込みは正常に行えていた記憶があります。
2022-10-02 12:19:39
> aochanさん
あの状態で書き込みはできているのですね。
Towns本体の故障も疑っていたのですが、安心しました。
情報ありがとうございます。
2022-10-02 20:04:32
おおなるほど。それは、ICMWRITEのバグっぽいですね。確認してみます。ありがとうございます!
2022-10-03 03:15:58
コロナ陽性とその後の延期になった仕事の火の粉で大変でしたので暫く見れていませんでした。
プログラムを見ると、FRAMカードに書き込むIPLはICMWRITE.EXPに内包されているようですので実行ファイルの実行のみで良いようです。
確認できていないのですが、書込時はアセンブラ内のTRANSFER_TO_ICMルーチンを呼ぶのに対し照合時の読み出しはDiskBIOSのコールとなっていますが、これが原因では? > 山川機長さん
2022-10-06 14:38:58
WINDYさん、
おおたしかに。うーん、これはなんでこうしたんだったか、記憶をたどっていくと、書き込みは直接書くとして、読み込みは起動しなきゃならないんだからBIOSが読めるように、とかそういうことを考えたような気がします。MXだと動いたはずなんだよなあ。すみません、Towns OS V2.1 L31で試してみていただけるでしょうか?ひょっとするとBIOSのバージョンの違いに影響受ける鴨しれません。
2022-10-26 08:42:58
救難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
最近、https://cohost.org/jckarter/tagged/fm%20towns ここの人から連絡があって、386SX機で自作IPLにジャンプさせる方法を教えてくれました。これを使えば、UXとUGも救うことができそうです。残念ながらMartyはSCSIドライブをつなげられないので救えなさそうですね。
更新した救難IPLをgithubに上げたので、どなたかUXやUGを持っていて、メモリカードまたはフロッピーディスクに救難IPLを書ける人がいたら試していただけるでしょうか?
よろしくお願いします。
2024-03-07 21:14:09
なお、CD IPLも386SX対応したので、外付けCDドライブとCD-Rが一枚あれば救えると思います。
2024-03-08 09:15:51
遂に386SX対応へ進みだしたのですね。
UGで検証したかったのですが不動品になってしまっていて・・・現在洗浄中です。
代わりにマーティーでICカードに書き込みを行おうとしたのですが、書込み画面でエンターキーを押した瞬間に操作不能になりました。
SNでICカードへ書き込みを行い、そのICカードをマーティーに挿して電源を入れると、ICカードを一瞬読んで画面が真っ暗なまま止まります。
メニュー画面だけでも見ようと思ったのですが、SCSIが無いと全く動作しないのでしょうか?
2024-03-10 21:23:23
おおなるほど!ICMWRITEを386SXに対応させるの忘れてました。ついでに、L51だと書き込みに成功してもエラーと出てしまう問題も原因を調べたところ、デバイスID 0x50がL51だと使えないんですね。0x4Aも試したのですが、これもだめで、仕方ないので0x50と0x4Aを試してデバイスIDエラーが返ってきたときは、直接メモリを比較して書き込み成功したか失敗したか判定するようにしました。新しいICMWRITE.EXPはGithubにPUSHしましたのでよかったらお試しください。
2024-03-11 12:08:02
ありがとうございます。
マーティーで試したところ、ICカードへの書き込みに成功しました。
エラーメッセージも出ませんでした。
ですがICカードからの起動につきましては、マーティーのロゴが表示された直後に一瞬だけ(0.05秒くらい?)IC MEMORY CARD BOOTの文字が表示されて、画面が真っ暗な状態になります。
SNの場合はBOOTメニューが表示されます。
0x4AがICカードの機種があったのですね。
今まで書き込みはL20で行っていました。
2024-03-13 07:05:35
なるほど!考えられる原因としては、(1) MartyはSCSIを積んでないのでSCSIデバイスのリストを取るところで止まっている、または (2)TOWNS OSは使わないCRTC設定で31KHzモードに切り替えているのでMartyのCRTCが認識しない、のどちらかではないかと思います。(1)は一応タイムアウトしたら戻ってくるように書いたつもりなのですが、なにか間違っててそうなってない可能性もありますね。(2)については、これはなんとも言えないですね。
一応、さきほど新しいバージョンのIPLをPUSHしました。このバージョンでは、SCSIのリスティングでとりあえずまずメッセージを表示してからチェックするようにしたので、果たしてSCSIのリスティングで止まっているのか、CRTCで止まっているのかわかると思います。よかったらお試しください。
2024-03-13 22:34:29
ありがとうございます。
マーティーで試したところ、
SCSI: H TYPE: H
と表示されました。
UGの方は電源が壊れており確認できそうにありませんでした。
ATX電源を接続出来ないか探ってみようと思います。
しかし私にはUGは重すぎでした。何Kgあるんだろう。
HRやMAの横置きプラスチック筐体の方が軽くて扱いやすいですね。
2024-03-15 07:03:12
ご確認ありがとうございます!やっぱりSCSIのチェックで止まってるようですね。コードを見直したところ、Ready-Waitの後のタイムアウトをチェックしてなかったので、多分そのままコマンドを出して結果をいつまでも待っていたのではないかと思います。そのチェックを追加したものをアップロードしたので、よかったらお試しください。ただ、Martyだとメニューが出るだけで何か有用なことができるかというと何もできないと思います。Martyってシリアルポートは持ってましたか? そうであればせめてシリアル経由のROMの吸出し機能ぐらいは対応できるかもしれません。
2024-03-18 06:33:43
お疲れ様でございます。
SCSI CD DRIVE NOT FOUND
のメッセージが表示され、30秒程待つといつものメニューが表示されました。
マーティーはシリアルポート非搭載ですね。
アーバンの増設シリアルがあれば・・・と言うところでしょうか。
私はCMOSの保存に使おうと思います。
メモリが2MBですとHIMEM.SYSのためにメモリを予約すると、起動しなくなるソフトがあったと思いますのでその切り替え用ですね。
それとBootMenuからFDを選んでFDから起動すると、MS-DOS6.2は起動しましたがTOSV2.1L20は起動してくれませんでした。
2024-03-19 05:43:52
おお、Martyでもメニューまで進むようになったんですね!ご確認ありがとうございます!
ちなみに、メニューの右上のMACHINE IDのところですが、4A03になってますかね? MartyのMachine IDはTBIOSの解析からどうやら4AHらしいと推測した(と、当時のソースのコメントに書いてあった)のですが、本当にそのIDになってるだろうかと気になってます。
2024-03-22 11:46:05
白MartyとCAR Marty(MVP-1)、どちらも4A03でした。
2024-03-23 14:07:09
了解しました!4Aで合ってるんですね!ありがとうございます!
2024-03-23 23:45:58