2016年06月04日

SD6031Airファーム変更(2)

  SD6031Airの件で、前回調べて問題になった点のうち、


  1)4バイト高速ライト系(コマンド0x86、0x87)
  2)イメージファイルの変更(コマンド0xFE)
  3)INIT.P31 を最初に読み込みに行かない。

  1)は前回に修正しましたが、2)3)に関しても修正しました。

  SD6031AIR.zip


  ファームウエアのアップデートの方法は前回の通りです。


  これで、FlashAirを使用しない場合は、SD6031/SD6031WIFと同様の動作になります。


  FlashAirを使用した場合、うちの環境では今の所よく分からない動作になる事があります。
  環境なども含め、原因を調査中です。
posted by えすび at 22:09| Comment(9) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2016年05月23日

SD6031Air使用記

  SD6031Airを入手したので、実機で使用してみました。

  気付いた点というか問題点というかをまとめてみました。


H/W面

1.本体に接続すると、読み出し/書き込みのLEDが見えなくなる。

  これは以前のSD6031に比べて基板が小さくなっているためです。ちょっと不便かも。


2.本体後ろに挿した時にちょっとぐらつく

  これもSD6031と比べると、若干薄くなっているためのようです。
  そのために、支えるためのビスが付属されています(最初、何の部品か分からなかった^^;)。



S/W面

1.通常使用は、mk2でもmk2SRでも使用が可能。しかし一部コマンドが不可。

  試したのは、2GのSDカードと、8GのSDHCカードで、Airではなく普通のSDカードです。
  フォーマットも1Dと1DDの両方を使用しましたが、BASICなどで使用する分には問題ありません。

  また、拡張コマンドのHDDモードなども特に問題なく動作しました。

  ただし、追加した一部コマンドが使用不可でした。

 ○4バイト高速ライト系(コマンド0x86、0x87)
 ○イメージファイルの変更(コマンド0xFE)

  私が88から移植しているゲームは、上記4バイト高速ライトを使用しているので、軒並みNGです(OKなのは、書き込みしないイシターぐらい)。

  せっかくのAirの機能ですが、ブラウザの設定などの関連で試せていません。


2.INIT.P31 を最初に読み込みに行かない。

  これは多分仕様変更のためだと思います。Airでブラウザで使用してね、という事だと思いますが。


  上記1、2の問題があり、イメージセレクタは使用できません(INIT.P31を最新にしても、イメージファイルの変更が出来ないため、イメージセレクタは使用不可)。




  とりあえずソースを眺めていて、4バイト高速ライト系に関しては修正してみました。

160523_SD6031AIR.zip


  うちの環境が古いので、修正しなくていいソース(SD.h)まで修正していますが...


  ファームウエアのアップデートの方法は以下の通りです。
  (アップデートは自己責任で行って下さい。アップデート、アップデート後の問題についても責任は負えませんので)。

 1)適当なSD/SDHCカードを用意する。出来れば中身が入っていないのがいい。
 2)SD/SDHCカードのルートに、SD6031AR.hex をコピーする。
 3)SD6031Air の電源を切る。さらに P6 から抜いておく。
 4)SD/SDHCカードをSD6031Airに挿入する。
 5)SD6031Air の電源を入れる。
 6)ファームウエアのアップデートが行われ、LEDが2回点滅する(電源を入れてからすぐに完了します)。
 7)LEDが2回点滅しない場合は、再度電源OFF、ONしてみて下さい。
 8)ファームウエアのアップデートが完了したら、忘れずに、SD/SDHCカード上のSD6031AR.hex を消しておく。


 3)の P6 から抜いておく、というのと、8)のSD6031AR.hex を消しておく、というのが重要です。



  イメージファイルの変更などは、Airに絡む部分なので安易に変更できないかなーと思ってます。



posted by えすび at 23:32| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2015年11月09日

SD6031/SD6031WIFのファームウエアについて


  そういえば、このブログでアップしていなかったので、SD6031/SD6031WIFの最新版のファームウエアをアップします。


SD6031firm_130610.zip

  通常のSD6031/SD6031WIF用です。
  (http://sbeach.seesaa.net/article/387861570.html
  (http://sbeach.seesaa.net/article/387861572.html



SD6031firm_130723.zip

  HDDモードと4バイト転送モードを実装しています。


  SD6031firm_130723 は、基板を改造してマルチディスク対応にした、SD6031/SD6031WIF用です。
  (http://sbeach.seesaa.net/article/387861586.html
  上記の機能に加えて、マルチディスク対応にしています。
posted by えすび at 23:48| Comment(14) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2014年11月07日

SD6031を内蔵ドライブと併用する

  ツイッターで気になった話題について。


  実機で、内蔵ドライブとSD6031WIFを併用した場合の話です。


  内蔵ドライブとSD6031WIFを併用した場合、実物のフロッピーのデータを読み書き出来たりするので、割と便利です。

  ただし、いろいろと制限が出てきます。


 ○イメージセレクタが使えない

  P6では、内蔵ドライブとSD6031WIF(外付けドライブ)を併用した場合、内蔵ドライブから順番にドライブ番号が付きます。

  そのため、起動ドライブが必ず内蔵ドライブからになってしまい、SD6031WIF上にあるイメージセレクタを使う事が出来ません。


 ○SD6031WIFのイメージを選ぶには

  SD6031WIFでは、イメージの選択は以下のように行っています。

  ☆起動時(リセット後)
   ・INIT.P31 というファイルがある場合は、必ずこのファイルが選択される。
   ・INIT.P31 がない場合は、日付が一番新しいファイルが選択される。

  ☆起動した後に、SDカードを一度抜いて、再度挿した後
   ・日付が一番新しいファイルが選択される。


  以上のことから、実物のフロッピーのデータの読み書きをする場合、例えばフロッピーにSD6031のデータを書き込みたい場合には、以下の手順を踏む必要があります。

 1)P6本体の背面のドライブ数を1か2に変更する。
 2)本体にユーティリティディスクをセットする。
 3)SD-6031WIFを本体に取り付ける。SDカードの内容は、とりあえず何でもいい。
 4)リセットして、ユーティリティを立ち上げる(ディスクのコピーを選ぶ)。
 5)SDカードを一度抜く。
 6)フロッピーにコピーしたいイメージファイル(〜.P31)の日付を最新にする。
   西田さんのページ(http://tulip-house.ddo.jp/digital/SD6031/index.html)に、日付変更プログラムが紹介されています(http://www.vector.co.jp/soft/win95/util/se351123.html)。

 7)SDカードを挿した後、コピーユーティリティで、目的のファイルをコピーする。



  SD6031WIFのファイルがちゃんと読めているかどうかを確認するだけなら、

 1)本体にフォーマット済みのディスクを挿して起動して
 2)SDカードを一度抜いて
 3)目的のイメージファイル(〜.P31)の日付を最新にして
 4)SDカードを挿して
 5)files 2 (or files 3)

 で確認できるはずです。



 もっと手っ取り早いのは、SDカード上にイメージファイルを目的のものだけにする事です。



  上記の話は、PC-6601/PC-6601SRのいずれも同じです。

