SD6031Air用のファームウエア(ver1.25)をリリースします。
注)SD6031/SD6031WIFには使用できません。
AVR hexファイル:SD6031AR_211017.zip
・Ver1.23→Ver1.25変更点
mk2SR/66SRでドライブを1Dに固定するモードを追加
mk2SR/66SRでドライブを1Dに固定するのは、mk2SR+PC-6031 などを想定しています。
1D固定モードにするには、SDカードのd1フォルダに、 1D.1D というファイル名のファイルを格納します(内容は何でもよく、0バイトのファイルで構いません)
1D.1D のファイルを格納して、mk2SR/66SRをリセットすると、起動時に1Dドライブ固定になります。ただし、起動時間が少し長くなります。
sd6031AR.hex は AVR用ファームです。AVRに書き込んで下さい。
ファームウエアのアップデートの方法は以下の通りです。
(アップデートは自己責任で行って下さい。アップデート、アップデート後の問題についても責任は負えませんので)。
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 を消しておく。
2021年10月17日
SD6031ファームウエアリリース(ver1.25)
SD6031/SD6031WIF用のファームウエア(ver1.25)をリリースします。
注)SD6031Airには使用できません。
AVR hexファイル:SD6031_211017.zip
・Ver1.23→Ver1.25変更点
mk2SR/66SRでドライブを1Dに固定するモードを追加
mk2SR/66SRでドライブを1Dに固定するのは、mk2SR+PC-6031 などを想定しています。
1D固定モードにするには、SDカードのd1フォルダに、 1D.1D というファイル名のファイルを格納します(内容は何でもよく、0バイトのファイルで構いません)
1D.1D のファイルを格納して、mk2SR/66SRをリセットすると、起動時に1Dドライブ固定になります。ただし、起動時間が少し長くなります。
sd6031.hex は AVR用ファームです。AVRに書き込んで下さい。
注)SD6031Airには使用できません。
AVR hexファイル:SD6031_211017.zip
・Ver1.23→Ver1.25変更点
mk2SR/66SRでドライブを1Dに固定するモードを追加
mk2SR/66SRでドライブを1Dに固定するのは、mk2SR+PC-6031 などを想定しています。
1D固定モードにするには、SDカードのd1フォルダに、 1D.1D というファイル名のファイルを格納します(内容は何でもよく、0バイトのファイルで構いません)
1D.1D のファイルを格納して、mk2SR/66SRをリセットすると、起動時に1Dドライブ固定になります。ただし、起動時間が少し長くなります。
sd6031.hex は AVR用ファームです。AVRに書き込んで下さい。
ROMEMUファームウエアリリース(ver1.25)
ROMEMU (ver1.25)をリリースします。
AVR/CPLD hexファイル:ROMEMU_ver125.zip
AVR/CPLDソース:ROMEMU_source_ver125.zip
・Ver1.23→Ver1.25変更点
ROMのマウントがない場合、OLEDに●マウントなし●と表示するように修正。
mk2SR/66SRでドライブを1Dに固定するモードを追加
mk2SR/66SRでドライブを1Dに固定するのは、mk2SR+PC-6031 などを想定しています。
1D固定モードにするには、SDカードのd1フォルダに、 1D.1D というファイル名のファイルを格納します(内容は何でもよく、0バイトのファイルで構いません)
1D.1D のファイルを格納して、mk2SR/66SRをリセットすると、起動時に1Dドライブ固定になります。ただし、起動時間が少し長くなります。
CPLD、bootloader は変更していませんので、書き直す必要はありません(一応同梱しています)。
AVR/CPLD hexファイル:ROMEMU_ver125.zip
AVR/CPLDソース:ROMEMU_source_ver125.zip
・Ver1.23→Ver1.25変更点
ROMのマウントがない場合、OLEDに●マウントなし●と表示するように修正。
mk2SR/66SRでドライブを1Dに固定するモードを追加
mk2SR/66SRでドライブを1Dに固定するのは、mk2SR+PC-6031 などを想定しています。
1D固定モードにするには、SDカードのd1フォルダに、 1D.1D というファイル名のファイルを格納します(内容は何でもよく、0バイトのファイルで構いません)
1D.1D のファイルを格納して、mk2SR/66SRをリセットすると、起動時に1Dドライブ固定になります。ただし、起動時間が少し長くなります。
CPLD、bootloader は変更していませんので、書き直す必要はありません(一応同梱しています)。
NANOCARTリリース(ver1.25)
NANOCART (ver1.25)をリリースします。
JIC ファイル等:NANOCART_ver125.zip
ソースファイル:NANOCART_source_ver125.zip
・Ver1.23→Ver1.25変更点
一部のI/Oバッファの駆動能力の変更
SDカードの読み出し際のエラーが激減しますので、出来るだけ修正してください。
ROMのマウントがない場合、OLEDに●マウントなし●と表示するように修正。
mk2SR/66SRでドライブを1Dに固定するモードを追加
mk2SR/66SRでドライブを1Dに固定するのは、mk2SR+PC-6031 などを想定しています。
1D固定モードにするには、SDカードのd1フォルダに、 1D.1D というファイル名のファイルを格納します(内容は何でもよく、0バイトのファイルで構いません)
1D.1D のファイルを格納して、mk2SR/66SRをリセットすると、起動時に1Dドライブ固定になります。ただし、起動時間が少し長くなります。
2021年05月28日
SRで1Dイメージを使う時
PC-6001mk2SR/PC-6601SR で 1D のイメージファイルを使う時について。
PC-6001mk2SR/PC-6601SR では、通常は 1DD のフロッピーを使っています。
ただ、PC-6001mk2SR では、1D の外付けドライブを使う事も考慮されており、同じROM内容である、PC-6601SR でも SR-BASIC上で扱う事が可能です。
なのですが...
今のSD6031等では、『SR-BASIC』上 で 1D のイメージを扱う事ができません
これは、SR-BASIC起動時に、外付けドライブのチェックをしているためで、今のファームウエアでは対応していないためです。
かなりレアケースだと思うし、特に要望もないようなのでほったらかしにしています。
(PC-6001mk2SR+PC-6031 などの構成で使っていた人がいるかどうか...)
当時出来た事が出来ないのはアレなので、次のバージョンアップで対応するつもりです。
ちなみに、PC-6001mk2SR/PC-6601SR 上で、『N66-BASIC』(MODE3,4,5)で、1D のイメージを扱う事は可能です。
・オート起動の 1D イメージは、1Dドライブになります。
・オート起動でない、1D イメージは、以下の編集を行うと使用可能です。
トラック#0、セクタ#1 の先頭から4バイトを0x53,0x59,0x53,0xc9 にする。
PC-6001mk2SR/PC-6601SR では、通常は 1DD のフロッピーを使っています。
ただ、PC-6001mk2SR では、1D の外付けドライブを使う事も考慮されており、同じROM内容である、PC-6601SR でも SR-BASIC上で扱う事が可能です。
なのですが...
今のSD6031等では、『SR-BASIC』上 で 1D のイメージを扱う事ができません
これは、SR-BASIC起動時に、外付けドライブのチェックをしているためで、今のファームウエアでは対応していないためです。
かなりレアケースだと思うし、特に要望もないようなのでほったらかしにしています。
(PC-6001mk2SR+PC-6031 などの構成で使っていた人がいるかどうか...)
当時出来た事が出来ないのはアレなので、次のバージョンアップで対応するつもりです。
ちなみに、PC-6001mk2SR/PC-6601SR 上で、『N66-BASIC』(MODE3,4,5)で、1D のイメージを扱う事は可能です。
・オート起動の 1D イメージは、1Dドライブになります。
・オート起動でない、1D イメージは、以下の編集を行うと使用可能です。
トラック#0、セクタ#1 の先頭から4バイトを0x53,0x59,0x53,0xc9 にする。
初代機でSD6031等を使う時
初代機で、SD6031WIF/NANOCART/ROMEMUからフロッピーイメージを使う方法
初代機でフロッピーイメージをBASIC上で扱う時は、
1)拡張BASICカートリッジのROMデータ
2)PC-6001mk2のROMデータ
のいずれかが必要になります。
(それ以外の方法としては、プログラムを作成してカセットから読み出す、などが必要になります)
上記1)2)のROMデータがある場合は、以下のようにしてBASICからフロッピーイメージにアクセスする事が可能です。
1.拡張BASICカートリッジのROMデータ
1)ROMデータを設定します
2)使用するフロッピーイメージを設定します。
3)リセットすると、普通に使用できます。
イメージファイルセレクタ(INIT.P31)を使いたい場合は、以下のようにします。
1)ROMデータを設定します
2)イメージファイルセレクタ(INIT.P31)を設定します。
3)リセットして、FILES=1 / PAGES=1 を入力します(適当な数値で動作すると思います)。
4)BASIC起動後、FILES と入力すると、ファイル一覧が読めるはずです。
5)bload "menu.bin",r と入力すると、イメージファイルセレクタが起動されます。
6)ファイルを選択後、再起動します。
7)後は、使いたいイメージファイルに合わせて下さい。
2.PC-6001mk2のROMデータ
1)ROMデータをバイナリエディタで編集します。編集内容は、→ http://tulip-house.ddo.jp/digital/SD6031WIF/index.html
2)編集したROMデータを設定します
3)使用するフロッピーイメージを設定します。
4)リセットすると、普通に使用できます。オート起動もされます。
イメージファイルセレクタ(INIT.P31)を使いたい場合も、設定するだけでちゃんと起動してくれます。
初代機でフロッピーイメージをBASIC上で扱う時は、
1)拡張BASICカートリッジのROMデータ
2)PC-6001mk2のROMデータ
のいずれかが必要になります。
(それ以外の方法としては、プログラムを作成してカセットから読み出す、などが必要になります)
上記1)2)のROMデータがある場合は、以下のようにしてBASICからフロッピーイメージにアクセスする事が可能です。
1.拡張BASICカートリッジのROMデータ
1)ROMデータを設定します
2)使用するフロッピーイメージを設定します。
3)リセットすると、普通に使用できます。
イメージファイルセレクタ(INIT.P31)を使いたい場合は、以下のようにします。
1)ROMデータを設定します
2)イメージファイルセレクタ(INIT.P31)を設定します。
3)リセットして、FILES=1 / PAGES=1 を入力します(適当な数値で動作すると思います)。
4)BASIC起動後、FILES と入力すると、ファイル一覧が読めるはずです。
5)bload "menu.bin",r と入力すると、イメージファイルセレクタが起動されます。
6)ファイルを選択後、再起動します。
7)後は、使いたいイメージファイルに合わせて下さい。
2.PC-6001mk2のROMデータ
1)ROMデータをバイナリエディタで編集します。編集内容は、→ http://tulip-house.ddo.jp/digital/SD6031WIF/index.html
2)編集したROMデータを設定します
3)使用するフロッピーイメージを設定します。
4)リセットすると、普通に使用できます。オート起動もされます。
イメージファイルセレクタ(INIT.P31)を使いたい場合も、設定するだけでちゃんと起動してくれます。
2021年05月25日
ROMファイル選択プログラム(ver1.2)
NANOCART/ROMEMU用のROMファイル選択プログラム(ver1.2)をリリースします。
ROMSEL_ver12.zip
ver1.1→ver1.2変更点
・起動時にメッセージを表示
・ジョイスティック対応
・再起動時にメモリクリアをする
このプログラムは、NANOCART/ROMEMUで複数のROMファイルをSDカードに格納した時に選択できるものです。
NANOCART/ROMEMUで使用するためには、まず SDカードに \ROM を作成して下さい。
\ROM の下に、INIT.ROM を格納して下さい。
この状態で、P6 をリセット長押し→離すと、P6が起動しますが、その時に SHIFT を
押しているとROMファイルの選択画面になります。
SHIFT を押していないと、通常に起動します(FDDなどが起動する)。
ROMSEL_ver12.zip
ver1.1→ver1.2変更点
・起動時にメッセージを表示
・ジョイスティック対応
・再起動時にメモリクリアをする
このプログラムは、NANOCART/ROMEMUで複数のROMファイルをSDカードに格納した時に選択できるものです。
NANOCART/ROMEMUで使用するためには、まず SDカードに \ROM を作成して下さい。
\ROM の下に、INIT.ROM を格納して下さい。
この状態で、P6 をリセット長押し→離すと、P6が起動しますが、その時に SHIFT を
押しているとROMファイルの選択画面になります。
SHIFT を押していないと、通常に起動します(FDDなどが起動する)。
イメージファイル選択プログラム(ver3.1)
SD6031等用のイメージファイル選択プログラム(ver3.1)をリリースします。
INIT_ver31.zip
ver3.0→Ver3.1変更点
・起動時間の短縮(かなり速くなってます)
・ジョイスティック対応
・再起動時にメモリクリアをする
・カーソル移動の修正など
INIT.P31 を \d1 に格納して使用してください。
SDCC を使ったため、サイズがちょっと大きくなっています。
INIT_ver31.zip
ver3.0→Ver3.1変更点
・起動時間の短縮(かなり速くなってます)
・ジョイスティック対応
・再起動時にメモリクリアをする
・カーソル移動の修正など
INIT.P31 を \d1 に格納して使用してください。
SDCC を使ったため、サイズがちょっと大きくなっています。
2021年05月22日
NANOCARTリリース(ver1.23)
NANOCART (ver1.23)をリリースします。
JIC ファイル等:NANOCART_ver123.zip
ソースファイル等:NANOCART_source_ver123.zip
・Ver1.22→Ver1.23変更点
d88 フォーマットが正常に扱えない事がある問題を修正。
(1D/1DDとも正常に扱えないことがありました)
NANOCART.jic ファイルをDE0-nanoに書き込む方法
1)同梱のNANOCART_jic.cdf 内の PATH の ????? を必要に応じて修正する。
(NANOCART.jic を格納しているディレクトリになります)
2)QuartusII を起動する。
3)DE0-nano をパソコンのUSB端子につなぐ
4)QuatrusII の
「File→Open」でNANOCART_jic.cdf を選択する。
(拡張子を *.* にする必要あり)
5)Programmer が起動するので、START を押す。
6)STARTが押せない場合は、DE0-nanoがつながっていないなどの問題があるので確認する。
詳しくは、DE0-nano のマニュアルを参照してください。
(マニュアルP148:Write JIC File into Serial Configuration Device)
2021年05月21日
ROMEMUファームウエアリリース(ver1.23リリース)
ROMEMU (ver1.23)をリリースします。
AVR/CPLD hexファイル:ROMEMU_ver123.zip
AVR/CPLDソース:ROMEMU_source_ver123.zip
・Ver1.22→Ver1.23変更点
AVR:
d88 フォーマットが正常に扱えない事がある問題を修正。
(1D/1DDとも正常に扱えないことがありました)
CPLD:
mk2 でFDDエミュレートが出来ない問題を修正。
bootloader は変更していませんので、書き直す必要はありません(一応同梱しています)。
hex ファイル書き込み方法(同梱のROMEMU書き込み手順の3と4)
○AVR に avr.hex を書き込む。
SDカードを用意し、ルートに avr.hex のみを 書き込みます。
SDカードの容量は問いません。
次に、ROMEMU基板にSDカードを挿して、基板に5Vを供給します(P6に挿すか、AVRライタ用のコネクタを使用)。
書き込み中は、LEDR/Gがちらちら点滅します。
しばらくして、LEDGが2回点滅したら、書き込み完了です。
LEDRが点滅するようであれば、何らかのエラーが発生しています。手順を見直して下さい。
○CPLD に cpld.svf を書き込む。
SDカードを用意し、ルートに cpld.svf のみを 書き込みます。
SDカードの容量は問いません。
次に、ROMEMU基板にSDカードを挿して、基板に5Vを供給します(P6に挿すか、AVRライタ用のコネクタを使用)。
書き込み中は、LEDR/Gがちらちら点滅します。
しばらくして、LEDGが4回点滅したら、書き込み完了です。
LEDRが点滅するようであれば、何らかのエラーが発生しています。手順を見直して下さい。
ROMEMU回路図(AVRのパッケージがTQFPのものをDIPのものに変更しています)

