FDD エミュレータ
FDDエミュレーターについて解説します。
設定(FlashFloppy)
FlashFloppyの設定は、本体のジャンパ設定と、いくつかのcfgファイルによる設定があります。
ジャンパの設定と、各cfgファイルの設定は被る部分がいくつかありますが、その場合はcfgファイルを優先します。
ジャンパ設定
Gotekのジャンパはいくつかありますが、基本的にFlashFloppyでは4つ(S0,S1,MO,JC)しか使用しません。
ほかのジャンパーは、未使用だったり、オプションの装着時に使用します。
S0 : ドライブ0に割り当てる場合に使用します。☆
S1 : ドライブ1に割り当てる場合に使用します。☆
MO: モーターオン信号を有効にします。
JC : IBMPC仕様かシュガート仕様かのジャンパです。
(ジャンパされているとIBMPC、オープンだとシュガート)
☆設定しなくていい場合もあります(電子楽器用の場合など)。
設定ファイル(ff.cfg)
多くのきめ細かい設定ができるのが、FlashFloppyの大きな特徴です。
ff.cfgは設定項目がおおいため、かなり難しいところもありますが、理解できてしまうと、多くの機器に対応できる強力なツールになります。
※なお、大文字小文字は関係ありません。
ff.cfgは、ルートフォルダもしくは\ffフォルダの中に入れます。
ただし、\ffフォルダに入れた場合は、他の設定ファイルも同様に\ffフォルダに入れる必要がある場合があります。
ff.cfgはテキストファイルで、各設定を書いていきます。順番は違っていてもOKです。
ff.cfgは、読み込ませてすぐに有効になるわけではなく、一度読み込ませた後、一度電源を落として再起動した後に有効になります。また、変更しない限り、一度設定したらSTM32の内臓flashメモリに記憶されるので、ff.cfgは常にないといけないわけではありません。
エミュレーション制御:
項目:interface
使用例:interface = ibmpc
フロッピードライブのインターフェースモードの設定を行います。
shugart: P2=DSKCHG, P34=RDY
ibmpc : P2=unused, P34=DSKCHG
(本来P2は2HD/2DDの判別に使用する信号のためエミュレーターでは使用しない)
ibmpc-hdout : P2=HD_OUT, P34=DSKCHG
(通常は不要です:'ibmpc'の設定を優先します)
akai-s950 : P2=HD_OUT, P34=RDY (Akai S950)、
amiga : P2=DSKCHG, P34=DRIVE_ID
(通常は不要です:'shugart'を優先します)
項目:host
使用例:host = unspecified
ホストプラットフォームの設定を行います。
主に特殊なプラットフォームの場合のみで、通常はunspecifiedで問題はありません。
acorn : Acorn ADFS
akai : Akai (S01, S20, S950), Korg, SC Prophet 3000
casio : Casio (FZ-1)
dec : DEC (RX33, RX50)
ensoniq : Ensoniq (ASR, TS, etc)
fluke : Fluke 9100
gem : General Music (S2, S3)
ibm-3174 : IBM 3174 Establishment Controller
kaypro : Kaypro
memotech : Memotech
msx : MSX
nascom : Nascom
pc98 : NEC PC-98
pc-dos : PC DOS Format (geometry determined from Bios Parameter Block)
tandy-coco : Tandy Color Computer (CoCo)
ti99 : TI-99/4A
uknc : UKNC / DVK Soviet PDP-11
unspecified : 上記以外(ややこしいですがibm pcもこれに含まれます)
項目:pin02
pin34
使用例:pin02 = auto
pin34 = auto
FDDインターフェースの2番ピンと34番ピンの手動設定を行う時に使います。
それぞれ個別に設定が可能です。
auto : interface項目の設定に準拠します。
nc : 使用しないときに選択します。
low : 常に0Vになります。
high : 常に5Vになります。
rdy : ready信号(ローアクティブ:0Vアクティブ)を出力します。
nrdy : rdyの逆論理(ハイアクティブ:5Vアクティブ)を出力します。
dens : 2dd/2hdの判別信号を出力します(2HD = 0v)
ndens : densの逆論理(2HD = 5V)を出力します。
chg : Disk changed信号を出力します。(Changed = 0v)
nchg : chgの逆論理(Changed = 5V)を出力します。
項目:write-protect
使用例:write-protect = no
強制的にUSBディスク全体を書き込み禁止属性にするか設定します。。
(個別に書き込み禁止を設定する場合はパソコンからファイル属性を「読み取り専用」で設定してください)
yes : 設定します
no : 設定しません
項目:side-sellect-glitch-filter
使用例:side-sellect-glitch-filter = 0
信号線に混入したグリッチノイズを、ミリ秒単位でフィルタリングします。
機器のノイズが大きく、不安定な誤動作をする場合に使用します。
数値(0~255)の間で設定します。
項目:track-change
使用例:track-change = instant
トラック変更時のディスクの回転オフセットを行います。
instant: オフセットを行いません。
realtime: トラック変更時のオフセットを常に行います。
項目: write-drain
使用例:write-drain = instant
フラッシュメモリへの書き込み後の回転オフセットを行います。
instant: オフセットを行いません。
realtime: トラック変更時のオフセットを常に行います。
eot : トラックの終わりに近づいたらオフセットを行います。
項目: index-suppressin
使用例: index-suppression = yes
WDATAもしくはRDATAがアクティブでないときに、インデックスパルスを出すのを抑えるかどうかの設定を行います。
yes : 抑制します
no : 抑制しません
項目: head-settle-ms
使用例:head-settle-ms = 12
RDATAがアクティブになってから、(仮想)ヘッドがトラック移動で動き出すまでの時間をミリ秒単位で設定します。
数値(0~255)の間で設定します。
項目: motor-delay
使用例: motor-delay = ignore
motor on 信号がアクティブになってから、ready信号がアクティブになるまでの遅延時間(ミリ秒単位)を設定します。
ただし、MOジャンパを設定している場合のみ有効です。設定していない場合、ここでの数値設定は意味を持ちません。設定していない場合はignoreと同じ状態になります。
ignore : motor on 信号を無視する
MOジャンパを設定している場合のみ、数値(0~255)の間で設定します。
項目: chgrst
使用例: chgrst = step
dskchg信号(「ディスクが交換されている」信号)をリセットする要因を決定します。
フロッピーディスクの中には、これを専用の信号でリセットする場合や、一定時間経過後にリセットする場合があり、その場合に使用します。通常はstepでOKです。
step : step信号受信後
pa14 : CHGRST信号:STM32のPA14(GotekではプログラミングコネクタのSWCLKに接続)の信号受信時
※松下JU-363-2などが該当します。主にDX7 II-FDに使われています。
delay-N : 一定時間(N × 0.5秒)経過後自動的にリセットします(N: 0~15: 0.5秒単位)
起動時の動作設定:
項目: ejected-on-startup
使用例: eject-on-startup = no
電源投入時、ディスクイメージを読み込むか排出状態にするかを決めます。
yes : 排出する
no :排出しない(読み込む)
項目: image-on-startup
使用例: image-on-startup = last
起動時にどのイメージ(およびフォルダ)を選択するかを決めます。
last : 電源を切る直前に選ばれていたものを読み込みます。
static : init_a.cfgで設定されたパスを読み込みます。
init : ルートフォルダの最初のイメージを読み込みます。
項目: display-probe-ms
使用例:display-probe-ms = 3000
表示装置を認識する時間をミリ秒単位で設定します。
※2桁の7セグLEDを使用する場合0にセットすることをお勧めします。
数値(0~65535)の間で設定します。
ディスクイメージナビゲーション:
項目: autoselect-file-secs
使用例:autoselect-file-secs = 2
表示されたディスクイメージを自動的に選択するまでの時間です(秒単位)。
なお、0で設定された場合は自動選択を行いません。
数値(0~255)の間で設定します。
項目: autoselect-folder-secs
使用例:autoselect-folder-secs = 2
表示されたフォルダを自動的に選択するまでの時間です(秒単位)。
なお、0で設定された場合は自動選択を行いません。
数値(0~255)の間で設定します。
項目: folder-sort
使用例: folder-sort = always
ネイティブモード時(ディスプレイがOLEDで、任意の名前のファイルを選択可能な場合)、フォルダ表示の並べ替えを行います。
always: 常にフォルダエントリを並べ替えます。 大きなフォルダーは切り捨てられる場合があります。
never: フォルダエントリを並べ替えるのではなく、FAT登録順に表示します。
small: 小さいフォルダのみを並べ替えます。
項目: sort-priority
使用例: sort-priority = folders
フォルダエントリを並べ替えるときのファイルとサブフォルダの優先度を設定します。
folders: ファイルの前にフォルダが来るようにします。
files: フォルダの前にファイルが来るようにします。
none: ファイルとフォルダは区別されません。
項目: nav-mode
使用例: nav-mode = default
ナビゲーションモードの設定を行います。
native : 使用可能なすべてのディスクイメージを扱えます。OLEDオプション装着時設定可能です。
indexed : 7セグLED使用時に対応可能なモードです。ファイル名は DSKA0000, DSKA0001, .で使用します.
default : HxC-compat-mode configによって上書きされない限り、ネイティブモードとして動作します。
項目: nav-loop
使用例: nav-loop = yes
スロットまたはフォルダをナビゲートするとき、最小/最大でループするかを設定します。
(yes | no)で設定します。
項目: twobutton-action
使用例: twobutton-action = zero
Gotekに標準でついている2つのボタンの動作を設定します。
B1 | B2 | 2ボタン同時押し
zero : Prev | Next | Slot 0
eject : Prev | Next | Eject/Insert
rotary: Up-dir | Select/Eject/Insert | -
rotary-fast: Prev | Next | Up-dir [Prev/Next are accelerated]
reverse: B1 and B2 の動きを逆にします。
※reverseと他の設定は組み合わせ可能です、組み合わせるときはコンマで区切ります。
例:twobutton-action=eject,reverse
項目: rotary
使用例: rotary = full
ロータリ-エンコーダーのセンサータイプを指定します。
※オプションの項目で触れますが、ロータリーエンコーダーを使用する場合、i2cコネクタのDT/CLKのそれぞれの端子をエンコーダーの左右端子に、真ん中の端子をGNDに接続します。
ちなみに2ボタンも同様に、(すでに2ボタンあるので不要といえば不要ですが)DT/CLKの端子のそれぞれを各ボタンの片方に、ボタンの端子のもう片方をそれぞれGNDに接続することができます。下記項目で説明しているのは標準の2ボタンではなく前述のボタンのことを指します。
[ロータリーエンコーダーの場合]
full : 1クリックで1項目移動する場合(通常はこれを選択します)
half : 2クリックで1項目移動する場合
quarter : 4クリックで1項目移動する場合
[トラックボールの場合]
trackball : ブラックベリータイプの超小型トラックボールを使用する場合
[2ボタンタイプを使用する場合]
buttons : 2ボタンを使用する場合
[設定を逆にする場合]
reverse : 動きを逆にします。
※reverseと他の設定は組み合わせ可能です、組み合わせるときはコンマで区切ります。
例: rotary=quarter,reverse
項目: ndexed-prefix
使用例: ndexed-prefix = "DSKA"
indexモードの際に、番号の前につける文字列を設定します。
番号は4桁です。
使用例を実際に使用する場合、DSKA0000,DSKA0001といった具合にファイル名を設定することでファイルを認識するようになります(拡張子は認識できるイメージファイルの拡張子)。
表示設定:
項目: display-type
使用例:display-type = auto
表示装置の種類を設定します。
auto : 自動認識 (7セグ LED, LCD, OLED)
lcd-CCxRR CCは桁数、RRは行数です。i2c変換基板付きのバックライトLCD)を使用する場合に設定します。
(CCは16~40, RRは 02~04)
oled-128xNN: i2cタイプの小型OLEDを使用する場合に設定します。(NN=32 or 64)
-rotate : OLEDの表示を180度回転(=上下反転)させます。
-narrow[er] : OLED の表示を、Gotekの標準(=3桁7セグLED用)の窓に収める場合に使用します。
(-narrow: 18文字、; -narrower: 16文字)
-ztech: ZHONGJY_TECH 2.23" 128x32 SSD1305 OLED を使用する場合に設定します。
項目: oled-font
使用例: oled-font = 8x13
OLED使用時、フォントの大きさを設定します。
フォントの大きさが小さいと、多くの文字を入れられますが、見にくくなります。
逆に大きいと見やすくなりますが、文字がはみ出て見えなくなってしまいます。
値は (6x13 or 8x16)で設定します。。
項目: oled-contrast
使用例: oled-contrast = 1
OLED表示の明るさ/コントラストを設定します。
数値(0~255)の間で設定します。
項目: display-order
使用例: display-order = default
LCDやOLED使用時、表示させる内容を設定します。
設定値は"default"もしくはコンマで区切られた2つの数値で設定します(上の行から順)。
その後ろに"d"を入れることで、文字を2行にまたがって表示させることができます。
(OLEDのみになります、LCDでは無視されます)
設定値は0~3, 7, default になります。
0 : 現在使用中のディスクイメージファイル名
1 : 状態
2 : ディスクイメージ/ボリューム情報
3 : 現在のサブフォルダ名
7 : 空白(何も表示させません)
default: 設定されているディスプレイによる。
( 設定値例 : oled-128x32='0,1' ; oled-128x64='3,0d,1')
項目: display-off-secs
使用例: display-off-secs = 120
スクリーンセーバー(ディスプレイ消灯)までの秒数を設定します。
数値(0~255)の間で設定します。
項目: display-on-activity
使用例: display-on-activity = yes
スイッチ操作以外での動作でLCD/OLEDを表示させる(=スクリーンセーバーからの復帰)動作を設定します。
yes : 仮想ヘッドのトラック移動や書き込み時
sel : ドライブ選択信号(DS0 or DS1)受信時
no : 手動
項目: display-scroll-rate
使用例: display-scroll-rate = 200
長いファイル名受信時に、スクロールする表示速度(ミリ秒単位)
数値(100~65535)の間で設定します。
項目: display-scroll-pause
使用例: display-scroll-pause = 2000
スクロールの開始/終了時の一時停止時間(ミリ秒単位)
※0で設定した場合はエンドレスでスクロールします。
数値(0~65535)の間で設定します。
項目: nav-scroll-rate
使用例: nav-scroll-rate = 80
LCD / OLED使用時、ナビゲーション中の長いファイル名のスクロール速度(ミリ秒単位)
数値(0~ 65535)の間で設定します。
項目: nav-scroll-pause
使用例: nav-scroll-pause = 300
LCD / OLED使用時、ナビゲーション中の長いファイル名のスクロール前の停止時間(ミリ秒単位)
数値(0~ 65535)の間で設定します。
その他設定:
項目: step-volume
使用例: step-volume = 10
FlashFloppyはFDDの音(ヘッドのステップやシーク音)をスピーカーを使用して表現可能です。
その音のボリュームを設定できます。
数値(0~ 20)の間で設定します。
項目: da-report-version
使用例: da-report-version = ""
da-report-version = "v3.0.0.0"
ここで設定したバージョン番号をホストソフトウェアに報告します。