posted by えすび at 00:01| Comment(3) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2014年08月30日

SD6031WIFのRAMの32Kバイト化

  以前、SD6031WIFの64Kバイトの改造記事を載せました。


  しかし、実装が結構大変ですし、部品の追加も必要です。

  そこで、少しの改造で、外部RAMを32Kバイトに拡張することが可能です。
  ただし、初代PC-6001での、外部RAMの使用ができなくなります。


  以下、SD6031WIFの改造方法を記します。



 ○回路図

140830_01_SD6031WIF_32k.PNG



 ○実際の改造

 1)まず、SRAMの1ピンの足を上げます。

140830_01_SRAM加工.jpg


 2)コネクタのA14から信号を取り出します。A14は基板の裏側です。写真の白い配線になります(赤い配線は別の改修)。

140830_01_A14取り出し.jpg


 裏面から表面に持ってくるのが面倒なので、今回はSDカードの横を通しました。


 3)コネクタA14からの信号をSRAMの1ピンに接続します。

140830_01_結線完.jpg




  外部RAMをチェックするのには、前にアップしたプログラムを使用して下さい。

  外部RAMを使う時は、DIPSWの6番をONにして下さい。


http://sbeach.seesaa.net/article/387861564.html

memcheck.zip



posted by えすび at 12:04| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2014年05月29日

SD6031WIFをmk2、mk2SRで使用する

  SD6031WIF は、基本は初代PC-6001用です。

  初代機で使用するために、拡張ROMと拡張RAMが搭載されています。
  その拡張ROM/RAMは、他の4機種でも使用する事が出来ます。RAM拡張の改造をすれば、64KRAMのカートリッジとしても使えます。

  ただ、mk2、mk2SRで使用する場合は、SD6031WIF上のSDカードでのFDDアクセスは出来ずに、別にSD6031が必要になります。


  これはもったいないので、SD6031WIF上のSDカードをFDDとして使おうというものです。
 (この案は他の人に聞いたものです)


 ○メリット
  ・SD6031WIFだけで、5機種全てのFDDエミュレータとして使える。
  ・拡張ROM、拡張RAMが5機種全てで使える。
  ・SD6031 に必要だった、DCコネクタが不要になる。


 ○デメリット
  ・mk2、mk2SRで使用する際には、8255を取り外す必要がある。



 ○使用方法

  1)SD6031WIFの8255を取り外します。
  2)mk2、mk2SRの背面のFDDコネクタからケーブルをつなぎ、8255が挿入されていたソケットに接続します。

  後は通常通りの使用方法になります。


 ○回路図

140529_01_SD6031WIF_connect.PNG



  FDDコネクタと8255のソケットへの配線だけです。PC7〜PC0のピン番号がちょっと変則的なので注意が必要です。

  リセットやGNDは接続しません。


 ○実装

  FDDコネクタへの配線は特に問題ないと思います。

  8255のソケットへは、うまく配線する必要があります。

  8255のソケットは、あくまでICソケットですので、薄い板しか挿し込めません。そのため、同じ40ピンのICソケットを使って配線しました。

140529_01_ケーブルソケット部.jpg



  また、これをSD6031WIFに実装するとこんな感じです。

140529_01_ケーブル装着後.jpg



  P6のカートリッジ挿入口に入れるため、高さを出来るだけ低くする必要があります。

  また、左側(AVR側)に配線を寄せておいた方がいいです。



posted by えすび at 19:19| Comment(1) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2014年05月28日

SD6031WIFの64KバイトRAM実装の改修

  以前にアップした、SD6031WIFの64KバイトRAM実装についてです。


  RAMを64Kに拡張した場合、初代PC-6001では使用できなくなります。
  これは、初代PC-6001が対応していないためで、初代PC-6001+PC-6006SRでも同様に使用できません。


  これだと困るので、64Kと16Kが切り替えられるように回路を変更しました。

  前の64Kの改造も参考にして下さい。



 ○必要な部品

  ・74LS138 1個
  ・SRM2B256SLMX55(32KバイトSRAM) 1個


  16K切り替えにさらに以下を追加
  ・74LS02  1個
  ・抵抗10K 1個
  ・スイッチ 1個


 ○回路図

140528_01_SD6031WIF_64k_16k(2).PNG

  '15-06-14 回路図を一部修正しました。

  点線内はSD6031からの追加回路です。変更部分以外は記載していません。

  64Kの改造からの変更は、左の点線内の追加回路になります(74LS02と10KとSWの追加)。


  64Kの改造から、A14、A15のアドレス線に対して、それぞれ 74LS02 を追加します。


  実はスイッチをどこに実装するかが一番問題になるかも知れません。私の場合は、PC-6001/6601の切り替えスイッチの隣にジャンパピンを設けるようにしました。当然、基板の穴あけが必要になります。

  74LS02 は、64Kの改造の際に貼り付けた74LS138の上に、貼り付けています。
  74LS02 の足を曲げて先の方を切る際に、1ピン、7ピン、14ピンを残しておくと、後の配線がラクになります。


  74LS02 の代わりに74LS32を使う事も可能ですが、ピン配置が違うので注意して下さい(74LS02のピン配置が他のと違う)。



  実際に組み立てたのがこれになります。右の方の緑色のジャンパピンが16K/64Kの切り替えになります。

結線完(1).JPG



posted by えすび at 19:32| Comment(3) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2014年05月09日

SD6031WIFの64KバイトRAM実装

  すっかり忘れていたものを実行しました。


  SD6031WIF は、元々16KバイトのRAMを積んでいます(PC-6006相当)。
  初代PC-6001以外でも、mk2以降でも使用できます。ただし、当然外部RAM扱いです。

  mk2、mk2SRで使用する場合は、スイッチをPC-6601側にすることで使用可能です。
  この際、FDDは、本体後ろのコネクタのFDDインタフェースを使う事になり、SD6031WIF上のSDカードは使用できません。


  SD6031WIFを改造する事で、外部RAMを64Kバイトまで拡張することが可能です。

  以下、SD6031WIFの改造方法を記します。


 ○必要な部品

  ・74LS138 1個
  ・SRM2B256SLMX55(32KバイトSRAM) 1個

  元々、基板に実装されているものと同じものです。秋月通商で、5個300円で販売されています。

