2013年06月22日

SD6031の現在のファームの問題点

  SD6031/SD6031WIF での現在のファーム等のバージョンでの問題点です。


1)ドライブ数が4つに固定されている。

  SD6031/SD6031WIF を普通に起動した場合、PC-6001/mk2 では4ドライブ、mk2SR では2ドライブ、66/66SR では内蔵ドライブ+2ドライブが使用できます。

  使用できる事は問題ではなく、ドライブ数が増えるためにフリーエリアが増える減るのが問題です。


  回避方法ですが、オート起動を使ってドライブ数をごまかす、というテが使えます。


  P31 のファイルの先頭(つまり、トラック#0セクタ1の先頭)を以下のようにします。

 53 59 53 3e 01 32 3b fb c9

DB "SYS"
LD A,01  ← 新しいドライブ数
LD (0FB3BH),A
RET


  66/66SR で内蔵ドライブから起動する場合は、上記を書いたフロッピーを挿入して立ち上げて下さい。この時は新しいドライブ数は、内蔵ドライブ数+外付けドライブ数です。



2)大きいイメージファイルを使った時に、リセット後のオート起動が出来ない

  D1だけではなく、D2、D3、D4 に大きいイメージファイルがあった場合、オート起動が出来ない場合があります。

  これは、リセット後に、SDカードのイメージファイルの内容を先読みしているためで、大きいイメージファイルの場合はその先読みに時間がかかってしまい、オート起動が出来なくなります。

  起動時にオート起動をしたい場合は、大きいイメージファイルを選択せずに、起動した後でイメージファイルを選択するようにして下さい。

  もしくは、新しいイメージセレクタを使用してください。現在、鋭意製作中(^^;



3)mk2から変換したオート起動用のROMで動かないプログラムがある

  原因がはっきりしていないのですが、どうもスタック関連でこける時があるようです。オート起動じゃなくても同様の現象を起こします。

  起動後にスタックを変更する(CLEAR文)、最大ページ数を変更するなどで起動してみて下さい。

  最大ページ数は、How Many Pages? で1を入力した後に、最大ページ数のワーク(0xFD8C)を書き換えるとごまかすことができます。



posted by えすび at 23:27| Comment(10) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
> SD6031/SD6031WIF を普通に起動した場合、PC-6001/mk2 では4ドライブ、mk2SR では2ドライブ、66/66SR では内蔵ドライブ+2ドライブが使用できます。

PC-6031+PC-6032では実現できない(?)4ドライブ構成ですね(PC-6031にはPC-6032を
3台は接続できませんよね?)
4台で使うなら最初からPC-80(S)31+PC-80(S)32にするしか...?
mkIIは4台、mkIISR/P66/SRは外部に2台になっていますが、N60mとN66の違いでしょうか
ねぇ?

ところで、PC-60M31(3.5インチ1D)にはPC-6032は接続できますか?
2台目は増設ではなくPC-60M31に入れるのでPC-60M32はなかったようですが。
2台内蔵で完結で、更なる増設はできなさそうな気もしますが(もちろん線を引き出せば
できるでしょうけど)。

> 使用できる事は問題ではなく、ドライブ数が増えるためにフリーエリアが増えるのが問題です。

フリーエリアが『減る』か、『ワークエリア』が増えると思います。

> 回避方法ですが、オート起動を使ってドライブ数をごまかす、というテが使えます。

まぁ現状はSD6031ではBASICが主になるでしょうけど、これではCP/M等の他OSでは
使えないテですね。
ドライブ数だけ設定してチェインロード(ディスクを入れ替えて(イメージを変更して)
ブート続行)できれば解決ですが。

現在のSD6031の仕様ではゲーム等の特殊フォーマット(プロテクトの有無とは別)には
対応していなさそうなので、ToDoでも良さそうですが。
(それともセクタ長固定はHDDモードだけですか?)
Posted by かかっくん at 2013年07月01日 22:17
>>> SD6031/SD6031WIF を普通に起動した場合、PC-6001/mk2 では4ドライブ、mk2SR では2ドライブ、66/66SR では内蔵ドライブ+2ドライブが使用できます。
>>
>>PC-6031+PC-6032では実現できない(?)4ドライブ構成ですね(PC-6031にはPC-6032を
>>3台は接続できませんよね?)
>>4台で使うなら最初からPC-80(S)31+PC-80(S)32にするしか...?
>>mkIIは4台、mkIISR/P66/SRは外部に2台になっていますが、N60mとN66の違いでしょうか
>>ねぇ?

  初代機とmk2 に関しては、P8系の影響を受けていると思われます。

  外部ドライブはP8系のものを使えるように設計されているため、4ドライブまで
 可能なP8系のものをそのまま使えるようにしているんだと思われます。

  66 と 66SR に関しては、
  ・全部のドライブは4ドライブまで(mk2とのコンパチ維持のため)
  ・内蔵が2ドライブまで可能

  なために、外付けは2ドライブまでとなっていると思われます。

  mk2SR は、66SR とROM が同じために、66SR と同じように外付けは2ドライブまでになります。