ROMEMU とは?
ROMEMU とは、NANOCARTと同等の機能を持つハードウエアを、DE0-nanoを使わずに専用ハードで実現したものです(コストダウンですね)。
ROMEMU が出来る事は以下の通りです。
1)SDカードからフロッピーのデータを、P6から読み書きできる。
2)SDカードからROMデータをSRAMに格納し、それを P6の拡張ROMとして動作させることができる。
3)P6から SRAM に読み書きができ、P6の拡張RAMとして動作させることができる。
2)と3)のSRAM は別のもので、それぞれ512Kバイト分あります。
詳細は同梱の説明書を参照してください。
AVR/CPLD hexファイル:ROMEMU_ver123.zip
AVR/CPLDソース:ROMEMU_source_ver123.zip
・Ver1.22→Ver1.23変更点
AVR:
d88 フォーマットが正常に扱えない事がある問題を修正。
(1D/1DDとも正常に扱えないことがありました)
CPLD:
mk2 でFDDエミュレートが出来ない問題を修正。
bootloader は変更していませんので、書き直す必要はありません(一応同梱しています)。
hex ファイル書き込み方法(同梱のROMEMU書き込み手順の3と4)
○AVR に avr.hex を書き込む。
SDカードを用意し、ルートに avr.hex のみを 書き込みます。
SDカードの容量は問いません。
次に、ROMEMU基板にSDカードを挿して、基板に5Vを供給します(P6に挿すか、AVRライタ用のコネクタを使用)。
書き込み中は、LEDR/Gがちらちら点滅します。
しばらくして、LEDGが2回点滅したら、書き込み完了です。
LEDRが点滅するようであれば、何らかのエラーが発生しています。手順を見直して下さい。
○CPLD に cpld.svf を書き込む。
SDカードを用意し、ルートに cpld.svf のみを 書き込みます。
SDカードの容量は問いません。
次に、ROMEMU基板にSDカードを挿して、基板に5Vを供給します(P6に挿すか、AVRライタ用のコネクタを使用)。
書き込み中は、LEDR/Gがちらちら点滅します。
しばらくして、LEDGが4回点滅したら、書き込み完了です。
LEDRが点滅するようであれば、何らかのエラーが発生しています。手順を見直して下さい。
ROMEMU回路図(AVRのパッケージがTQFPのものをDIPのものに変更しています)
ROMEMU とは?
ROMEMU とは、NANOCARTと同等の機能を持つハードウエアを、DE0-nanoを使わずに専用ハードで実現したものです(コストダウンですね)。
ROMEMU が出来る事は以下の通りです。
1)SDカードからフロッピーのデータを、P6から読み書きできる。
2)SDカードからROMデータをSRAMに格納し、それを P6の拡張ROMとして動作させることができる。
3)P6から SRAM に読み書きができ、P6の拡張RAMとして動作させることができる。
2)と3)のSRAM は別のもので、それぞれ512Kバイト分あります。
詳細は同梱の説明書を参照してください。
SD6031Airファームウエアリリース(ver1.23)
SD6031Air用のファームウエア(ver1.23)をリリースします。
注)SD6031/SD6031WIFには使用できません。
AVR hexファイル:SD6031AR_ver123.zip
・Ver1.22→Ver1.23変更点
d88 フォーマットが正常に扱えない事がある問題を修正。
(1D/1DDとも正常に扱えないことがありました)
sd6031AR.hex は AVR用ファームです。AVRに書き込んで下さい。
ファームウエアのアップデートの方法は以下の通りです。
(アップデートは自己責任で行って下さい。アップデート、アップデート後の問題についても責任は負えませんので)。
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 を消しておく。
注)SD6031/SD6031WIFには使用できません。
AVR hexファイル:SD6031AR_ver123.zip
・Ver1.22→Ver1.23変更点
d88 フォーマットが正常に扱えない事がある問題を修正。
(1D/1DDとも正常に扱えないことがありました)
sd6031AR.hex は AVR用ファームです。AVRに書き込んで下さい。
ファームウエアのアップデートの方法は以下の通りです。
(アップデートは自己責任で行って下さい。アップデート、アップデート後の問題についても責任は負えませんので)。
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 を消しておく。
SD6031ファームウエアリリース(ver1.23)
SD6031/SD6031WIF用のファームウエア(ver1.23)をリリースします。
注)SD6031Airには使用できません。
AVR hexファイル:SD6031_ver123.zip
・Ver1.22→Ver1.23変更点
d88 フォーマットが正常に扱えない事がある問題を修正。
(1D/1DDとも正常に扱えないことがありました)
sd6031.hex は AVR用ファームです。AVRに書き込んで下さい。
注)SD6031Airには使用できません。
AVR hexファイル:SD6031_ver123.zip
・Ver1.22→Ver1.23変更点
d88 フォーマットが正常に扱えない事がある問題を修正。
(1D/1DDとも正常に扱えないことがありました)
sd6031.hex は AVR用ファームです。AVRに書き込んで下さい。
2021年05月19日
SD6031などの問題
5/16 に一気にアップしたS6031関連のファームウエアについてです。
今のところ、以下の問題がありそうです。
1)〜.d88 ファイルで、1D を取り扱う場合におかしい場合がある。
SD6031/WIF、SD6031Air、NANOCART、ROMEMU
2)改造mk2 がFDDエミュレートできない
ROMEMU
3)初代機で特定のファイルが動作しない
ROMEMU、(NANOCARTもそうかも?)
2)については原因判明しましたが、1)と3)は調査中です。
1)については、異常動作をする場合は、〜.P31 に変換して
使用してみてください。
今のところ、以下の問題がありそうです。
1)〜.d88 ファイルで、1D を取り扱う場合におかしい場合がある。
SD6031/WIF、SD6031Air、NANOCART、ROMEMU
2)改造mk2 がFDDエミュレートできない
ROMEMU
3)初代機で特定のファイルが動作しない
ROMEMU、(NANOCARTもそうかも?)
2)については原因判明しましたが、1)と3)は調査中です。
1)については、異常動作をする場合は、〜.P31 に変換して
使用してみてください。
2021年05月16日
NANOCARTリリース(ver1.22)
NANOCART (ver1.22)をリリースします。
NANOCART_ver122.zip
・Ver1.20→Ver1.22変更点
リセット時、ディスクドライブが 1D に戻らない問題を修正。
ポート0x06 の 0x77 の設定を追加。
詳細は同梱の説明書を参照してください。
SD6031Airファームウエアリリース(ver1.22)
SD6031Air用のファームウエア(ver1.22)をリリースします。
注)SD6031/SD6031WIFには使用できません。
SD6031AR_ver122.zip
・Ver1.20→Ver1.22変更点
リセット時、ディスクドライブが 1D に戻らない問題を修正。
sd6031AR.hex は AVR用ファームです。AVRに書き込んで下さい。
ファームウエアのアップデートの方法は以下の通りです。
(アップデートは自己責任で行って下さい。アップデート、アップデート後の問題についても責任は負えませんので)。
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 を消しておく。
注)SD6031/SD6031WIFには使用できません。
SD6031AR_ver122.zip
・Ver1.20→Ver1.22変更点
リセット時、ディスクドライブが 1D に戻らない問題を修正。
sd6031AR.hex は AVR用ファームです。AVRに書き込んで下さい。
ファームウエアのアップデートの方法は以下の通りです。
(アップデートは自己責任で行って下さい。アップデート、アップデート後の問題についても責任は負えませんので)。
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 を消しておく。
SD6031ファームウエアリリース(ver1.22)
SD6031/SD6031WIF用のファームウエア(ver1.22)をリリースします。
注)SD6031Airには使用できません。
SD6031_ver122.zip
・Ver1.20→Ver1.22変更点
リセット時、ディスクドライブが 1D に戻らない問題を修正。
sd6031.hex は AVR用ファームです。AVRに書き込んで下さい。
注)SD6031Airには使用できません。
SD6031_ver122.zip
・Ver1.20→Ver1.22変更点
リセット時、ディスクドライブが 1D に戻らない問題を修正。
sd6031.hex は AVR用ファームです。AVRに書き込んで下さい。
ROMEMU(2)
だいぶほったらかしにしていた、ROMEMU をリリースしました。
単純に NANOCART の同機能を専用ハードで実現したものなので、NANOCART を持っている人は、あまり必要がないものだと思います。
ROMEMU(NANOCART) の機能が、SDカード、拡張RAM、拡張ROM、の3つを実現するものなので、利用価値は高いと思います。
難点は、mk2/mk2SR では、SDカードが使用できない点です。
(mk2/mk2SR側を改造すれば使えます)
ちなみに...使用したCPLDのボードがAMAZONなどで購入できます。
私はこのCPLDボードと、DIP型のAVR、SRAMを使ってプロトタイプを作成しました。