http://akizukidenshi.com/catalog/g/gI-01461/



 ○回路図

  SD6031WIF_64k.PNG


  点線内は追加回路です。変更部分以外は記載していません。

  改造の概略は以下の通りです。

  改造前
  A13-0 → 元々のSRAM の A13-0
  GND → 元々のSRAM の A14
  nRAS2 と nEXCAS の OR → 元々のSRAM の CS

  ↓
  改造後

  A13-0 → 元々のSRAM の A13-0
  A13-0 → 追加のSRAM の A13-0
  A14 → 元々のSRAM の A14
  A14 → 追加のSRAM の A14

  (nRAS2 と nEXCAS の OR )AND A15=0 → 元々のSRAM の CS
  (nRAS2 と nEXCAS の OR )AND A15=1 → 追加のSRAM の CS


 ○実際の改造

 1)まず、元々のSRAMの1ピンと20ピンの足を上げます。

SRAM加工(1).jpg


 2)その上に、追加のSRAMを付けます。この時、20ピンのみ接続しません。

SRAM加工(2).jpg

SRAM加工(3).jpg


 3)LS138の足を開いて、先をちょんぎります。

LS138加工(1).jpg


 4)SD6031WIF上に両面テープで貼るんですが、基板上にスルーホールがあるために、絶縁テープを貼ります。

LS138加工(2).jpg


 5)絶縁テープの上にLS138を両面テープで貼ります。

LS138加工(3).jpg


 6)後はがんばって配線するだけです。コネクタからの配線箇所がちょっと分かり難いです。

  A15の取り出し部分です(黄色の配線が繋がっている箇所)。

A15取り出し.jpg


  A14の取り出し部分は裏面になります。赤い配線の方です。白い配線は別の改造です。

A14取り出し.jpg

裏面から表面に持ってくるのがまた面倒です。私は穴を開けましたが...



  配線完了すると、こんな感じになりました。

結線完(1).jpg

結線完(2).jpg



  外部RAMをチェックするのには、前にアップしたプログラムを使用して下さい。

http://sbeach.seesaa.net/article/387861564.html

memcheck.zip



posted by えすび at 19:14| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年07月28日

SD6031(WIF)マルチディスクイメージの改造(追記)

  マルチディスクイメージの追記です。


  扱うディスクイメージですが、1D:40トラック×16セクタ、1DD:80トラック×16セクタ、のもののみです。

  P31 ファイルに変換した後のファイルサイズが、655360 バイトである事を確認して下さい。


  単純に、先頭から 655360×nバイト分進めてディスクイメージを読み込んでいるだけなので、ファイルサイズが変わると正常に動作しなくなります。


posted by えすび at 16:49| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

SD6031(WIF)マルチディスクイメージの改造

  SD6031/SD6031WIFのマルチディスクイメージへの対応への改造です。


  SD6031/SD6031WIF を使っていると、BASIC で使っている時はイメージセレクタを常駐させれば任意のイメージを選択できますが、ゲームなどを起動している時はイメージを変更するのが結構面倒です。

  例えば、SD6031 で動作するようにしたコロニーオデッセイは、冒険編、対決編、ユーザディスクの7つのディスクイメージを、日付を変更して、SDカードを抜き差しして、変更しないといけないので、ちょっと厄介です。


  そこで、d88 フォーマットで使用されているような、複数のディスクイメージを1つにまとめ、その中の1つを選択できるようにしました(マルチディスクイメージ)。

  ただし、SD6031 の改造(パターンカット等)や、AVR のファームウエアの変更など、それなりの技術が必要です。

multidisk.zip



・改造方法
 必要な作業は以下の通りです。

1)ハードウエアの修正
2)AVR のファームウエアの修正
3)マルチディスクイメージの作成


1)ハードウエアの修正
  ファイルを選択するために、押しボタンSWを付けます。SD6031/SD6031WIF では全ピン使用しているので、ベタ"L" を出していたピンを使う事にしました。

  SD6031 では、AVR 21pin −− FDDコネクタ 34pin の配線をカットして、FDDコネクタ 34pin 側を1KΩでプルダウンします。
  SD6031WIF では、AVR 21pin −− 8255 17pin の配線をカットして、8255 17pin 側を1KΩでプルダウンします。

  AVR 21pin と GND の間に、押しボタンSWを付けます。

  押しボタンSWは、出来ればチャタリングが少ないものにして下さい(一応、対策はしているつもりなんですが...)。


2)AVR のファームウエアの修正
  AVR のファームウエアを SD6031.hex に変更して下さい。

  SD6031/SD6031WIF に使っているAVR は、ヒューズ設定が外部クロックになっているため、ファームウエアを変更する時は、何らかのクロックが必要です。クロック付きのライタを使用するか、SD6031/SD6031WIF に直接書き込み端子を付けるかをする必要があります。


3)マルチディスクイメージの作成

  まず、通常通りにP31フォーマットのイメージファイルを作ります。

  次に、そのファイルを順番に結合します。この時、結合した順番を覚えておいて下さい。また、起動ディスクを最初にして下さい。

  マルチディスクイメージは、フロッピーのイメージファイルのみ対応しています。HDDモードのP31ファイルは使用できません。


・使い方

  普通のイメージファイルと同様に、イメージセレクタで選択して(もしくは日付を最新にして)起動します。

  マルチディスクイメージが選択されている状態で、押しボタンを押すと、ディスクが変わります。押しボタンを押す回数が、何番目のディスクを選ぶかを示しています。


  例えば、コロニーオデッセイの場合だと、

  冒険編#1、#2、#3、対決編#1、#2、#3、ユーザディスク

  の順番で結合します。

  冒険編#1が起動ディスクなので、最初にします。

  セーブする際などは、ユーザディスクを選択するので、押しボタンを7回押せば、ユーザディスクが選択されます。


posted by えすび at 16:00| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年07月10日

SD6031イメージファイル選択プログラムver2

  SD6031・SD6031WIFのイメージファイル選択プログラムの改定(ver2.0)の件です。


  遅くなりましたが、リリースします。