>>ところで、PC-60M31(3.5インチ1D)にはPC-6032は接続できますか?
>>2台目は増設ではなくPC-60M31に入れるのでPC-60M32はなかったようですが。
>>2台内蔵で完結で、更なる増設はできなさそうな気もしますが(もちろん線を引き出せば
>>できるでしょうけど)。

  実機がないのでわかりません。


>>> 使用できる事は問題ではなく、ドライブ数が増えるためにフリーエリアが増えるのが問題です。
>>
>>フリーエリアが『減る』か、『ワークエリア』が増えると思います。

  御指摘ありがとうございます。修正しました。


>>> 回避方法ですが、オート起動を使ってドライブ数をごまかす、というテが使えます。
>>
>>まぁ現状はSD6031ではBASICが主になるでしょうけど、これではCP/M等の他OSでは
>>使えないテですね。

  CP/M って、起動時に自由にドライブ数を変えられましたっけ?

>>ドライブ数だけ設定してチェインロード(ディスクを入れ替えて(イメージを変更して)
>>ブート続行)できれば解決ですが。

  BASICのワークエリアを変更するだけなら、この方法は可能です。

  ドライブ数を答えるコマンド0x07(DRIVE STATUS)に対するレスポンスが、
 現在のファームでは固定値を返しているために、これ以上の事はできません。


>>現在のSD6031の仕様ではゲーム等の特殊フォーマット(プロテクトの有無とは別)には
>>対応していなさそうなので、ToDoでも良さそうですが。
>>(それともセクタ長固定はHDDモードだけですか?)

  セクタ長固定は全てです。
  ここを変更するとファームの変更量が多いために、変更する気はあまりありません。
Posted by えすび at 2013年07月01日 22:51
> 66/66SR で内蔵ドライブから起動する場合は、上記を書いたフロッピーを挿入して立ち上げて下さい。この時は新しいドライブ数は、内蔵ドライブ数+外付けドライブ数です。

結局まだ今のSD6031シリーズでは1ドライブ起動はできないって事ですよね?
Posted by ゆうじろう at 2013年07月01日 23:00
>>結局まだ今のSD6031シリーズでは1ドライブ起動はできないって事ですよね?

 ごまかす方法なら可能です。

 個別のプログラムを起動後、ドライブ数を再チェックされたらダメなんですが。

 上記のやり方だと、既存のイメージファイルに手を入れる必要がありますが、他のイメージファイルを使って起動する方法もあります。この方法は後日アップします。

Posted by えすび at 2013年07月01日 23:06
>>>>現在のSD6031の仕様ではゲーム等の特殊フォーマット(プロテクトの有無とは別)には
>>>>対応していなさそうなので、ToDoでも良さそうですが。
>>>>(それともセクタ長固定はHDDモードだけですか?)
>>
>>  セクタ長固定は全てです。
>>  ここを変更するとファームの変更量が多いために、変更する気はあまりありません。
>>

  訂正です。

  SD6031 は、外付けドライブの代替機ですので、セクタ長は256バイトで固定です。

  PC-80S31 などのようなCPUが載っていて、アクセスプログラムが変更できるものも
 ありますが、PC-6031 などのようなドライブもあるため、P6 では外付けドライブで
 動くものは、特殊フォーマットはないと思います。

  通常フォーマットで、特定のセクタだけアンフォーマット化して、エラーが出る事を
 確認するプロテクトはあるようですが。


  内蔵ドライブで動くものに関しては、元々外付けドライブで動作しないものに
 関してはどうする事もできません。

Posted by えすび at 2013年07月02日 00:18
>  外部ドライブはP8系のものを使えるように設計されているため、4ドライブまで
> 可能なP8系のものをそのまま使えるようにしているんだと思われます。

どちらかというと88より80ですね(80は全3機種とも4台接続可)。
その88でも、標準で4台接続できるのは元祖とmkIIだけだったりします。
ホビー機に転向したSRからは内蔵FDCから増設できるポートが省かれPC-80S32が接続でき
なくなりました。1台毎に制御線が別なので、線を引き出しての接続が難しいです。

もっとも、88の場合8インチ(または2HD)をさらに4台、という離れ業もありますし、
初期の98に至っては全部で10台(12台?)というFDDだらけのシステムにもできます。

> CP/M って、起動時に自由にドライブ数を変えられましたっけ?