ちゃんとした(?)基板のものは、ばくてんさんに作成して頂いています。
単純に NANOCART の同機能を専用ハードで実現したものなので、NANOCART を持っている人は、あまり必要がないものだと思います。
ROMEMU(NANOCART) の機能が、SDカード、拡張RAM、拡張ROM、の3つを実現するものなので、利用価値は高いと思います。
難点は、mk2/mk2SR では、SDカードが使用できない点です。
(mk2/mk2SR側を改造すれば使えます)
ちなみに...使用したCPLDのボードがAMAZONなどで購入できます。
私はこのCPLDボードと、DIP型のAVR、SRAMを使ってプロトタイプを作成しました。
ちゃんとした(?)基板のものは、ばくてんさんに作成して頂いています。
ROMEMU(1)(ver1.22リリース)
ROMEMU (ver1.20)をリリースします。
AVR/CPLD hexファイル:romemu_ver211.zip
AVRソース:romemu_source_avr.zip
CPLDソース:romemu_source_cpld.zip
ROMEMU回路図
ROMEMU とは?
ROMEMU とは、NANOCARTと同等の機能を持つハードウエアを、DE0-nanoを使わずに専用ハードで実現したものです(コストダウンですね)。
ROMEMU が出来る事は以下の通りです。
1)SDカードからフロッピーのデータを、P6から読み書きできる。
2)SDカードからROMデータをSRAMに格納し、それを P6の拡張ROMとして動作させることができる。
3)P6から SRAM に読み書きができ、P6の拡張RAMとして動作させることができる。
2)と3)のSRAM は別のもので、それぞれ512Kバイト分あります。
詳細は同梱の説明書を参照してください。
2020年10月28日
NANOCART/ROMEMU用ROMファイル選択プログラム(ver1.1)
NANOCART用のROMファイル選択プログラム(ver1.1)をリリースします。
INITROM.zip
ver1.0→ver1.1変更点
NANOCARTのバンク記憶の仕様変更に伴う変更。
このプログラムは、NANOCARTで複数のROMファイルをSDカードに格納した時に選択できるものです。
NANOCARTで使用するためには、まず SDカードに \ROM を作成して下さい。
\ROM の下に、INIT.ROM を格納して下さい。
この状態で、P6 をリセット長押し→離すと、P6が起動しますが、その時に SHIFT を
押しているとROMファイルの選択画面になります。
SHIFT を押していないと、通常に起動します(FDDなどが起動する)。
INITROM.zip
ver1.0→ver1.1変更点
NANOCARTのバンク記憶の仕様変更に伴う変更。
このプログラムは、NANOCARTで複数のROMファイルをSDカードに格納した時に選択できるものです。
NANOCARTで使用するためには、まず SDカードに \ROM を作成して下さい。
\ROM の下に、INIT.ROM を格納して下さい。
この状態で、P6 をリセット長押し→離すと、P6が起動しますが、その時に SHIFT を
押しているとROMファイルの選択画面になります。
SHIFT を押していないと、通常に起動します(FDDなどが起動する)。
NANOCARTリリース(ver1.21)
NANOCART (ver1.21)をリリースします。
NANOCART.zip
ver1.20 → ver1.21 変更点
バンク情報の記憶方法を
ポート0x06に書き込みをした時→ポート0x06から読み出しをした時
に変更
NANOCART とは?
NANOCARTとは、動画再生カートリッジを使ってFDDエミュレータとROMエミュレータを実現したものです。
動画再生カートリッジとは、以前に作成したもので、DE0-nanoとP6シリーズのバスを繋いだだけの簡単なものです。そのため、DE0-nanoが実現できることなら大抵の事ができるので、今回は動画再生ではなく、FDDとROMのエミュレータを作成しました。
NANOCARTが出来る事は以下の通りです。
1)SDカードからフロッピーのデータを、P6から読み書きできる。
2)SDカードからROMデータを読み出し、DE0-nano内のSDRAMに格納する。
そのDE0-nano内のSDRAM を読み出し、P6の拡張ROMとして動作させることができる。
3)P6から、DE0-nano内のSDRAM に読み書きができ、P6の拡張RAMとして動作させることができる。
詳細は同梱の説明書を参照してください。
2020年10月27日
NANOCARTでなんでもメガROMを使った時の問題
NANOCARTでなんでもメガROMを使った時の問題が見つかりました。
問題は、複数のファイルがある場合、2つ目以降のプログラムを
動かした後にリセットすると、「How Many Pages?」が出ると
いうものです。
理由は NANOCART側の問題なので、次バージョンで対処します。
併せて INIT.ROM も変更します。
問題は、複数のファイルがある場合、2つ目以降のプログラムを
動かした後にリセットすると、「How Many Pages?」が出ると
いうものです。
理由は NANOCART側の問題なので、次バージョンで対処します。
併せて INIT.ROM も変更します。
2020年10月25日
mk2/mk2SRでSD6031WIF/NANOCARTを使う改造
66、66SR では、内蔵ドライブ以外に外付けドライブが使用できます。
その構造を利用して作っているのが、SD6031WIF/NANOCARTです。
しかし、mk2/mk2SR では、外付けドライブ用にコネクタと8255が用意されているため、そのままSD6031WIF/NANOCART は使用できません。
mk2/mk2SR に少しの改造をするだけで、SD6031WIF/NANOCART を使う事ができるようになります。
以下が改造する箇所です。

mk2改造箇所

mk2SR改造箇所
FDDコネクタに繋がっている、8255のCS端子をベタ"L"→"H"にするだけの改造になります。
"H"にするために、10Kでプルアップしています。
元のFDDコネクタを使用したい場合は、スイッチをONにすると、"L"になり、元の回路に戻ります。
実際の改造箇所ですが、基板のパターンカットをするか、8255のCSのピンを切るかをします。
8255のCSのピンを切るのが確実なのですが、工作するのが難しい部分にあるので難易度が高いかもしれません。
ピンを切る場合は、基板に近い箇所を切断し、上の方の部分を残すようにします。
ニッパが入ればベストですが、私の場合はマイナスドライバを差し込んでねじ切りました。

mk2改造箇所1

mk2改造箇所2

mk2SR改造箇所1

mk2SR改造箇所2
スイッチをどこに置くかが結構問題です。
スイッチ自体を付けない(FDDコネクタを使わない)のもテです。
私は本体背面に穴を開けて、スイッチを付けています。
その構造を利用して作っているのが、SD6031WIF/NANOCARTです。
しかし、mk2/mk2SR では、外付けドライブ用にコネクタと8255が用意されているため、そのままSD6031WIF/NANOCART は使用できません。
mk2/mk2SR に少しの改造をするだけで、SD6031WIF/NANOCART を使う事ができるようになります。
以下が改造する箇所です。
mk2改造箇所
mk2SR改造箇所
FDDコネクタに繋がっている、8255のCS端子をベタ"L"→"H"にするだけの改造になります。
"H"にするために、10Kでプルアップしています。
元のFDDコネクタを使用したい場合は、スイッチをONにすると、"L"になり、元の回路に戻ります。
実際の改造箇所ですが、基板のパターンカットをするか、8255のCSのピンを切るかをします。
8255のCSのピンを切るのが確実なのですが、工作するのが難しい部分にあるので難易度が高いかもしれません。
ピンを切る場合は、基板に近い箇所を切断し、上の方の部分を残すようにします。
ニッパが入ればベストですが、私の場合はマイナスドライバを差し込んでねじ切りました。
mk2改造箇所1
mk2改造箇所2
mk2SR改造箇所1
mk2SR改造箇所2
スイッチをどこに置くかが結構問題です。
スイッチ自体を付けない(FDDコネクタを使わない)のもテです。
私は本体背面に穴を開けて、スイッチを付けています。
2020年10月24日
NANOCART/戦士mk2の似非mk2モード
NANOCARTでも、戦士mk2と同じように似非mk2モードにできます。
1)ROM を「マウントなし」にする。
もしくはSDを抜いた状態でNANOCARTを長押しリセットする。
→これで、外部RAMが64K割り当てられる。
2)P6を再起動する。
3)必要なPAGE数を入力する。
4)BASICが起動したら、以下を入力する。
out &H06,&H66
out &Hf0,&H71
out &Hf2,&H55
5)目的のプログラムをロード、実行する。
例えば、Tiny-XEVIOUS ならページ2を設定して、
OUT命令を入力後、CLOAD、RUN で動作します。
スペースハリアも同様に動作します。
Thunder-Force は、ロード画面がmk2の画面モードを
使用しているため、修正が必要になります。
(修正方法は現在調査中です)
戦士mk2のカートリッジの場合は、以下の手順になります。
1)ESCを押してP6を起動します(66SRの場合は、一呼吸おいてから押して下さい)。
2)必要なPAGE数を入力する。
3)目的のプログラムをロード、実行する。
1)ROM を「マウントなし」にする。
もしくはSDを抜いた状態でNANOCARTを長押しリセットする。
→これで、外部RAMが64K割り当てられる。
2)P6を再起動する。
3)必要なPAGE数を入力する。
4)BASICが起動したら、以下を入力する。
out &H06,&H66
out &Hf0,&H71
out &Hf2,&H55
5)目的のプログラムをロード、実行する。
例えば、Tiny-XEVIOUS ならページ2を設定して、
OUT命令を入力後、CLOAD、RUN で動作します。
スペースハリアも同様に動作します。
Thunder-Force は、ロード画面がmk2の画面モードを
使用しているため、修正が必要になります。
(修正方法は現在調査中です)
戦士mk2のカートリッジの場合は、以下の手順になります。
1)ESCを押してP6を起動します(66SRの場合は、一呼吸おいてから押して下さい)。
2)必要なPAGE数を入力する。
3)目的のプログラムをロード、実行する。
NANOCART用ROMファイル選択プログラム(ver1.0)
NANOCART用のROMファイル選択プログラム(ver1.0)をリリースします。
INITROM.zip
このプログラムは、NANOCARTで複数のROMファイルをSDカードに格納した時に選択できるものです。
NANOCARTで使用するためには、まず SDカードに \ROM を作成して下さい。
\ROM の下に、INIT.ROM を格納して下さい。
この状態で、P6 をリセット長押し→離すと、P6が起動しますが、その時に SHIFT を押しているとROMファイルの選択画面になります。
SHIFT を押していないと、通常に起動します(FDDなどが起動する)。
INITROM.zip
このプログラムは、NANOCARTで複数のROMファイルをSDカードに格納した時に選択できるものです。
NANOCARTで使用するためには、まず SDカードに \ROM を作成して下さい。
\ROM の下に、INIT.ROM を格納して下さい。
この状態で、P6 をリセット長押し→離すと、P6が起動しますが、その時に SHIFT を押しているとROMファイルの選択画面になります。
SHIFT を押していないと、通常に起動します(FDDなどが起動する)。
NANOCARTリリース(ver1.20)
NANOCART (ver1.20)をリリースします。
NANOCART_201024.zip
NANOCART とは?
NANOCARTとは、動画再生カートリッジを使ってFDDエミュレータとROMエミュレータを実現したものです。
動画再生カートリッジとは、以前に作成したもので、DE0-nanoとP6シリーズのバスを繋いだだけの簡単なものです。そのため、DE0-nanoが実現できることなら大抵の事ができるので、今回は動画再生ではなく、FDDとROMのエミュレータを作成しました。
NANOCARTが出来る事は以下の通りです。
1)SDカードからフロッピーのデータを、P6から読み書きできる。
2)SDカードからROMデータを読み出し、DE0-nano内のSDRAMに格納する。
そのDE0-nano内のSDRAM を読み出し、P6の拡張ROMとして動作させることができる。
3)P6から、DE0-nano内のSDRAM に読み書きができ、P6の拡張RAMとして動作させることができる。
詳細は同梱の説明書を参照してください。
2020年10月11日
SD6031関連
SD6031関連について4件ほどアップしました。
一気に大量にアップしたので、何か間違っているかもしれません...
今回の目玉(?)は、SD6031Air対応+OLED対応です。
ただ、SD6031Air を持っている人がどれほどいるかが問題かも...
SD6031/SD6031WIF も、今使っている ATMEGA164P じゃなくて
ATMEGA1284P を使うと、SD6031Air のように SDカードから
アップデートができるようになりそうなんですが...
ATMEGA1284P に変更して、OLED が実装できたら、ほとんど
SD6031Air と同等になるんですが...
OLEDを制御するためには、端子が足りない...残念。
次は、SD6031WIF をmk2/mk2SRで使うための、mk2/mk2SR 改造記事の予定です。
その次は、NANOCART(動画再生カートリッジを使った、SD6031WIF+戦士mk2)の予定です。
一気に大量にアップしたので、何か間違っているかもしれません...
今回の目玉(?)は、SD6031Air対応+OLED対応です。
ただ、SD6031Air を持っている人がどれほどいるかが問題かも...
SD6031/SD6031WIF も、今使っている ATMEGA164P じゃなくて
ATMEGA1284P を使うと、SD6031Air のように SDカードから
アップデートができるようになりそうなんですが...
ATMEGA1284P に変更して、OLED が実装できたら、ほとんど
SD6031Air と同等になるんですが...
OLEDを制御するためには、端子が足りない...残念。
次は、SD6031WIF をmk2/mk2SRで使うための、mk2/mk2SR 改造記事の予定です。
その次は、NANOCART(動画再生カートリッジを使った、SD6031WIF+戦士mk2)の予定です。
FlashAir用イメージファイル選択アプリ(ver1.1)
SD6031等用のFlashAir用イメージファイル選択アプリ(ver1.1)をリリースします。
WebApp_ver11.zip
・Ver1.0→Ver1.1変更点
「no initialize when RESET」の項目の削除
Webアプリのバージョンの表示
SD6031などのファームウエアのバージョンの表示
・アップデートの手順
FlashAir の \SD_WLAN の下に、
image
js
p6ttf
List.htm
をコピーして下さい。
WebApp_ver11.zip
・Ver1.0→Ver1.1変更点
「no initialize when RESET」の項目の削除
Webアプリのバージョンの表示
SD6031などのファームウエアのバージョンの表示
・アップデートの手順
FlashAir の \SD_WLAN の下に、
image
js
p6ttf
List.htm
をコピーして下さい。
SD6031等用イメージファイル選択プログラム(ver3.0)
SD6031等用のイメージファイル選択プログラム(ver3.0)をリリースします。
INIT_ver30.zip
・ver2.0→Ver3.0変更点
拡張子を選択できるように変更
ファイル名の並び替えを追加
ドライブ数を2に固定
ファームバージョンの表示
BASIC起動のメニューの削除
INIT.P31 を \d1 に格納して使用してください。
SDCC を使ったため、サイズがちょっと大きくなっています。
INIT_ver30.zip
・ver2.0→Ver3.0変更点
拡張子を選択できるように変更
ファイル名の並び替えを追加
ドライブ数を2に固定
ファームバージョンの表示
BASIC起動のメニューの削除
INIT.P31 を \d1 に格納して使用してください。
SDCC を使ったため、サイズがちょっと大きくなっています。
SD6031Airファームウエアリリース(ver1.20)
SD6031Air用のファームウエア(ver1.20)をリリースします。
注)SD6031/SD6031WIFには使用できません。
SD6031Air_ver120.zip
・2018/01/14 version→Ver1.20変更点
SD6031/SD6031WIFのver1.20 と同様の機能を実装
(SDHCへの対応/D88の対応など)
リセット方法の変更(後述)
OLED の対応(後述)
sd6031AR.hex は AVR用ファームです。AVRに書き込んで下さい。
ファームウエアのアップデートの方法は以下の通りです。
(アップデートは自己責任で行って下さい。アップデート、アップデート後の問題についても責任は負えませんので)。
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 を消しておく。
・リセットについて
P6 のリセットボタンを押し続けると、SD6031Air の LED の赤と青の両方が15回ほど点滅します。
15回点滅する前に、P6のリセットボタンを離すと、以下の動作になります。
・選択していた拡張子、イメージファイルはそのままです。
15回点滅するまで、P6のリセットボタンを押し続けると、以下の動作になります。
・SD6031Air が初期化されます。
・選択していた拡張子は、P31になります。
・選択していたイメージファイルは、初期のもの(INIT.P31か、最新のファイル)になります。
SDカードを抜いて、新たに刺した場合は、以下の動作になります。
・選択していた拡張子は、そのままです。
・選択していたイメージファイルは、選択している拡張子の中のINITファイルか最新のファイルになります。
例えば、D88 の拡張子を選んでいると、(あれば)INIT.D88か、最新の〜.D88 が選ばれます。
・OLED について
OLED は、SD6031Airのコネクタに接続します。