imageselect_v20.zip


  使い方は、同梱の イメージセレクタ.txt を参照してください。


  機種が5機種あって、ドライブ数が1〜4(1〜2)で、1D と1DD があって...

  と、プログラムにもデバッグにも大変苦労しました。


posted by えすび at 20:30| Comment(2) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年07月02日

SD6031のドライブ数変更プログラム

  SD6031/SD6031WIF での現在のファームのドライブ数を変更するプログラムを作成しました。


  既に書いた通り、SD6031/SD6031WIF を普通に起動した場合、2ドライブ/4ドライブと認識されます。このため、フリーエリアが少なくなってしまう弊害がありました。

  今回のプログラムは、その問題を解消するものです。ただし、オート起動するもののみが対象です。

dnum1.zip


リセット → 起動したいファイル → ドライブ2台で起動 → フリーエリアが減ってNG
  ↓
リセット → ドライブ接続数変更 → ドライブ1台で起動 → 起動したいファイル → 起動

  にします。

  詳しくは、同梱のドキュメントを参照して下さい。


  元々、2ドライブで問題ないソフトに対しては、使用する必要はありません。



posted by えすび at 18:34| Comment(2) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年06月28日

SD6031イメージファイル選択プログラムの改定について

  SD6031・SD6031WIFのイメージファイル選択プログラムの改定(ver2.0)の件です。


  だいぶ出来ました。

  大した事をしているわけでないのに、結構手間取っています。

  ユーザインタフェースの部分が殆どのプログラムです...


  とりあえず、32×16 の画面(MODE1-4)のはエラー処理以外は出来たので、後は 40×20 と、SR 対応が出来れば完成ですが...

  後、1週間ぐらい掛かりそう...

posted by えすび at 21:39| Comment(4) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年06月27日

SD603のコマンド一覧の訂正

  先日記載した SD6031 のコマンドに関して修正です。


  GET IMAGE FILE のコマンドの記載が間違っていました。以下が正解です。


○コマンド0xFD:GET IMAGE FILE
 P6→SD6031:0xFD ドライブ番号
 SD6031→P6:
  0x01、ファイル#1のファイル名1バイト目…ファイル#1のファイル名8バイト目、
  0x01、ファイル#2のファイル名1バイト目…ファイル#2のファイル名8バイト目、
   :
  0x01、ファイル#nのファイル名1バイト目…ファイル#nのファイル名8バイト目、
  0x00


  SDカードに格納されているイメージファイルの一覧を取得します。イメージファイルの数分だけ、0x01+ファイル名(8バイト)の9バイトを順番に送信してきます。最後に0x00が送信されます。返してくるバイト数は、9×ファイル数+1 になります。P6側では、0x00 が受信されるまで読み出す必要があります。
  ファイル名は、拡張子を除いた8文字です。拡張子はP31に固定されてます。ファイル名が8文字未満の場合は、空白(0x20)で埋められます。


  元の記事も修正しました。



posted by えすび at 23:25| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

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のHDDモードの参考プログラム

  SD6031/SD6031WIF でのHDDモードの参考用のプログラムを作りました。


  単純に画像データを読み出して、そのデータを画面に書き込んでいるだけのプログラムです。

hddanime.zip


hddanime.P31 (プログラム)
domo_5.P31 (MODE5用)
domo_3_2.P31 (MODE4用)


  MODE5用とMODE4用があります。

  MODE5用 はmk2以降のMODE5、SCREEN3 の画像を再生します。
  MODE4用 は初代機/MODE4、SCREEN3 の画像を再生します。

  HDDANIME.P31 をD0に、DOMO_5.P31/DOMO_3_2.P31 をD1にセットします。

  MODE5用では、mode=5、file=0、page=3、MODE4用では、mode=4、file=0、page=3 で起動します。


  ドライブ0のファイル一覧を見ると、

  hmov1  MODE5用1バイト転送
  hmov2  MODE5用2バイト転送
  hmov4  MODE5用4バイト転送
  hm60_1  MODE4用1バイト転送
  hm60_2  MODE4用2バイト転送
  hm60_4  MODE4用4バイト転送

  がありますので、それぞれ run"ファイル名" で実行できます。


  画像データは、「NHKクリエイティブ・ライブラリー」の創作用素材を使用しています。

http://www.nhk.or.jp/creative/

  画像データは、動画再生と同じ方法で作っています。


  プログラムの内容はコメントを参考にして下さい。画面データに関して補足です。

  MODE5用の方は、画面データが16384(0x4000)バイトあるので、64セクタ分あります。4画面分256セクタで1トラックとしています。そのため、開始セクタ番号=0、終了セクタ番号=255 に設定しています。

  MODE4用の方は、画面データが6144(0x1800)バイトあるので、24セクタ分あります。10画面分240セクタで1トラックとしています。そのため、開始セクタ番号=0、終了セクタ番号=239 に設定しています。

  MODE4用の方を1トラック256セクタとすると、計算が面倒なので上記のようにしています。



posted by えすび at 23:25| Comment(5) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

SD6031のHDDモード(4)

  SD6031/SD6031WIF の HDDモードなどを使う時の注意などです。


1)P6のリセット、SDカードの抜き挿しでデフォルトに戻ります。
 デフォルト値は、1D、開始セクタ番号 = 1、終了セクタ番号 = 16 です。


2)1D で使わない限り、モードを1D から2D(1DD) に変更する必要があります。
 これは、1)の通りデフォルトが1D のためです。
 1D の場合、入力されたトラック番号を2倍してアクセスします。HDD として使う場合などは要注意です。


3)1セクタは256バイト固定。
 どのモードでも256バイト固定になります。セクタをどれくらい扱えるかが変わるだけです。


4)P31 フォーマットでは、1セクタ512バイト固定。
 ややこしいんですが仕様です。P31 フォーマットで扱う時は、前半256バイトのみを使用していて、後半256バイトは未使用です。


5)イメージファイル長は、実際に扱えるデータの倍。
 4)に起因します。半分は未使用です。ちょっともったいないけど仕様です。



  D88 ←→ P31 の変換ツールは既に作られていますが、BIN(DSK) → P31 の変換がないので作成しました。

bin2p31.zip


  BIN(DSK) は、先頭のセクタから順に並んでいるだけの、いわゆるベタファイルです。

  使用方法は、bin2p31 ファイル名 です。〜.bin のファイルを 〜.P31 に変換します。コマンド実行時は、拡張子を入れずにファイル名を指定してください。


posted by えすび at 23:18| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