P6版の実装をチェックしていませんが、ワークエリアをチェックしていれば、このテがとれ
そうな...

>  ドライブ数を答えるコマンド0x07(DRIVE STATUS)に対するレスポンスが、
> 現在のファームでは固定値を返しているために、これ以上の事はできません。

これ以上はスイッチをつける等ハードウェアに手を入れる必要がありそうですね

> セクタ長固定は全てです。
> ここを変更するとファームの変更量が多いために、変更する気はあまりありません。

あら〜やっぱりそうですか
どうせファームをいじるならD88を直接ロードできるようにした方が良いですしねぇ...

まだP31の内容が変えられるなら、1Dは飛び飛び(前半256バイト)、1DDは前後半とも埋める
というのはいかがでしょう?
1DDで前半が偶数トラック、後半が奇数トラックになるようなイメージです。

> PC-80S31 などのようなCPUが載っていて、アクセスプログラムが変更できるものも
> ありますが、PC-6031 などのようなドライブもあるため、P6 では外付けドライブで
> 動くものは、特殊フォーマットはないと思います。

P6版マリオブラザーズSPECIALが特殊フォーマット(トラック0のみ256/16、それ以降は
1024/4)らしいですが、これはP66用3.5インチのようでした。mkII用はカセット版だそうです。
あぁカン違い。
P6の5インチのゲームってどんなのがあったんでしょうね?当時はまだROMカートリッジと
カセットが主流で、高価なFDDを外付けしてまでゲームをプレイする事はあまりなかった
でしょうけど。
Posted by かかっくん at 2013年07月03日 01:18
> 1DDで前半が偶数トラック、後半が奇数トラックになるようなイメージです。

よく考えたらこれは意味ないですね。それならまだ詰め込んだ方が...
でもAVRのバッファRAM容量とかの問題で無理なんでしたっけ?
ATmega644Pにすればどうにかなるかも?
Posted by かかっくん at 2013年07月03日 04:30
>>どうせファームをいじるならD88を直接ロードできるようにした方が良いですしねぇ...

 AVRのファームを変更してD88を扱えるようにしても、P6側の方からアクセスする手段がありません。

 66/66SR の内蔵ドライブを引っこ抜いて、代わりにSDカードにアクセスする回路を付けるなどをする必要があります。



>>まだP31の内容が変えられるなら、1Dは飛び飛び(前半256バイト)、1DDは前後半とも埋める
>>というのはいかがでしょう?
>>1DDで前半が偶数トラック、後半が奇数トラックになるようなイメージです。

  今のP31フォーマットは 1Dと1DD(2D)が共用で、1D の場合は奇数トラックの部分にデータがないような構成になっています。

  SDカードの1セクタが512バイトで、フロッピーの1セクタが256バイトなので、SDカード1セクタとフロッピー1セクタを対応させています。そのため、SDカードの1セクタの後半256バイトは常に未使用です。

Posted by えすび at 2013年07月03日 09:23
> AVRのファームを変更してD88を扱えるようにしても、P6側の方からアクセスする手段がありません。

P31の仕様では、歯抜けで使いにくいからという理由です。それなら256/16しか使えなくても
D88のほうが使い易い、と思った次第でした。でも、

>> 1DDで前半が偶数トラック、後半が奇数トラックになるようなイメージです。
> よく考えたらこれは意味ないですね。それならまだ詰め込んだ方が...
> でもAVRのバッファRAM容量とかの問題で無理なんでしたっけ?
> ATmega644Pにすればどうにかなるかも?

のようにベタの方が良いと考え直しました。
トラック毎はあまり意味ないので、SDの1セクタの前半を奇数セクタ、後半を偶数セクタに
割り当てれば、N88uty等の一般的な2D用ツールが使えると思いました。
1Dでは4096バイト毎にデータとブランクが交互になります。

> 66/66SR の内蔵ドライブを引っこ抜いて、代わりにSDカードにアクセスする回路を付けるなどをする必要があります。

確か西田ラヂオさんとこに、88用でそういうのもあったような?
tulip-house.ddo.jp/digital/SD88/index.html
ただしR/Oです。
これで使われるR88形式はCRCやGAPもある、より完全に近い形式です。

それにしても、SD6031はともかく、PC-6031がこのような仕様では、88のC-DOS2のような
MS-DOSファイルシステム互換OSは作れそうもありませんね...
P66用か、P6+PC-80S31用にするしか...

マルチプラン(+MSX-DOS)とかが移植されなかったのはそこら辺に原因が?(まさか)
Posted by at 2013年07月06日 04:51
↑あれ?入れ忘れ?
Posted by かかっくん at 2013年07月06日 23:58
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。