接続は以下の通りです。
SD6031Air
2 1
4 3
6 5
SD6031Air:2 ←→ VCC:OLED
SD6031Air:6 ←→ GND:OLED
SD6031Air:5 ←→ SCL:OLED
SD6031Air:1 ←→ SDA:OLED
使用できる OLED は、以下のものです。
https://akizukidenshi.com/catalog/g/gP-12031/
https://www.amazon.co.jp/HiLetgo-128%C3%9764-LCD%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4SSD1306%E6%B6%B2%E6%99%B6-MSP430-Arduino%E3%81%AB%E5%AF%BE%E5%BF%9C/dp/B071ZPFDWW/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=OLED+SSD1306&qid=1602413330&refinements=p_76%3A2227293051&rnid=2227291051&rps=1&sr=8-3
https://www.amazon.co.jp/VKLSVAN-0-96-%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB-OLED%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB128%C3%9764-LCD%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4Arduino%E3%81%AB%E5%AF%BE%E5%BF%9C/dp/B08FJ5JJ85/ref=sr_1_9?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=OLED+SSD1306&qid=1602413330&refinements=p_76%3A2227293051&rnid=2227291051&rps=1&sr=8-9
制御LSIが SSD1306 で、I2C 通信のものが使えると思います。
コネクタの形状が SD6031Air と OLED とで違うため、変換用コネクタを
作って実装しました。