SD603のコマンド一覧

  SD6031 の追加したコマンドに関しての説明です。


  PC-6031/PC-8031 などのフロッピードライブと同じように、SD6031/SD6031WIFでもPC-6001側からコマンドを送信して、制御します。

  SD6031 は既存のコマンド以外に独自のコマンドを追加しています。これにより、従来のフロッピードライブでは出来なかった事(ex:ハードディスクモード)が出来るようになっています。

  追加されているコマンドは、コマンド番号0x80〜0x88、0xFD〜0xFE です。


  以下が SD6031/SD6031WIF で使用できるコマンドの一覧です(最新のファームの分です)。



1)書き込みコマンド群

○コマンド0x01:WRITE DISK(ディスクへの書き込み)
 P6→SD6031:0x01 書き込むセクタ数 ドライブ番号 トラック番号 セクタ番号 書き込みデータ…書き込みデータ

○コマンド0x11:HIGH SPEED WRITE(高速ハンドシェークでのディスクへの書き込み)
 P6→SD6031:0x11 書き込むセクタ数 ドライブ番号 トラック番号 セクタ番号 書き込みデータ…書き込みデータ

○コマンド0x83:EXPAND WRITE(ディスクへの拡張版書き込み)
 P6→SD6031:0x83 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号 書き込みデータ…書き込みデータ

○コマンド0x84:EXPAND HIGH SPEED WRITE(高速ハンドシェークでのディスクへの拡張版書き込み)
 P6→SD6031:0x84 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号 書き込みデータ…書き込みデータ

○コマンド0x86:DOUBLE HIGH SPEED WRITE(4バイトハンドシェークでのディスクへの拡張版書き込み)
 P6→SD6031:0x86 書き込むセクタ数 ドライブ番号 トラック番号 セクタ番号 書き込みデータ…書き込みデータ

○コマンド0x87:EXPAND DOUBLE HIGH SPEED WRITE(4バイトハンドシェークでのディスクへの拡張版書き込み)
 P6→SD6031:0x87 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号 書き込みデータ…書き込みデータ

  書き込みコマンドが複数存在するのは、

 ・一度に書き込むバイト数が、1バイト/2バイト/4バイト
 ・トラック番号の指定の仕方が、8ビット/16ビット

  の3通り×2通り=6通りの指定の方法があるためです。


  やる事は全て同じで、指定したセクタに対して、データを書き込みます。
  1セクタは256バイトですので、一度に256×セクタ数分のデータを書き込みます。

  複数のセクタにまたがって書き込む事は可能ですが、トラックをまたぐことは出来ません。


○コマンド0x05:FORMAT
 P6→SD6031:0x05 ドライブ番号

  指定のドライブをフォーマットします。具体的には、データの部分を 0xFF で埋めます。このコマンドは通常の1D/1DD(2D)フォーマットのイメージファイルのみに使用してください。HDDイメージなどは使用しないで下さい。


2)読み出しコマンド群

○コマンド0x02:READ DATA(ディスクからの読み出し)
 P6→SD6031:0x02 書き込むセクタ数 ドライブ番号 トラック番号 セクタ番号

○コマンド0x85:EXPAND READ(ディスクからの拡張版読み出し)
 P6→SD6031:0x85 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号

○コマンド0x03:TRANSFER BUFFER(ディスクからの読み出し)
 P6→SD6031:0x03
 SD6031→P6:読み出しデータ…読み出しデータ

○コマンド0x12:HIGH SPEED TRANSFER READ DATA(2バイトハンドシェークでのディスクからの読み出し)
 P6→SD6031:0x12
 SD6031→P6:読み出しデータ…読み出しデータ

○コマンド0x88:DOUBLE HIGH SPEED TRANSFER READ DATA(4バイトハンドシェークでのディスクからの読み出し)
 P6→SD6031:0x88
 SD6031→P6:読み出しデータ…読み出しデータ

  書き込みコマンドと同じく、読み出しコマンドも指定方法により複数存在します。


  READ DATA系で、ディスクからバッファにデータを読み出し、TRANSFER BUFFER系でそのデータをP6側に転送します。



3)ドライブの設定、状態の読み出し

○コマンド0x00:INITIALIZE
 P6→SD6031:0x00

  初期化コマンドですが、SD6031/SD6031WIF では何もしていません。

○コマンド0x06:COMMAND STATUS
 P6→SD6031:0x06
 SD6031→P6:STATUS情報(下記)

  STATUS情報は以下の通りです(1バイトのデータ)。
  bit7:常に1
  bit6: READ DATA系を実行した後に1、TRANSFER BUFFER系を実行した後に0
  bit5-1:常に0
  bit0:直前のコマンドがエラー時に1、エラーがなければ0

○コマンド0x07:DRIVE STATUS
 P6→SD6031:0x07
 SD6031→P6:STATUS情報(下記)

  STATUS情報は以下の通りです(1バイトのデータ)。
  bit7:ドライブ#3を使用時に1
  bit6:ドライブ#2を使用時に1
  bit5:ドライブ#1を使用時に1
  bit4:ドライブ#0を使用時に1
  bit3-0-1:常に1

  現在のファームでは、常に0xFF が返されています(4ドライブ使用)。将来的に修正する可能性があります。

○コマンド0x0B:GET MEMORY
 P6→SD6031:0x0B アドレス上位 アドレス下位 バイト数上位 バイト数下位
 SD6031→P6:メモリ情報・・・メモリ情報

  フロッピードライブのROMの内容を読み出す命令です。
  BASIC-ROM から読み出される場合があるため、SD6031/SD6031WIF では、特定のアドレスを読み出した時に特定の値を返すようにしています。

○コマンド0x14:DRIVE STATUS
 P6→SD6031:0x14 ドライブ番号
 SD6031→P6:ST3

  uPD765A の ST3 を返します。SD6031/SD6031WIF では、SDカード、イメージファイルにライトプロテクトが設定されている場合には 0x40 を、そうでない場合は 0x00 を返します。

○コマンド0x17:SET MODE
 P6→SD6031:0x17 設定情報

  1D/1DD(2D) の設定の変更を行います。
  bit7-4:未使用
  bit3:ドライブ#3の設定(0で1D、1で1DD/2D)
  bit2:ドライブ#2の設定(0で1D、1で1DD/2D)
  bit1:ドライブ#1の設定(0で1D、1で1DD/2D)
  bit0:ドライブ#0の設定(0で1D、1で1DD/2D)

  リセット直後は、すべてのドライブで1Dモードです。