注)SD6031/SD6031WIFには使用できません。
SD6031Air_ver120.zip
・2018/01/14 version→Ver1.20変更点
SD6031/SD6031WIFのver1.20 と同様の機能を実装
(SDHCへの対応/D88の対応など)
リセット方法の変更(後述)
OLED の対応(後述)
sd6031AR.hex は AVR用ファームです。AVRに書き込んで下さい。
ファームウエアのアップデートの方法は以下の通りです。
(アップデートは自己責任で行って下さい。アップデート、アップデート後の問題についても責任は負えませんので)。
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 を消しておく。
・リセットについて
P6 のリセットボタンを押し続けると、SD6031Air の LED の赤と青の両方が15回ほど点滅します。
15回点滅する前に、P6のリセットボタンを離すと、以下の動作になります。
・選択していた拡張子、イメージファイルはそのままです。
15回点滅するまで、P6のリセットボタンを押し続けると、以下の動作になります。
・SD6031Air が初期化されます。
・選択していた拡張子は、P31になります。
・選択していたイメージファイルは、初期のもの(INIT.P31か、最新のファイル)になります。
SDカードを抜いて、新たに刺した場合は、以下の動作になります。
・選択していた拡張子は、そのままです。
・選択していたイメージファイルは、選択している拡張子の中のINITファイルか最新のファイルになります。
例えば、D88 の拡張子を選んでいると、(あれば)INIT.D88か、最新の〜.D88 が選ばれます。
・OLED について
OLED は、SD6031Airのコネクタに接続します。
接続は以下の通りです。
SD6031Air
2 1
4 3
6 5
SD6031Air:2 ←→ VCC:OLED
SD6031Air:6 ←→ GND:OLED
SD6031Air:5 ←→ SCL:OLED
SD6031Air:1 ←→ SDA:OLED
使用できる OLED は、以下のものです。
https://akizukidenshi.com/catalog/g/gP-12031/
https://www.amazon.co.jp/HiLetgo-128%C3%9764-LCD%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4SSD1306%E6%B6%B2%E6%99%B6-MSP430-Arduino%E3%81%AB%E5%AF%BE%E5%BF%9C/dp/B071ZPFDWW/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=OLED+SSD1306&qid=1602413330&refinements=p_76%3A2227293051&rnid=2227291051&rps=1&sr=8-3
https://www.amazon.co.jp/VKLSVAN-0-96-%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB-OLED%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB128%C3%9764-LCD%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4Arduino%E3%81%AB%E5%AF%BE%E5%BF%9C/dp/B08FJ5JJ85/ref=sr_1_9?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=OLED+SSD1306&qid=1602413330&refinements=p_76%3A2227293051&rnid=2227291051&rps=1&sr=8-9
制御LSIが SSD1306 で、I2C 通信のものが使えると思います。
コネクタの形状が SD6031Air と OLED とで違うため、変換用コネクタを
作って実装しました。
SD6031ファームウエアリリース(ver1.20)
SD6031/SD6031WIF用のファームウエア(ver1.20)をリリースします。
注)SD6031Airには使用できません。
SD6031_ver120.zip
・Ver1.12→Ver1.20変更点
リセット方法の変更(後述)
SDカードへのアクセスの高速化
FlashAir使用時の、アクセス間隔を修正(250ms→5秒)
イメージファイル名の送信コマンドの修正(コマンド:0xfc)
EEPROMアクセス関連の廃止(コマンド:0xe0/0xe1)
アンマウント時にファイルにアクセスしないように変更
他のSD6031系のファームウエアとの共通化(動作的には同じです)。
sd6031.hex は AVR用ファームです。AVRに書き込んで下さい。
ある程度のテストしかしていないので、何か問題がありましたら連絡頂けると幸いです、
1)リセットラインを改造していない場合
・SD6031/SD6031WIF が初期化されます。
・選択していた拡張子は、P31になります。
・選択していたイメージファイルは、初期のもの(INIT.P31か、最新のファイル)になります。
2)リセットラインを改造している場合
P6のリセットボタンを押し続けると SD6031/SD6031WIF の LED の赤と緑の両方が15回ほど点滅します。
15回点滅する前に、P6のリセットボタンを離すと、以下の動作になります。
・選択していた拡張子、イメージファイルはそのままです。
15回点滅するまで、P6のリセットボタンを押し続けると、以下の動作になります。
・SD6031/SD6031WIF が初期化されます。
・選択していた拡張子は、P31になります。
・選択していたイメージファイルは、初期のもの(INIT.P31か、最新のファイル)になります。
SDカードを抜いて、新たに刺した場合は、以下の動作になります。
・選択していた拡張子は、そのままです。
・選択していたイメージファイルは、選択している拡張子の中のINITファイルか最新のファイルになります。
例えば、D88 の拡張子を選んでいると、(あれば)INIT.D88か、最新の〜.D88 が選ばれます。
注)SD6031Airには使用できません。
SD6031_ver120.zip
・Ver1.12→Ver1.20変更点
リセット方法の変更(後述)
SDカードへのアクセスの高速化
FlashAir使用時の、アクセス間隔を修正(250ms→5秒)
イメージファイル名の送信コマンドの修正(コマンド:0xfc)
EEPROMアクセス関連の廃止(コマンド:0xe0/0xe1)
アンマウント時にファイルにアクセスしないように変更
他のSD6031系のファームウエアとの共通化(動作的には同じです)。
sd6031.hex は AVR用ファームです。AVRに書き込んで下さい。
ある程度のテストしかしていないので、何か問題がありましたら連絡頂けると幸いです、
1)リセットラインを改造していない場合
・SD6031/SD6031WIF が初期化されます。
・選択していた拡張子は、P31になります。
・選択していたイメージファイルは、初期のもの(INIT.P31か、最新のファイル)になります。
2)リセットラインを改造している場合
P6のリセットボタンを押し続けると SD6031/SD6031WIF の LED の赤と緑の両方が15回ほど点滅します。
15回点滅する前に、P6のリセットボタンを離すと、以下の動作になります。
・選択していた拡張子、イメージファイルはそのままです。
15回点滅するまで、P6のリセットボタンを押し続けると、以下の動作になります。
・SD6031/SD6031WIF が初期化されます。
・選択していた拡張子は、P31になります。
・選択していたイメージファイルは、初期のもの(INIT.P31か、最新のファイル)になります。
SDカードを抜いて、新たに刺した場合は、以下の動作になります。
・選択していた拡張子は、そのままです。
・選択していたイメージファイルは、選択している拡張子の中のINITファイルか最新のファイルになります。
例えば、D88 の拡張子を選んでいると、(あれば)INIT.D88か、最新の〜.D88 が選ばれます。
2020年08月10日
SD6031ファームウエアリリース(ver1.13)
SD6031/SD6031WIF用のファームウエア(ver1.13)をリリースします。
注)SD6031Airには使用できません。
SD6031_ver113.zip
(↑ファイルが壊れていたものを差し替えました)
・Ver1.12→Ver1.13変更点
d88 ファイルの1D/1DD/2D などの認識方法を、「ヘッダ0x1bの値を見る」から「ヘッダのトラック数を数える」に変更。
これにより、2Dフォーマットのものも読み取りが可能になります(P6から見た場合、1DD)。
ある程度のテストしかしていないので、何か問題がありましたら連絡頂けると幸いです、
なぜか、1年ほど前に作成したものがアップされていませんでした...
注)SD6031Airには使用できません。
SD6031_ver113.zip
(↑ファイルが壊れていたものを差し替えました)
・Ver1.12→Ver1.13変更点
d88 ファイルの1D/1DD/2D などの認識方法を、「ヘッダ0x1bの値を見る」から「ヘッダのトラック数を数える」に変更。
これにより、2Dフォーマットのものも読み取りが可能になります(P6から見た場合、1DD)。
ある程度のテストしかしていないので、何か問題がありましたら連絡頂けると幸いです、
なぜか、1年ほど前に作成したものがアップされていませんでした...
2019年07月30日
SD6031ファームウエアリリース(ver1.12)
SD6031/SD6031WIF用のファームウエア(ver1.12)をリリースします。
注)SD6031Airには使用できません。
SD6031_ver112.zip
・Ver1.11→Ver1.12変更点
一部のd88ファイルが正常に認識されないのを改修。
ある程度のテストしかしていないので、何か問題がありましたら連絡頂けると幸いです、
注)SD6031Airには使用できません。
SD6031_ver112.zip
・Ver1.11→Ver1.12変更点
一部のd88ファイルが正常に認識されないのを改修。
ある程度のテストしかしていないので、何か問題がありましたら連絡頂けると幸いです、
2019年07月29日
SD6031ファームウエアリリース(ver1.11)
SD6031/SD6031WIF用のファームウエア(ver1.11)をリリースします。
注)SD6031Airには使用できません。
SD6031_ver111.zip
・Ver1.00→Ver1.10変更点(Ver1.10未公開)
FlashAir(W-02/W-03/W-04)対応。
D88 を入れ替えた時に、正常に読み込まない可能性があるのを修正。
・Ver1.10→Ver1.11変更点
(FlashAir)拡張子を表示するようにした。
注)FlashAirを使用して、P6の起動時のファイルを選択するためには、SD6031/SD6031WIF を改造する必要があります(1箇所パターンカット)。
起動時のファイルを選ばなくていいのであれば、改造の必要はありません。
FDアクセスには、ChaNさん作のぷちFatFSとサンプル用プログラムを使用しています。
Web用のhtml、Javaスクリプトは、西田さんが SD6031Air用に開発されたものをベースに改造しています。
フォントファイルに、Hashiさん作のP6mk2フォントを使用しています。
それぞれの作者さんに感謝です。
ある程度のテストしかしていないので、何か問題がありましたら連絡頂けると幸いです、
注)SD6031Airには使用できません。
SD6031_ver111.zip
・Ver1.00→Ver1.10変更点(Ver1.10未公開)
FlashAir(W-02/W-03/W-04)対応。
D88 を入れ替えた時に、正常に読み込まない可能性があるのを修正。
・Ver1.10→Ver1.11変更点
(FlashAir)拡張子を表示するようにした。
注)FlashAirを使用して、P6の起動時のファイルを選択するためには、SD6031/SD6031WIF を改造する必要があります(1箇所パターンカット)。
起動時のファイルを選ばなくていいのであれば、改造の必要はありません。
FDアクセスには、ChaNさん作のぷちFatFSとサンプル用プログラムを使用しています。
Web用のhtml、Javaスクリプトは、西田さんが SD6031Air用に開発されたものをベースに改造しています。
フォントファイルに、Hashiさん作のP6mk2フォントを使用しています。
それぞれの作者さんに感謝です。
ある程度のテストしかしていないので、何か問題がありましたら連絡頂けると幸いです、
2019年07月21日
SD6031ファームウエアコマンド一覧(2)
SD6031/SD6031WIFで扱う事が出来るコマンド一覧です(その2)。
本来のドライブ(PC-6031/PC-80S31等)のコマンドは 0x00〜0x7f で、SD6031/SD6031WIF で新たに追加したコマンドは0x80〜0xfe になります。
従来からのコマンドは以下の通りです。
1)書き込みコマンド群
○コマンド0x01:write data
P6→SD6031 0x01 セクタ数 ドライブ番号 トラック番号 セクタ番号 書き込みデータ…書き込みデータ
○コマンド0x11:high speed write data
P6→SD6031 0x11 セクタ数 ドライブ番号 トラック番号 セクタ番号 書き込みデータ…書き込みデータ
○コマンド0x83:expand write data
P6→SD6031 0x83 セクタ数 ドライブ番号 トラック番号上位 下位 セクタ番号 書き込みデータ…書き込みデータ
○コマンド0x84:expand high speed write data
P6→SD6031 0x84 セクタ数 ドライブ番号 トラック番号上位 下位 セクタ番号 書き込みデータ…書き込みデータ
○コマンド0x86:double high speed write data
P6→SD6031 0x86 セクタ数 ドライブ番号 トラック番号 セクタ番号 書き込みデータ…書き込みデータ
○コマンド0x87:expand double high speed write data
P6→SD6031 0x87 セクタ数 ドライブ番号 トラック番号上位 下位 セクタ番号 書き込みデータ…書き込みデータ
書き込みコマンドが複数存在するのは、
・一度に書き込むバイト数が、1バイト/2バイト/4バイト
・トラック番号の指定の仕方が、8ビット/16ビット
の3通り×2通り=6通りの指定の方法があるためです。
やる事は全て同じで、指定したセクタに対して、データを書き込みます。
1セクタは256バイトですので、一度に256×セクタ数分のデータを書き込みます。
複数のセクタにまたがって書き込む事は可能ですが、トラックはまたげません。
またドライブ番号を 0x81 にした場合、EEPROMに書き込みが出来ます。
この際、256バイト単位(=セクタ単位)でしか書き込みが出来ません。
トラック番号がアドレス×256相当になります。セクタ番号は無視します。
例:
P6→SD6031 0x01 0x01 0x81 0x00 0x01 data...
0x01(書き込みコマンド) 0x01(セクタ数) 0x81(ドライブ番号)
0x00(トラック番号) 0x01(セクタ番号)
の順なので、AVR内EEPROMのアドレス0x0000〜0x01FFに対して
書き込みを行います。
○コマンド0x05:FORMAT
P6→SD6031 0x05 ドライブ番号
指定のドライブをフォーマットします。具体的には、データの部分を 0xFF で埋めます。このコマンドは通常の1D/1DD(2D)フォーマットのイメージファイルのみに使用してください。
拡張子は、D88、DSK、P31 のみ有効です。それ以外はエラーを返します。
2)読み出しコマンド群
○コマンド0x02:read data
P6→SD6031 0x02 セクタ数 ドライブ番号 トラック番号 セクタ番号
○コマンド0x85:expand read data
P6→SD6031 0x85 セクタ数 ドライブ番号 トラック番号上位 下位 セクタ番号
○コマンド0x03:send data
P6→SD6031 0x03
SD6031→P6 読み出しデータ…読み出しデータ
○コマンド0x12:high speed send data
P6→SD6031 0x12
SD6031→P6 読み出しデータ…読み出しデータ
○コマンド0x88:double high speed send data
P6→SD6031 0x88
SD6031→P6 読み出しデータ…読み出しデータ
書き込みコマンドと同じく、読み出しコマンドも指定方法により複数存在します。
read data系で、ディスクからバッファにデータを読み出し、send data系でそのデータをP6側に転送します。
また書き込みと同じく、ドライブ番号を 0x81 にした場合、EEPROMから読み出しが出来ます。
例:
P6→SD6031 0x02 0x02 0x81 0x00 0x01
P6→SD6031 0x12
SD6031→P6 data受信...
0x02(読み出しコマンド) 0x02(セクタ数) 0x81(ドライブ番号)
0x00(トラック番号) 0x01(セクタ番号)
0x12(高速センド)
の順なので、AVR内EEPROMのアドレス0x0000〜0x01FFの読み出しを行います。読み出しの際は、2バイト転送で行います。
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、send data系を実行した後に0
bit5-1:常に0
bit0:直前のコマンドがエラー時に1、エラーがなければ0
○コマンド0x07:DRIVE STATUS
P6→SD6031:0x07
SD6031→P6:STATUS情報(下記)
STATUS情報は以下の通りです(1バイトのデータ)。
bit7:常に0
bit6:常に0
bit5:常に1(ドライブ#1使用を示す)
bit4:常に1(ドライブ#0使用を示す)
bit3-0-1:常に1
○コマンド0x09:send memory
P6→SD6031 0x09 開始アドレス上位 下位 終了アドレス上位 下位
SD6031→P6 メモリ情報・・・メモリ情報
○コマンド0x0b:send memory 2
P6→SD6031 0x0b アドレス上位 下位 バイト数上位 下位
SD6031→P6 メモリ情報・・・メモリ情報
フロッピードライブのROMの内容を読み出す命令です。
BASIC-ROM から読み出される場合があるため、SD6031/SD6031WIF では、特定のアドレスを読み出した時に特定の値を返すようにしています。
○コマンド0x14:send device status
P6→SD6031 0x14 ドライブ番号
SD6031→P6 ST3
メディアのステータス情報を返します。
返す内容は以下の通り。
bit7:常に0
bit6:ライトプロテクト時1
bit5:常に0
bit4:常に0
bit3:SDカード挿入時1
bit2:常に0
bit1-0:ドライブ番号(00 または 01)
○コマンド0x17:set surface mode
P6→SD6031 0x17 設定情報
1D/1DD(2D) の設定の変更を行います。
bit7-2:未使用
bit1:ドライブ#1の設定(0で1D、1で1DD/2D)
bit0:ドライブ#0の設定(0で1D、1で1DD/2D)
リセット直後は、すべてのドライブで1Dモードです。
○コマンド0x18:send surface mode
P6→SD6031 0x18
SD6031→P6 設定情報
コマンド0x17 で設定した情報を読み出すコマンドです。
4)イメージファイル関連
○コマンド0x82:report disk image length
P6→SD6031 0x82 ドライブ番号
SD6031→P6 イメージファイル長×4(最上位から送信される)
現在選択しているイメージファイルの長さを読み出します。メディアとして使用できる部分ではなく、実際のファイル長を読み出します。
普通のP31フォーマット:0x000a0000
普通のD88フォーマット:0x000552a0
を返します。
○コマンド0xFD:get image file
P6→SD6031 0xFD ドライブ番号
SD6031→P6
0x01、ファイル#1のファイル名1バイト目…8バイト目、
0x01、ファイル#2のファイル名1バイト目…8バイト目、
:
0x01、ファイル#nのファイル名1バイト目…8バイト目、
0x00
SDカードに格納されているイメージファイルで、現在指定している拡張子のファイルの一覧を取得します。イメージファイルの数分だけ、0x01+ファイル名(8バイト)の9バイトを順番に送信してきます。最後に0x00が送信されます。返してくるバイト数は、9×ファイル数+1 になります。P6側では、0x00 が受信されるまで読み出す必要があります。
ファイル名は、拡張子を除いた8文字です。ファイル名が8文字未満の場合は、空白(0x20)で埋められます。
○コマンド0xFE:set image file
P6→SD6031 0xFE ドライブ番号 ファイル名1バイト目…8バイト目
指定したドライブ番号のイメージファイルを指定するファイルにします。ファイル名などは、get image file と同じです。
本来のドライブ(PC-6031/PC-80S31等)のコマンドは 0x00〜0x7f で、SD6031/SD6031WIF で新たに追加したコマンドは0x80〜0xfe になります。
従来からのコマンドは以下の通りです。
1)書き込みコマンド群
○コマンド0x01:write data
P6→SD6031 0x01 セクタ数 ドライブ番号 トラック番号 セクタ番号 書き込みデータ…書き込みデータ
○コマンド0x11:high speed write data
P6→SD6031 0x11 セクタ数 ドライブ番号 トラック番号 セクタ番号 書き込みデータ…書き込みデータ
○コマンド0x83:expand write data
P6→SD6031 0x83 セクタ数 ドライブ番号 トラック番号上位 下位 セクタ番号 書き込みデータ…書き込みデータ
○コマンド0x84:expand high speed write data
P6→SD6031 0x84 セクタ数 ドライブ番号 トラック番号上位 下位 セクタ番号 書き込みデータ…書き込みデータ
○コマンド0x86:double high speed write data
P6→SD6031 0x86 セクタ数 ドライブ番号 トラック番号 セクタ番号 書き込みデータ…書き込みデータ
○コマンド0x87:expand double high speed write data
P6→SD6031 0x87 セクタ数 ドライブ番号 トラック番号上位 下位 セクタ番号 書き込みデータ…書き込みデータ
書き込みコマンドが複数存在するのは、
・一度に書き込むバイト数が、1バイト/2バイト/4バイト
・トラック番号の指定の仕方が、8ビット/16ビット
の3通り×2通り=6通りの指定の方法があるためです。
やる事は全て同じで、指定したセクタに対して、データを書き込みます。
1セクタは256バイトですので、一度に256×セクタ数分のデータを書き込みます。
複数のセクタにまたがって書き込む事は可能ですが、トラックはまたげません。
またドライブ番号を 0x81 にした場合、EEPROMに書き込みが出来ます。
この際、256バイト単位(=セクタ単位)でしか書き込みが出来ません。
トラック番号がアドレス×256相当になります。セクタ番号は無視します。
例:
P6→SD6031 0x01 0x01 0x81 0x00 0x01 data...
0x01(書き込みコマンド) 0x01(セクタ数) 0x81(ドライブ番号)
0x00(トラック番号) 0x01(セクタ番号)
の順なので、AVR内EEPROMのアドレス0x0000〜0x01FFに対して
書き込みを行います。
○コマンド0x05:FORMAT
P6→SD6031 0x05 ドライブ番号
指定のドライブをフォーマットします。具体的には、データの部分を 0xFF で埋めます。このコマンドは通常の1D/1DD(2D)フォーマットのイメージファイルのみに使用してください。
拡張子は、D88、DSK、P31 のみ有効です。それ以外はエラーを返します。
2)読み出しコマンド群
○コマンド0x02:read data
P6→SD6031 0x02 セクタ数 ドライブ番号 トラック番号 セクタ番号
○コマンド0x85:expand read data
P6→SD6031 0x85 セクタ数 ドライブ番号 トラック番号上位 下位 セクタ番号
○コマンド0x03:send data
P6→SD6031 0x03
SD6031→P6 読み出しデータ…読み出しデータ
○コマンド0x12:high speed send data
P6→SD6031 0x12
SD6031→P6 読み出しデータ…読み出しデータ
○コマンド0x88:double high speed send data
P6→SD6031 0x88
SD6031→P6 読み出しデータ…読み出しデータ
書き込みコマンドと同じく、読み出しコマンドも指定方法により複数存在します。
read data系で、ディスクからバッファにデータを読み出し、send data系でそのデータをP6側に転送します。
また書き込みと同じく、ドライブ番号を 0x81 にした場合、EEPROMから読み出しが出来ます。
例:
P6→SD6031 0x02 0x02 0x81 0x00 0x01
P6→SD6031 0x12
SD6031→P6 data受信...
0x02(読み出しコマンド) 0x02(セクタ数) 0x81(ドライブ番号)
0x00(トラック番号) 0x01(セクタ番号)
0x12(高速センド)
の順なので、AVR内EEPROMのアドレス0x0000〜0x01FFの読み出しを行います。読み出しの際は、2バイト転送で行います。
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、send data系を実行した後に0
bit5-1:常に0
bit0:直前のコマンドがエラー時に1、エラーがなければ0
○コマンド0x07:DRIVE STATUS
P6→SD6031:0x07
SD6031→P6:STATUS情報(下記)
STATUS情報は以下の通りです(1バイトのデータ)。
bit7:常に0
bit6:常に0
bit5:常に1(ドライブ#1使用を示す)
bit4:常に1(ドライブ#0使用を示す)
bit3-0-1:常に1
○コマンド0x09:send memory
P6→SD6031 0x09 開始アドレス上位 下位 終了アドレス上位 下位
SD6031→P6 メモリ情報・・・メモリ情報
○コマンド0x0b:send memory 2
P6→SD6031 0x0b アドレス上位 下位 バイト数上位 下位
SD6031→P6 メモリ情報・・・メモリ情報
フロッピードライブのROMの内容を読み出す命令です。
BASIC-ROM から読み出される場合があるため、SD6031/SD6031WIF では、特定のアドレスを読み出した時に特定の値を返すようにしています。
○コマンド0x14:send device status
P6→SD6031 0x14 ドライブ番号
SD6031→P6 ST3
メディアのステータス情報を返します。
返す内容は以下の通り。
bit7:常に0
bit6:ライトプロテクト時1
bit5:常に0
bit4:常に0
bit3:SDカード挿入時1
bit2:常に0
bit1-0:ドライブ番号(00 または 01)
○コマンド0x17:set surface mode
P6→SD6031 0x17 設定情報
1D/1DD(2D) の設定の変更を行います。
bit7-2:未使用
bit1:ドライブ#1の設定(0で1D、1で1DD/2D)
bit0:ドライブ#0の設定(0で1D、1で1DD/2D)
リセット直後は、すべてのドライブで1Dモードです。
○コマンド0x18:send surface mode
P6→SD6031 0x18
SD6031→P6 設定情報
コマンド0x17 で設定した情報を読み出すコマンドです。
4)イメージファイル関連
○コマンド0x82:report disk image length
P6→SD6031 0x82 ドライブ番号
SD6031→P6 イメージファイル長×4(最上位から送信される)
現在選択しているイメージファイルの長さを読み出します。メディアとして使用できる部分ではなく、実際のファイル長を読み出します。
普通のP31フォーマット:0x000a0000
普通のD88フォーマット:0x000552a0
を返します。
○コマンド0xFD:get image file
P6→SD6031 0xFD ドライブ番号
SD6031→P6
0x01、ファイル#1のファイル名1バイト目…8バイト目、
0x01、ファイル#2のファイル名1バイト目…8バイト目、
:
0x01、ファイル#nのファイル名1バイト目…8バイト目、
0x00
SDカードに格納されているイメージファイルで、現在指定している拡張子のファイルの一覧を取得します。イメージファイルの数分だけ、0x01+ファイル名(8バイト)の9バイトを順番に送信してきます。最後に0x00が送信されます。返してくるバイト数は、9×ファイル数+1 になります。P6側では、0x00 が受信されるまで読み出す必要があります。
ファイル名は、拡張子を除いた8文字です。ファイル名が8文字未満の場合は、空白(0x20)で埋められます。
○コマンド0xFE:set image file
P6→SD6031 0xFE ドライブ番号 ファイル名1バイト目…8バイト目
指定したドライブ番号のイメージファイルを指定するファイルにします。ファイル名などは、get image file と同じです。
SD6031ファームウエアコマンド一覧(1)
SD6031/SD6031WIFで扱う事が出来るコマンド一覧です(その1)。
本来のドライブ(PC-6031/PC-80S31等)のコマンドは 0x00〜0x7f で、SD6031/SD6031WIF で新たに追加したコマンドは0x80〜0xfe になります。
今回のver1.00で削除したコマンドは以下の通り。
○コマンド0x80:SET SECTOR DATA(開始/終了セクタ番号のセット)
P6→SD6031:0x80 ドライブ番号 開始セクタ番号 終了セクタ番号
○コマンド0x81:ASK SECTOR DATA(開始/終了セクタ番号の読み出し)
P6→SD6031:0x81 ドライブ番号
SD6031→P6:開始セクタ番号 終了セクタ番号
今回のver1.00から追加されたコマンドは以下の通り。
1)バージョン関連
○コマンド0xf0:read version number
P6→SD6031 0xF0
次の send version number を使う前に、実行します。
○コマンド0xf1:send version number
P6→SD6031 0xF1
SD6031→P6 バージョン番号1バイト目 2バイト目 3バイト目 機種コード1バイト目 2バイト目
現在のバージョン番号、機種コードを返します。
SD6031/SD6031WIF ver1.00 では、アスキーコードの "100SD" が返ってきます。
このコマンドに先立って、前の read version number を実行する必要があります。実行していない場合はエラーになり、値を返しません。
バージョンの読み出し手順は以下の通りです。
コマンド 0xf1 を送信する
↓
コマンド 0x06 を送信する
↓
データを受信し、エラービットを確認する
↓
エラーなしの場合、ver1.00 以前のバージョン。
↓
コマンド 0xf0 を送信する
↓
コマンド 0xf1 を送信する
↓
データを受信する(5バイト)
2)イメージファイル関連
○コマンド0xf2:set file extention
P6→SD6031 0xF2 ドライブ番号 拡張子1バイト目 2バイト目 3バイト目
拡張子は3バイト固定で、アスキーコードで与えます。
リセット直後は、"P31" です。
○コマンド0xf3:send file extention
P6→SD6031 0xF3 ドライブ番号
SD6031→P6 拡張子1バイト目 2バイト目 3バイト目
今の拡張子を返します。
SD6031は、設定した拡張子のファイルのみを扱います。
拡張子を変更した時は、SDカードを新たに挿した場合と同様に扱います。
つまり、拡張子を D88 に変更した場合は、INIT.D88 がある場合は、INIT.D88 を設定し、ない場合は 〜.D88 の中で一番新しいファイルを設定します。
以下の拡張子を設定した場合は、特殊な動きをします。
P31:ファイルを P31 フォーマットとして扱います(今までと同じ動きです)。
D88:ファイルを D88 フォーマットとして扱います。
次の条件を満たすもののみ正常に動作します。
トラック 1D:#0〜#39(もしくは#0〜#34)/1DD:#0〜#79 が順番に抜けなく格納されている。
セクタ#1〜#16が順番に抜けなく格納されている。
1セクタ=256バイト。
途中のセクタが抜けているとかセクタサイズが違うものは、正常に動作しません。
DSK:ファイルを DSK フォーマットとして扱います。
いわゆるディスクのベタファイルです。
ファイルサイズが0x28000バイトの時、1D フォーマットとして扱います。
(ドライブとディスクが食い違う時、トラック番号の調整が入ります)
その他の拡張子の場合(例えば BIN)は、1セクタ=256バイト、1トラック=16セクタ、とした、ディスクのベタファイルとして扱います。HDDモード対応ですので、トラック数の最大は 65535 になります。
○コマンド0xfc:send image file
P6→SD6031 0xFE ドライブ番号
SD6031→P6 ファイル名1バイト目…ファイル名8バイト目
現在指定されているイメージファイル名を返します。ファイル名などは、set image file と同じです。
3)EEPROM関連
○コマンド0xe0:receive EEPROM memory
P6→SD6031 0xE0 EEPROM番号 アドレス上位 下位 サイズ上位 下位 データ、・・・
○コマンド0xe1:send EEPROM memory
P6→SD6031 0xE0 EEPROM番号 アドレス上位 下位 サイズ上位 下位
SD6031→P6 データ、・・・
EEPROM番号は、0x81=AVR内EEPROMです。
アドレスは 0x0000〜0x01FF が有効で、1バイトごとに書き込み/読み出しが可能です。
EEPROMに対する読み書きは、ドライブ番号を 0x81 に指定する事により、通常のフロッピーへの読み書きのコマンドを使う事も可能です(後述)。
本来のドライブ(PC-6031/PC-80S31等)のコマンドは 0x00〜0x7f で、SD6031/SD6031WIF で新たに追加したコマンドは0x80〜0xfe になります。
今回のver1.00で削除したコマンドは以下の通り。
○コマンド0x80:SET SECTOR DATA(開始/終了セクタ番号のセット)
P6→SD6031:0x80 ドライブ番号 開始セクタ番号 終了セクタ番号
○コマンド0x81:ASK SECTOR DATA(開始/終了セクタ番号の読み出し)
P6→SD6031:0x81 ドライブ番号
SD6031→P6:開始セクタ番号 終了セクタ番号
今回のver1.00から追加されたコマンドは以下の通り。
1)バージョン関連
○コマンド0xf0:read version number
P6→SD6031 0xF0
次の send version number を使う前に、実行します。
○コマンド0xf1:send version number
P6→SD6031 0xF1
SD6031→P6 バージョン番号1バイト目 2バイト目 3バイト目 機種コード1バイト目 2バイト目
現在のバージョン番号、機種コードを返します。
SD6031/SD6031WIF ver1.00 では、アスキーコードの "100SD" が返ってきます。
このコマンドに先立って、前の read version number を実行する必要があります。実行していない場合はエラーになり、値を返しません。
バージョンの読み出し手順は以下の通りです。
コマンド 0xf1 を送信する
↓
コマンド 0x06 を送信する
↓
データを受信し、エラービットを確認する
↓
エラーなしの場合、ver1.00 以前のバージョン。
↓
コマンド 0xf0 を送信する
↓
コマンド 0xf1 を送信する
↓
データを受信する(5バイト)
2)イメージファイル関連
○コマンド0xf2:set file extention
P6→SD6031 0xF2 ドライブ番号 拡張子1バイト目 2バイト目 3バイト目
拡張子は3バイト固定で、アスキーコードで与えます。
リセット直後は、"P31" です。
○コマンド0xf3:send file extention
P6→SD6031 0xF3 ドライブ番号
SD6031→P6 拡張子1バイト目 2バイト目 3バイト目
今の拡張子を返します。
SD6031は、設定した拡張子のファイルのみを扱います。
拡張子を変更した時は、SDカードを新たに挿した場合と同様に扱います。
つまり、拡張子を D88 に変更した場合は、INIT.D88 がある場合は、INIT.D88 を設定し、ない場合は 〜.D88 の中で一番新しいファイルを設定します。
以下の拡張子を設定した場合は、特殊な動きをします。
P31:ファイルを P31 フォーマットとして扱います(今までと同じ動きです)。
D88:ファイルを D88 フォーマットとして扱います。
次の条件を満たすもののみ正常に動作します。
トラック 1D:#0〜#39(もしくは#0〜#34)/1DD:#0〜#79 が順番に抜けなく格納されている。
セクタ#1〜#16が順番に抜けなく格納されている。
1セクタ=256バイト。
途中のセクタが抜けているとかセクタサイズが違うものは、正常に動作しません。
DSK:ファイルを DSK フォーマットとして扱います。
いわゆるディスクのベタファイルです。
ファイルサイズが0x28000バイトの時、1D フォーマットとして扱います。
(ドライブとディスクが食い違う時、トラック番号の調整が入ります)
その他の拡張子の場合(例えば BIN)は、1セクタ=256バイト、1トラック=16セクタ、とした、ディスクのベタファイルとして扱います。HDDモード対応ですので、トラック数の最大は 65535 になります。
○コマンド0xfc:send image file
P6→SD6031 0xFE ドライブ番号
SD6031→P6 ファイル名1バイト目…ファイル名8バイト目
現在指定されているイメージファイル名を返します。ファイル名などは、set image file と同じです。
3)EEPROM関連
○コマンド0xe0:receive EEPROM memory
P6→SD6031 0xE0 EEPROM番号 アドレス上位 下位 サイズ上位 下位 データ、・・・
○コマンド0xe1:send EEPROM memory
P6→SD6031 0xE0 EEPROM番号 アドレス上位 下位 サイズ上位 下位
SD6031→P6 データ、・・・
EEPROM番号は、0x81=AVR内EEPROMです。
アドレスは 0x0000〜0x01FF が有効で、1バイトごとに書き込み/読み出しが可能です。
EEPROMに対する読み書きは、ドライブ番号を 0x81 に指定する事により、通常のフロッピーへの読み書きのコマンドを使う事も可能です(後述)。
2019年07月20日
SD6031ファームウエアリリース(ver1.00)
SD6031/SD6031WIF用のファームウエア(ver1.00)をリリースします。
注)SD6031Airには使用できません。
sd6031_ver100.zip
イメージセレクタ.zip
以前のバージョンと比べての主な変更点です。
○ドライブ数は2ドライブのみ対応。
○FAT12/16/32対応。このため、4M〜64Mバイトの SDHCが使用できます。
(セクタサイズ=512バイトのものに限る。通常は512バイトのようです)
ChaNさんのぷちFatFSモジュールを使用させて頂いています。
http://elm-chan.org/fsw.html
○AVR内部のEEPROMに対して、読み書きすることができます。
○ファイルの拡張子を、〜.P31以外に、〜.D88、〜.DSK などが使用できます。
〜.D88 を指定した場合は、通常のd88フォーマットのものに対して読み書きが可能です。
ただし以下の制限があります。
トラック 1D:#0〜#39(もしくは#0〜#34)/1DD:#0〜#79 が順番に抜けなく格納されている。
セクタ#1〜#16が順番に抜けなく格納されている。
1セクタ=256バイトのみ対応。
〜.DSK や他の拡張子(例えば、〜.bin)を指定した場合は、ベタファイルとして扱います。
拡張子の切り替えは、コマンドで行います。
とりあえず、上にアップしたイメージセレクタ.zip 内の boot_d88.P31 と INIT.d88 を SDカードの D1 の下に格納します。
同じSDカードの D1、D2 カードに、使用する 〜.d88 を格納すると、〜.P31 の時と同じように扱えるはずです。
ある程度のテストしかしていないので、何かありましたら連絡頂けると幸いです、
追加したコマンドなどに関しては、後ほどまとめてアップします。
注)SD6031Airには使用できません。
sd6031_ver100.zip
イメージセレクタ.zip
以前のバージョンと比べての主な変更点です。
○ドライブ数は2ドライブのみ対応。
○FAT12/16/32対応。このため、4M〜64Mバイトの SDHCが使用できます。
(セクタサイズ=512バイトのものに限る。通常は512バイトのようです)
ChaNさんのぷちFatFSモジュールを使用させて頂いています。
http://elm-chan.org/fsw.html
○AVR内部のEEPROMに対して、読み書きすることができます。
○ファイルの拡張子を、〜.P31以外に、〜.D88、〜.DSK などが使用できます。
〜.D88 を指定した場合は、通常のd88フォーマットのものに対して読み書きが可能です。
ただし以下の制限があります。
トラック 1D:#0〜#39(もしくは#0〜#34)/1DD:#0〜#79 が順番に抜けなく格納されている。
セクタ#1〜#16が順番に抜けなく格納されている。
1セクタ=256バイトのみ対応。
〜.DSK や他の拡張子(例えば、〜.bin)を指定した場合は、ベタファイルとして扱います。
拡張子の切り替えは、コマンドで行います。
とりあえず、上にアップしたイメージセレクタ.zip 内の boot_d88.P31 と INIT.d88 を SDカードの D1 の下に格納します。
同じSDカードの D1、D2 カードに、使用する 〜.d88 を格納すると、〜.P31 の時と同じように扱えるはずです。
ある程度のテストしかしていないので、何かありましたら連絡頂けると幸いです、
追加したコマンドなどに関しては、後ほどまとめてアップします。
2018年01月14日
SD6031Airファーム変更(3)
SD6031Airのファームですが、4バイト高速リード/ライトでエラーが出る問題を修正しました。
SD6031AIR.zip
ウィザードリィで、ディスク周りのエラー強化をして初めて発覚しました(^^;)
ファームウエアのアップデートの方法は以下の通りです。
(アップデートは自己責任で行って下さい。アップデート、アップデート後の問題についても責任は負えませんので)。
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 を消しておく、というのが重要です。
SD6031AIR.zip
ウィザードリィで、ディスク周りのエラー強化をして初めて発覚しました(^^;)
ファームウエアのアップデートの方法は以下の通りです。
(アップデートは自己責任で行って下さい。アップデート、アップデート後の問題についても責任は負えませんので)。
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 を消しておく、というのが重要です。
2016年06月04日
SD6031Airファーム変更(2)
SD6031Airの件で、前回調べて問題になった点のうち、
1)4バイト高速ライト系(コマンド0x86、0x87)
2)イメージファイルの変更(コマンド0xFE)
3)INIT.P31 を最初に読み込みに行かない。
1)は前回に修正しましたが、2)3)に関しても修正しました。
SD6031AIR.zip
ファームウエアのアップデートの方法は前回の通りです。
これで、FlashAirを使用しない場合は、SD6031/SD6031WIFと同様の動作になります。
FlashAirを使用した場合、うちの環境では今の所よく分からない動作になる事があります。
環境なども含め、原因を調査中です。
1)4バイト高速ライト系(コマンド0x86、0x87)
2)イメージファイルの変更(コマンド0xFE)
3)INIT.P31 を最初に読み込みに行かない。
1)は前回に修正しましたが、2)3)に関しても修正しました。
SD6031AIR.zip
ファームウエアのアップデートの方法は前回の通りです。
これで、FlashAirを使用しない場合は、SD6031/SD6031WIFと同様の動作になります。
FlashAirを使用した場合、うちの環境では今の所よく分からない動作になる事があります。
環境なども含め、原因を調査中です。
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に絡む部分なので安易に変更できないかなーと思ってます。
気付いた点というか問題点というかをまとめてみました。
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に絡む部分なので安易に変更できないかなーと思ってます。
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)
上記の機能に加えて、マルチディスク対応にしています。
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のいずれも同じです。
実機で、内蔵ドライブと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のいずれも同じです。
2014年08月30日
SD6031WIFのRAMの32Kバイト化
以前、SD6031WIFの64Kバイトの改造記事を載せました。
しかし、実装が結構大変ですし、部品の追加も必要です。
そこで、少しの改造で、外部RAMを32Kバイトに拡張することが可能です。
ただし、初代PC-6001での、外部RAMの使用ができなくなります。
以下、SD6031WIFの改造方法を記します。
○回路図

○実際の改造
1)まず、SRAMの1ピンの足を上げます。

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

裏面から表面に持ってくるのが面倒なので、今回はSDカードの横を通しました。
3)コネクタA14からの信号をSRAMの1ピンに接続します。

外部RAMをチェックするのには、前にアップしたプログラムを使用して下さい。
外部RAMを使う時は、DIPSWの6番をONにして下さい。
http://sbeach.seesaa.net/article/387861564.html
memcheck.zip
しかし、実装が結構大変ですし、部品の追加も必要です。
そこで、少しの改造で、外部RAMを32Kバイトに拡張することが可能です。
ただし、初代PC-6001での、外部RAMの使用ができなくなります。
以下、SD6031WIFの改造方法を記します。
○回路図
○実際の改造
1)まず、SRAMの1ピンの足を上げます。
2)コネクタのA14から信号を取り出します。A14は基板の裏側です。写真の白い配線になります(赤い配線は別の改修)。
裏面から表面に持ってくるのが面倒なので、今回はSDカードの横を通しました。
3)コネクタA14からの信号をSRAMの1ピンに接続します。
外部RAMをチェックするのには、前にアップしたプログラムを使用して下さい。
外部RAMを使う時は、DIPSWの6番をONにして下さい。
http://sbeach.seesaa.net/article/387861564.html
memcheck.zip
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が挿入されていたソケットに接続します。
後は通常通りの使用方法になります。
○回路図