○コマンド0x18:ASK MODE
 P6→SD6031:0x18
 SD6031→P6:設定情報

  コマンド0x17 で設定した情報を読み出すコマンドです。

○コマンド0x80:SET SECTOR DATA(開始/終了セクタ番号のセット)
 P6→SD6031:0x80 ドライブ番号 開始セクタ番号 終了セクタ番号

  使用するイメージファイルの開始セクタ番号、終了セクタ番号を変更します。この番号を変更する事で、1トラック内のセクタ数が決まります(終了セクタ番号−開始セクタ番号+1)。リセット直後は、開始セクタ番号=0x01、終了セクタ番号=0x10です。

  トラック番号の開始番号は変更できません。トラックの終了番号は特に制限していません(チェックの対象としていません)。

○コマンド0x81:ASK SECTOR DATA(開始/終了セクタ番号の読み出し)
 P6→SD6031:0x81 ドライブ番号
 SD6031→P6:開始セクタ番号 終了セクタ番号

  SET SECTOR DATA で設定した値を読み出します。


4)イメージファイル関連

○コマンド0x82:REPORT DISK IMAGE LENGTH(イメージファイル長の読み出し)
 P6→SD6031:0x82 ドライブ番号
 SD6031→P6:イメージファイル長×4(最上位から送信される)

  現在選択しているイメージファイルの長さを読み出します。P31 ファイルのファイル長を読み出しますので、実際にデータがある部分の2倍が読み出されます。
  例えば、普通のフロッピーイメージの場合は、(256×2)×16×80 = 655360 バイトになります。

○コマンド0xFD:GET IMAGE FILE
 P6→SD6031:0xFD ドライブ番号
 SD6031→P6:
  ファイル#1のファイル名1バイト目…ファイル#1のファイル名8バイト目、
  ファイル#2のファイル名1バイト目…ファイル#2のファイル名8バイト目、
   
  ファイル#nのファイル名1バイト目…ファイル#nのファイル名8バイト目、0x00

  0x01、ファイル#1のファイル名1バイト目…ファイル#1のファイル名8バイト目、
  0x01、ファイル#2のファイル名1バイト目…ファイル#2のファイル名8バイト目、
   :
  0x01、ファイル#nのファイル名1バイト目…ファイル#nのファイル名8バイト目、
  0x00


  SDカードに格納されているイメージファイルの一覧を取得します。イメージファイルの数分だけ、ファイル名(8バイト)を順番に送信してきます。最後に0x00が送信されます。P6側では、0x00 が受信されるまで読み出す必要があります。

  SDカードに格納されているイメージファイルの一覧を取得します。イメージファイルの数分だけ、0x01+ファイル名(8バイト)の9バイトを順番に送信してきます。最後に0x00が送信されます。返してくるバイト数は、9×ファイル数+1 になります。P6側では、0x00 が受信されるまで読み出す必要があります。
  ファイル名は、拡張子を除いた8文字です。拡張子はP31に固定されてます。ファイル名が8文字未満の場合は、空白(0x20)で埋められます。

○コマンド0xFE:SET IMAGE FILE
 P6→SD6031:0xFE ドライブ番号 ファイル名1バイト目…ファイル名8バイト目

  指定したドライブ番号のイメージファイルを、指定するファイルにします。ファイル名などは、GET IMAGE FILE と同じです。



  コマンド0x04:COPY コマンドは、新しいバージョンから廃止しました。



posted by えすび at 18:21| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年06月17日

SD6031関連の予定の訂正

  下の記事が思いっきり間違えていたので訂正です。


1)SD6031/SD6031WIF ファームウエアの改定



1)SD6031/SD6031WIF イメージファイル選択プログラムの改定



posted by えすび at 09:50| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年06月16日

SD6031関連の予定

  何となく遅くなりそうなので予告を。


  以下の記事を近いうちにまとめたいと思っています。


1)SD6031/SD6031WIF ファームウエアの改定イメージファイル選択プログラムの改定
2)SD6031/SD6031WIF HDDモードのサンプルプログラム+4バイト転送の説明の追加
3)SD6031WIF RAM64K改造


  SD6031 のファームは、SD6031WIF と同じファームに出来ます(HDD対応に出来ます)。
  西田さんの所の「PC-6001関連」の欄外に記載されています。

http://tulip-house.ddo.jp/digital/



  3)に関連する事ですが...

  SD6031WIF は、全機種でPC-6006 の代わりに使用する事が出来ます。

  初代PC-6001の場合は、機種切り替えスイッチを「PC-6001」に設定して、DIPSW の5,6 を ON すれば使えます。
  初代PC-6001以外の場合は、機種切り替えスイッチを「PC-6601」に設定して、DIPSW の5,6 を ON すれば使えます。

  ただし、PC-6001mk2/SR に関しては、FDD としては使えませんが、ROM/RAM は使用できます。

  ROM を焼く手間が掛かるのが難点ですが...

posted by えすび at 21:48| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年05月23日

SD6031のHDDモード(3)

  SD6031 の今のファームで、ちょっと気になる点を見つけました。


  試験的に、動画再生カートリッジ用のデータを画面に表示されるプログラムを動かした場合です。

  20Mバイト程度(〜.P31ファイルではその倍)では気が付かなかったんですが、100Mバイトを超えた辺り(〜.P31ファイルではその倍)から途中で止まるようになりました。

  32フレーム(16384バイト×32)描画して、ちょっとお休みがあって、また32フレーム描画する、といった感じです。


  原因ですが、FAT テーブルです。

  今のファームでは、ファイルから読み出す際、FAT を最初から辿ってデータの場所を特定しています。

  これ自体は通常のアルゴリズムだと思いますが、最初から辿っているため、巨大なファイルになると辿る時間がすごく遅くなるというわけです。


  FAT の性質上、あまり適切な修正方法は無さそうです。

  今回のようなファイルの先頭から順番に読んでいくようなアプリなら対策方法はあるんですが、それを入れるかどうか悩みドコロです...


  うーん。

posted by えすび at 18:44| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

SD6031のHDDモード(2)

  SD6031 のファームの改造が一応終わりました。


  書き込み側のテストなどがまだなので、リリースはもうちょっと先になるとは思いますが...

  仕様としては、以下の通りです。


 ・送信/受信に今までのコマンドを使った場合、最大16Mバイトまでのディスクイメージを扱える
 ・送信/受信に新しいコマンドを使った場合、最大1Gバイトまでのディスクイメージを扱える
 ・送信/受信には、従来の1バイト/2バイト、以外に4バイトを追加


  追加したコマンドは以下の通りです。