FDDコネクタと8255のソケットへの配線だけです。PC7〜PC0のピン番号がちょっと変則的なので注意が必要です。
リセットやGNDは接続しません。
○実装
FDDコネクタへの配線は特に問題ないと思います。
8255のソケットへは、うまく配線する必要があります。
8255のソケットは、あくまでICソケットですので、薄い板しか挿し込めません。そのため、同じ40ピンのICソケットを使って配線しました。

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

P6のカートリッジ挿入口に入れるため、高さを出来るだけ低くする必要があります。
また、左側(AVR側)に配線を寄せておいた方がいいです。
初代機で使用するために、拡張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が挿入されていたソケットに接続します。
後は通常通りの使用方法になります。
○回路図
FDDコネクタと8255のソケットへの配線だけです。PC7〜PC0のピン番号がちょっと変則的なので注意が必要です。
リセットやGNDは接続しません。
○実装
FDDコネクタへの配線は特に問題ないと思います。
8255のソケットへは、うまく配線する必要があります。
8255のソケットは、あくまでICソケットですので、薄い板しか挿し込めません。そのため、同じ40ピンのICソケットを使って配線しました。
また、これをSD6031WIFに実装するとこんな感じです。
P6のカートリッジ挿入口に入れるため、高さを出来るだけ低くする必要があります。
また、左側(AVR側)に配線を寄せておいた方がいいです。
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個
○回路図