○コマンド0x80:SET SECTOR DATA(開始/終了セクタ番号のセット)

 P6→SD6031:0x80 ドライブ番号 開始セクタ番号 終了セクタ番号

 従来は、開始セクタ番号=0x01、終了セクタ番号=0x10、と固定になっていたものを変更できるようにしました。デフォルト値(リセット後/INITIALIZE後)は、開始セクタ番号=0x01、終了セクタ番号=0x10です。


○コマンド0x81:ASK SECTOR DATA(開始/終了セクタ番号の読み出し)

 P6→SD6031:0x81 ドライブ番号
 SD6031→P6:開始セクタ番号 終了セクタ番号

 コマンド0x80で設定した値の読み出しです。


○コマンド0x82:REPORT DISK IMAGE LENGTH(イメージファイル長の読み出し)

 P6→SD6031:0x82 ドライブ番号
 SD6031→P6:イメージファイル長×4(最上位から送信される)

 イメージファイル長は4バイトのため、4回読み出しになります。純粋に〜.P31 のファイル長を読み出します(P31のフォーマットの関係上、実際にアクセスできるサイズの倍の値がレポートされます)。
 通常の1D/1DD(2D)のディスクイメージの場合は、0x000A0000(655360バイト)がレポートされます。1DD(2D)実際に使える分(80×16×256=327680)の倍がレポートされます。


○コマンド0x83:EXPAND WRITE(ディスクへの拡張版書き込み)

 P6→SD6031:0x83 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号 書き込みデータ…書き込みデータ

 コマンド0x01(WRITE DISK) の拡張版です。トラック番号を1バイトではなく2バイト指定できます。このため、最大1Gバイトまでアクセスが可能になります。
 拡張版を使わない場合は、自動的にトラック番号の上位バイトを0x00と見なします。


○コマンド0x84:EXPAND HIGH SPEED WRITE(高速ハンドシェークでのディスクへの拡張版書き込み)

 P6→SD6031:0x84 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号 書き込みデータ…書き込みデータ

 コマンド0x11(FAST WRITE DISK) の拡張版です。高速ハンドシェークで、一度のアクセスで2バイトの書き込みを行います。


○コマンド0x85:EXPAND READ(ディスクからの拡張版読み出し)

 P6→SD6031:0x85 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号

 コマンド0x01(READ DISK) の拡張版です。トラック番号を1バイトではなく2バイト指定できます。このため、最大1Gバイトまでアクセスが可能になります。
 拡張版を使わない場合は、自動的にトラック番号の上位バイトを0x00と見なします。


○コマンド0x86:DOUBLE HIGH SPEED WRITE(4バイトハンドシェークでのディスクへの拡張版書き込み)

 P6→SD6031:0x86 書き込むセクタ数 ドライブ番号 トラック番号 セクタ番号 書き込みデータ…書き込みデータ

 コマンド0x01(WRITE DISK)を4バイトハンドシェークでデータを受け渡しするものです。一度のアクセスで4バイトの書き込みを行います。


○コマンド0x87:EXPAND DOUBLE HIGH SPEED WRITE(4バイトハンドシェークでのディスクへの拡張版書き込み)

 P6→SD6031:0x87 書き込むセクタ数 ドライブ番号 トラック番号上位 トラック番号下位 セクタ番号 書き込みデータ…書き込みデータ

 コマンド0x84(EXPAND HIGH SPEED WRITE) の拡張版です。4バイトハンドシェークで、一度のアクセスで4バイトの書き込みを行います。


○コマンド0x88:DOUBLE HIGH SPEED TRANSFER READ DATA(4バイトハンドシェークでのディスクからの読み出し)

 P6→SD6031:0x88
 SD6031→P6:読み出しデータ…読み出しデータ

 コマンド0x03(TRANSFER BUFFER) を4バイトハンドシェークでデータを受け渡しするものです。一度のアクセスで4バイトの読み出しを行います。



  組み合わせの関係でコマンド数が多くなっていますが、実質的に追加した仕様は少ないです。


  4バイトアクセスは、送受信時にポートの設定を変更するので、データのやり取りがちょっとややこしくなります。

  後に公開する予定のサンプルプログラムを参考にしてもらった方がいいかと思います。



  ちなみに、4バイトアクセス時に、画面データ1フレーム分(16Kバイト)を転送すると、大体0.7秒かかります。
  フラグチェックしないバージョンだと、0.55秒ぐらいになります。

  これを速いと見るか、遅いと見るか...

posted by えすび at 18:03| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年05月19日

SD6031のHDDモード

  西田ラジオさんのトコで既にオープンになりましたので...


  SD6031 のファームをいじって、SDカードでのHDDの再現を考えています。

  トラック番号を0〜255、セクタ番号を0〜255、にした場合、256×256×256=16MバイトのHDDイメージにアクセスが出来るようになります。

  コマンドの追加で最初に設定すれば、セクタ番号の開始/終了番号を任意に設定できるというものです。(通常のセクタ番号は1〜16なので、使いにくい)

  ちなみに、トラック番号、セクタ番号のチェックはしていないため、この修正を加えても ROM 内ルーチンがそのまま使えます。


  さらにもう2つほど画策しています。

  一つは、上記16Mバイト以上を扱えるというもの(トラック番号を0〜65535にする)。
  もう一つは、高速4バイト転送です。


  実は、SD-HDD のデモ用に、動画再生カートリッジのデータを再生させてみたんですが...遅いんですね...


  高速2バイト受信で、1フレーム(16Kバイト)の描画に、大体1.4秒かかります(実測値)。

  ノーマルの1バイト受信なら、1フレーム(16Kバイト)の描画に、2.4秒かかってるので(実測値)、高速4バイト受信が出来たら1フレーム1秒以下に出来そうな感じです。


  高速4バイト転送は、『PC-8801 マスターバイブル』に載っている手法を使います。

  原理は簡単で、通常の転送時なら8255のポートの入力/出力が固定されているものを、データ転送時だけ変更するものです。

  通常は、例えば受信時なら、8255のポートAからのみ受信し、ポートBは出力のため使用していません。これをポートBを入力にして、データを転送してしまおうというものです。


  ちょっと修正に時間が掛かりそうではありますが...


posted by えすび at 18:50| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年03月19日

SD6031使用上の注意

  SD6031を使用する際の注意点をまとめました。


1.『選択されるイメージファイルは、日付が最新のもの』が基本

  イメージセレクタなどが追加されているのでややこしくなっていますが、上記が基本です。

  使っていてどのイメージファイルを使っているかわからなくなったら、
 SDカードを抜き挿しすると、日付が最新のものが選ばれます。