'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の切り替えになります。

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個
○回路図
'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の切り替えになります。
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/
○回路図

点線内は追加回路です。変更部分以外は記載していません。
改造の概略は以下の通りです。
改造前
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ピンの足を上げます。

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


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

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

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

6)後はがんばって配線するだけです。コネクタからの配線箇所がちょっと分かり難いです。
A15の取り出し部分です(黄色の配線が繋がっている箇所)。

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

裏面から表面に持ってくるのがまた面倒です。私は穴を開けましたが...
配線完了すると、こんな感じになりました。


外部RAMをチェックするのには、前にアップしたプログラムを使用して下さい。
http://sbeach.seesaa.net/article/387861564.html
memcheck.zip
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/
○回路図
点線内は追加回路です。変更部分以外は記載していません。
改造の概略は以下の通りです。
改造前
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ピンの足を上げます。
2)その上に、追加のSRAMを付けます。この時、20ピンのみ接続しません。
3)LS138の足を開いて、先をちょんぎります。
4)SD6031WIF上に両面テープで貼るんですが、基板上にスルーホールがあるために、絶縁テープを貼ります。
5)絶縁テープの上にLS138を両面テープで貼ります。
6)後はがんばって配線するだけです。コネクタからの配線箇所がちょっと分かり難いです。
A15の取り出し部分です(黄色の配線が繋がっている箇所)。
A14の取り出し部分は裏面になります。赤い配線の方です。白い配線は別の改造です。
裏面から表面に持ってくるのがまた面倒です。私は穴を開けましたが...
配線完了すると、こんな感じになりました。
外部RAMをチェックするのには、前にアップしたプログラムを使用して下さい。
http://sbeach.seesaa.net/article/387861564.html
memcheck.zip
2013年07月28日
SD6031(WIF)マルチディスクイメージの改造(追記)
マルチディスクイメージの追記です。
扱うディスクイメージですが、1D:40トラック×16セクタ、1DD:80トラック×16セクタ、のもののみです。
P31 ファイルに変換した後のファイルサイズが、655360 バイトである事を確認して下さい。
単純に、先頭から 655360×nバイト分進めてディスクイメージを読み込んでいるだけなので、ファイルサイズが変わると正常に動作しなくなります。
扱うディスクイメージですが、1D:40トラック×16セクタ、1DD:80トラック×16セクタ、のもののみです。
P31 ファイルに変換した後のファイルサイズが、655360 バイトである事を確認して下さい。
単純に、先頭から 655360×nバイト分進めてディスクイメージを読み込んでいるだけなので、ファイルサイズが変わると正常に動作しなくなります。
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回押せば、ユーザディスクが選択されます。
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回押せば、ユーザディスクが選択されます。
2013年07月10日
SD6031イメージファイル選択プログラムver2
SD6031・SD6031WIFのイメージファイル選択プログラムの改定(ver2.0)の件です。
遅くなりましたが、リリースします。
imageselect_v20.zip
使い方は、同梱の イメージセレクタ.txt を参照してください。
機種が5機種あって、ドライブ数が1〜4(1〜2)で、1D と1DD があって...
と、プログラムにもデバッグにも大変苦労しました。
遅くなりましたが、リリースします。
imageselect_v20.zip
使い方は、同梱の イメージセレクタ.txt を参照してください。
機種が5機種あって、ドライブ数が1〜4(1〜2)で、1D と1DD があって...
と、プログラムにもデバッグにも大変苦労しました。
2013年07月02日
SD6031のドライブ数変更プログラム
SD6031/SD6031WIF での現在のファームのドライブ数を変更するプログラムを作成しました。
既に書いた通り、SD6031/SD6031WIF を普通に起動した場合、2ドライブ/4ドライブと認識されます。このため、フリーエリアが少なくなってしまう弊害がありました。
今回のプログラムは、その問題を解消するものです。ただし、オート起動するもののみが対象です。
dnum1.zip
リセット → 起動したいファイル → ドライブ2台で起動 → フリーエリアが減ってNG
↓
リセット → ドライブ接続数変更 → ドライブ1台で起動 → 起動したいファイル → 起動
にします。
詳しくは、同梱のドキュメントを参照して下さい。
元々、2ドライブで問題ないソフトに対しては、使用する必要はありません。
既に書いた通り、SD6031/SD6031WIF を普通に起動した場合、2ドライブ/4ドライブと認識されます。このため、フリーエリアが少なくなってしまう弊害がありました。
今回のプログラムは、その問題を解消するものです。ただし、オート起動するもののみが対象です。
dnum1.zip
リセット → 起動したいファイル → ドライブ2台で起動 → フリーエリアが減ってNG
↓
リセット → ドライブ接続数変更 → ドライブ1台で起動 → 起動したいファイル → 起動
にします。
詳しくは、同梱のドキュメントを参照して下さい。
元々、2ドライブで問題ないソフトに対しては、使用する必要はありません。
2013年06月28日
SD6031イメージファイル選択プログラムの改定について
SD6031・SD6031WIFのイメージファイル選択プログラムの改定(ver2.0)の件です。
だいぶ出来ました。
大した事をしているわけでないのに、結構手間取っています。
ユーザインタフェースの部分が殆どのプログラムです...
とりあえず、32×16 の画面(MODE1-4)のはエラー処理以外は出来たので、後は 40×20 と、SR 対応が出来れば完成ですが...
後、1週間ぐらい掛かりそう...
だいぶ出来ました。
大した事をしているわけでないのに、結構手間取っています。
ユーザインタフェースの部分が殆どのプログラムです...
とりあえず、32×16 の画面(MODE1-4)のはエラー処理以外は出来たので、後は 40×20 と、SR 対応が出来れば完成ですが...
後、1週間ぐらい掛かりそう...
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)で埋められます。
元の記事も修正しました。
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)で埋められます。
元の記事も修正しました。
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)を書き換えるとごまかすことができます。
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)を書き換えるとごまかすことができます。
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セクタとすると、計算が面倒なので上記のようにしています。
単純に画像データを読み出して、そのデータを画面に書き込んでいるだけのプログラムです。
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セクタとすると、計算が面倒なので上記のようにしています。
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 に変換します。コマンド実行時は、拡張子を入れずにファイル名を指定してください。
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 に変換します。コマンド実行時は、拡張子を入れずにファイル名を指定してください。
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 コマンドは、新しいバージョンから廃止しました。
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:
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)で埋められます。
○コマンド0xFE:SET IMAGE FILE
P6→SD6031:0xFE ドライブ番号 ファイル名1バイト目…ファイル名8バイト目
指定したドライブ番号のイメージファイルを、指定するファイルにします。ファイル名などは、GET IMAGE FILE と同じです。
コマンド0x04:COPY コマンドは、新しいバージョンから廃止しました。
2013年06月17日
SD6031関連の予定の訂正
下の記事が思いっきり間違えていたので訂正です。
1)SD6031/SD6031WIF ファームウエアの改定
↓
1)SD6031/SD6031WIF イメージファイル選択プログラムの改定
1)SD6031/SD6031WIF ファームウエアの改定
↓
1)SD6031/SD6031WIF イメージファイル選択プログラムの改定
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 を焼く手間が掛かるのが難点ですが...
以下の記事を近いうちにまとめたいと思っています。
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 を焼く手間が掛かるのが難点ですが...
2013年05月23日
SD6031のHDDモード(3)
SD6031 の今のファームで、ちょっと気になる点を見つけました。
試験的に、動画再生カートリッジ用のデータを画面に表示されるプログラムを動かした場合です。
20Mバイト程度(〜.P31ファイルではその倍)では気が付かなかったんですが、100Mバイトを超えた辺り(〜.P31ファイルではその倍)から途中で止まるようになりました。
32フレーム(16384バイト×32)描画して、ちょっとお休みがあって、また32フレーム描画する、といった感じです。
原因ですが、FAT テーブルです。
今のファームでは、ファイルから読み出す際、FAT を最初から辿ってデータの場所を特定しています。
これ自体は通常のアルゴリズムだと思いますが、最初から辿っているため、巨大なファイルになると辿る時間がすごく遅くなるというわけです。
FAT の性質上、あまり適切な修正方法は無さそうです。
今回のようなファイルの先頭から順番に読んでいくようなアプリなら対策方法はあるんですが、それを入れるかどうか悩みドコロです...
うーん。
試験的に、動画再生カートリッジ用のデータを画面に表示されるプログラムを動かした場合です。
20Mバイト程度(〜.P31ファイルではその倍)では気が付かなかったんですが、100Mバイトを超えた辺り(〜.P31ファイルではその倍)から途中で止まるようになりました。
32フレーム(16384バイト×32)描画して、ちょっとお休みがあって、また32フレーム描画する、といった感じです。
原因ですが、FAT テーブルです。
今のファームでは、ファイルから読み出す際、FAT を最初から辿ってデータの場所を特定しています。
これ自体は通常のアルゴリズムだと思いますが、最初から辿っているため、巨大なファイルになると辿る時間がすごく遅くなるというわけです。
FAT の性質上、あまり適切な修正方法は無さそうです。
今回のようなファイルの先頭から順番に読んでいくようなアプリなら対策方法はあるんですが、それを入れるかどうか悩みドコロです...
うーん。
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秒ぐらいになります。
これを速いと見るか、遅いと見るか...
書き込み側のテストなどがまだなので、リリースはもうちょっと先になるとは思いますが...
仕様としては、以下の通りです。
・送信/受信に今までのコマンドを使った場合、最大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秒ぐらいになります。
これを速いと見るか、遅いと見るか...
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を入力にして、データを転送してしまおうというものです。
ちょっと修正に時間が掛かりそうではありますが...
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を入力にして、データを転送してしまおうというものです。
ちょっと修正に時間が掛かりそうではありますが...
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 固定のドライブとする事が出来ますが...
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 固定のドライブとする事が出来ますが...
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のファームを変更する。


↑実際に手を入れた基板です。基板裏にレギュレータを付けています。
バージョンアップをすると、
・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のSR対応を調べている時に、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のファームを変更する。
↑実際に手を入れた基板です。基板裏にレギュレータを付けています。
バージョンアップをすると、
・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のSR対応を調べている時に、FDD関連でいろいろ面白い事がわかりましたので、また別にまとめます。
2013年02月24日
SD6031用イメージファイル選択(1)
西田さんの所で、P6RGBコンポーネントアダプタとFDDエミュレータを購入しました。
使用記は後日書くとして...
SD6031 には、隠れていない(?)隠し機能があります。
コマンド253と254の、フロッピーイメージのファイル名取得と、イメージファイル切り替えです。
これを利用すると、起動後のイメージファイルを選択して、そのイメージから再起動する事で、あたかもディスクを差し替えているように動かす事が出来ます。
さっそく作りました。
SD6031用イメージファイル選択
使い方は、SDカードのD1フォルダの下にINIT.P31 をコピーするだけです。
電源を入れるかリセットを押すと、ファイル一覧が出ます。
(SD6031 のリセットの接続が切れている場合は、電源を入れ直す必要あり)
カーソルキーで動かしてリターンキーを押すと、選んだイメージファイルで再起動がかかります。
6001mk2 でも、6001mk2SR でも動作します。
ただし、SR で動作させるには、SD6031 のアップデートが必要になります。
使用記は後日書くとして...
SD6031 には、隠れていない(?)隠し機能があります。
コマンド253と254の、フロッピーイメージのファイル名取得と、イメージファイル切り替えです。
これを利用すると、起動後のイメージファイルを選択して、そのイメージから再起動する事で、あたかもディスクを差し替えているように動かす事が出来ます。
さっそく作りました。
SD6031用イメージファイル選択
使い方は、SDカードのD1フォルダの下にINIT.P31 をコピーするだけです。
電源を入れるかリセットを押すと、ファイル一覧が出ます。
(SD6031 のリセットの接続が切れている場合は、電源を入れ直す必要あり)
カーソルキーで動かしてリターンキーを押すと、選んだイメージファイルで再起動がかかります。
6001mk2 でも、6001mk2SR でも動作します。
ただし、SR で動作させるには、SD6031 のアップデートが必要になります。