2.電源投入直後、リセット直後に限り、INIT.P31 が選択される

  これはイメージセレクタ用の仕様です。

  ただ、この仕様は D1 以外でもこの仕様になっていますので、D2〜D4 にはINIT.P31は置かない方が無難です。

  66や66SRで使う時は、D1がドライブ1以外になった場合、リセット後はINIT.P31が選択されている事に注意する必要があります。


3.SD6031は、1D/1DD(1D/2D)切り替えが可能なドライブ

  1D/1DD(1D/2D)が切り替え可能なため、mk2SR、66SRで使う時は注意が必要です。

  1Dとして扱いたい場合は、先頭セクタが"SYS"のフロッピーイメージを使う必要があります(例えば、66用のユーティリティディスク)。

  必要ならば自分で作成も可能です。
  P31イメージなら、先頭の4バイトを、0x53、0x59、0x53、0xC9、として、このイメージで起動すればOKです。

  ただし、mk2SR、66SRでは、66-BASIC でしか1Dは取り扱えません。


  SD6031のファームを変更する事で、1D 固定のドライブとする事が出来ますが...


posted by えすび at 18:17| Comment(6) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年03月14日

RGBアダプタとSD6031使用記

  西田さんの所で、P6RGBコンポーネントアダプタとFDDエミュレータを購入しました。

  使用してみた感想です。


○P6RGBコンポーネントアダプタ

 当たり前ですが、かなりキレイに映ります。私はRGB出力で見た事がなかったので、特にキレイに感じるのかも知れませんが。

 実際に使うに当たって、問題点が2つほど。

1)12Vぐらいの電源が必要
 結構、面倒くさいかも。
 私は本体の拡張コネクタから電源を取る基板を作りました。
 mk2、66なら、スーパーインポーズ端子から取る手もあります。ただ、それに合うコネクタ(アンフェノール24P)が異常に高い...

2)色がちょっとおかしい
 最初に、自分が使う環境で色を調整する必要があります。
 うちの環境では、半固定抵抗を回しても暗かったので、直列に入っていた75Ωの抵抗を39Ωに変えて使っています。

 ただ、根本的に、ビデオ出力とRGB出力は別の色、って雰囲気です。


電源

用基板

 ↑拡張コネクタから電源を取る基板です。線が2本あるのは、RGBアダプタ用とSD6031用です。



○SD6031

 完全に音の出ないフロッピーディスクユニットという感じです。
 動作が速ければいいんですが、これはP6の方の仕様で仕方ありません(CPUが8255を通して1バイトずつ転送しているため)。

 いろいろといじって、SR対応もちゃんと動く事も確認しました。
 他に変更点もあるので、バージョンアップはした方がいいです。

 ソースが公開されているので、出来る人は自力でも構いませんが、結構大変かも知れません。

 変更が必要なのは、以下の点です。

 ・リセット信号が切断されているのを繋ぐ(スルーホールを繋げばOK)。
 ・SDカード用の電源を、追加のレギュレータで駆動する(元の電源をパターンカットする必要あり)。
 ・AVRのファームを変更する。


SD6031表

SD6031裏

 ↑実際に手を入れた基板です。基板裏にレギュレータを付けています。


 バージョンアップをすると、

 ・SR対応になる
 ・SDカードの挿抜時に動作が不安定になる問題が解消。
 ・LEDの動作が変更される(旧:ドライブ1/2、新:リード/ライト)

 になります。


 なかなか面白いSD6031ですが、問題点もあります。

1)イメージファイルの選択が面倒
 日付の最新が選択されるという仕様が、結構面倒ではあります。
 選択の方法が他にないので、仕方はない所ではあります。

 INIT.P31 を使うことで、起動時のイメージファイルは選択できますが、ソフトが動作している途中でのディスクの入れ替えなどはどうしようもありません。
 例えば、セーブディスクが別になっているようなゲームで遊んでいる場合は、

 SDカードを抜き、セーブ用のイメージファイルを最新の日付にする。
 SDカードを挿す。
 ゲームからセーブする。
 SDカードを抜き、ゲーム用のイメージファイルを最新の日付にする。
 SDカードを挿す。

 という手順が必要になって、ちょっと面倒です。

 何かうまい方法があればいいんですけどねぇ。


2)コネクタのサイズがちょっと大きい
 mk2やmk2SRのフロッピーのコネクタは、アンフェノール36Pという仕様です。
 ただ、現在入手できるコネクタよりは、なぜか大きいようです(幅も厚さも1mmほど大きい)。

 通常のアンフェノールコネクタは、挿す方も板バネみたいになっているので、大きさが多少変わっても問題がないようです。

 で、何が問題かというと...mk2やSRに挿す分には、全く問題ありません。

 拡張のために、mk2やSR以外のコネクタに挿そうとした時に、挿せるコネクタがないのが問題なんです。



 現在、66、66SRで使えるような回路を作っています。
 が、その前にSD6031のコピー品を作りました。これは、上記のコネクタ問題の回避のためです。

自作SD6031

表

自作SD6031

裏



 SD6031のSR対応を調べている時に、FDD関連でいろいろ面白い事がわかりましたので、また別にまとめます。


posted by えすび at 11:09| Comment(2) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする

2013年02月24日

SD6031用イメージファイル選択(1)

  西田さんの所で、P6RGBコンポーネントアダプタとFDDエミュレータを購入しました。

  使用記は後日書くとして...


  SD6031 には、隠れていない(?)隠し機能があります。
  コマンド253と254の、フロッピーイメージのファイル名取得と、イメージファイル切り替えです。

  これを利用すると、起動後のイメージファイルを選択して、そのイメージから再起動する事で、あたかもディスクを差し替えているように動かす事が出来ます。


  さっそく作りました。


SD6031用イメージファイル選択


  使い方は、SDカードのD1フォルダの下にINIT.P31 をコピーするだけです。

  電源を入れるかリセットを押すと、ファイル一覧が出ます。
 (SD6031 のリセットの接続が切れている場合は、電源を入れ直す必要あり)

  カーソルキーで動かしてリターンキーを押すと、選んだイメージファイルで再起動がかかります。


  6001mk2 でも、6001mk2SR でも動作します。

  ただし、SR で動作させるには、SD6031 のアップデートが必要になります。


posted by えすび at 23:29| Comment(0) | HW:SD6031 | このブログの読者になる | 更新情報をチェックする