2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

FMシリーズを語るスレ Part 12

1 :ナイコンさん:2014/02/23(日) 14:09:16.91 .net
FM-8 から始まり、FMR に至るまでの様々な名機について語りましょう。
対象機種: 8/7/NEW7/X/77/77AV/11/16/R

※スレが荒れる要因になりそうなコメントに対してはあぼ〜んを利用するなど、
 華麗にスルーして下さい。
※荒れる要因になるようなゲームの話も華麗にスルーして下さい。

■前スレ
FMシリーズを語るスレ Part FM-11
http://ikura.2ch.net/test/read.cgi/i4004/1365924933/

TOWNSシリーズの話題については、専用スレでどうぞ
【富士通】FM-TOWNS 16代目【Fujitsu】
http://ikura.2ch.net/test/read.cgi/i4004/1388177145/

31 :ナイコンさん:2014/02/27(木) 02:07:54.76 .net
DRQポーリングによるFM-7のFDDアクセスって本当に問題ないの?って
以前考えたことがあって、そのとき集めた資料等を基に68B09で2HDアク
セスが可能か考えてみたよ。
I/Oポートの構成はFM-7と同じ、ただし$FD1Fを読んだとき DRQ/IRQ以外
のbitはすべて0と見えるI/Fを想定する。
(FM-7では未使用なので不定としているんじゃないかと。実際に読んだら
1が読めるんじゃないかな?)

読み書きに使用するループはFM-7のBOOT ROM内のものを各1箇所ずつ書き
換えたものを用意。

WRITE LOOP
1:FF7C A6 A0  LDA ,Y+  6
2:FF7E D6 1F  LDB $1F  4
3:FF80 2A 04  BPL $FF86 3
4:FF82 97 1B  STA $1B  4
5:FF84 20 F6  BRA $FF7C 3
6:FF86 27 F6  BEQ $FF7E 3

READ LOOP
1:FF94 D6 1F  LDB $1F  4
2:FF96 2A 06  BPL $FF9E 3
3:FF98 96 1B  LDA $1B  4
4:FF9A A7 A0  STA ,Y+  6
5:FF9C 20 F6  BRA $FF94 3
6:FF9E 27 F4  BEQ $FF94 3

処理対象となるDRQ信号は2HD時16μs毎にHになり、データポート($FD1B)
の読み書きでLに戻る。アクセスが正常に行われている限り、その立ち上が
りは16μs周期で一定していて、H期間の長さはプログラムがいつデータ
ポートをアクセス出来るかでバラつく。

32 :ナイコンさん:2014/02/27(木) 02:08:57.29 .net
また、FDC内のパラ-シリ/シリ-パラ変換のタイミング要求により、DRQの
立ち上りからデータポートアクセスまで、FDCが待てる最長の時間が規定
されている。
DRQ Service Time(tSEVW/tSEVR)
MB8876A/MB8877Aの場合
Disk書き込み時:tSEVW 11.5μs
Disk読み込み時:tSEVR 13.5μs

MB8876/MB8877(Aサフィックス無しバージョン)の場合記述が無いので
この数値は定かでは無いものの、同様の規定は当然ある。
ただし、これら初期のFDCは/WE信号がmin350ns必要で、さらに/WE立ち
上がり後に65ns以上データのホールドタイムを要求するというとんでも
ないドンガメで、68B09ではノーウェイトでアクセスできない。
2HDをDRQポーリングでアクセスしようとするなら使いづらいものになる。
ちなみにフロッピーインターフェースカードにディレイラインを載せて
いるものがあるのは、これら初期のFDC対応のためと思われる。
FM-7のI/OにEクロックで半クロック分のウェイトが挿入されているのも
恐らくこいつのせい。

余談はともかく、DRQサービスタイムの厳しい書き込み側から条件を満た
せるのか確認。DRQに対して最も最悪の応答となるのは、行番号2でDRQ=L
を読み出した直後にDRQが立ち上がる場合で、DRQ立ち上がり後36234(行
番号)と命令が実行されてデータポートアクセスに至る。
このときの所要クロック数は17クロック=8.5μsとなり、規格上のmax値
11.5μsをクリアできる。

33 :ナイコンさん:2014/02/27(木) 02:09:36.54 .net
続いてDRQ待ちループとDRQの立ち上がりタイミングを検証。DRQ=Lのとき
は行番号236でループしていて所要クロック数10クロックなので、DRQ立ち
上がりに対してループの実行状態は10通りのタイミングが存在する。
DRQ立ち上がりからDRQサンプリングまでの時間が1.0μs〜4.5μsの場合、
行番号で言うと236234512362と処理が流れて次のDRQ検出に繋がっていく。
同じくDRQの立ち上りから0.5μs後に検出される場合は236234512362362と
いう流れ、DRQの立ち上がりを最短で検出した場合は234512362362で次の
DRQ検出に繋がる。
この処理の流れはEXCEL上に32セル間隔でDRQ立ち上がりの目印を置いて、
その間にループ中の命令の所要クロック数分の幅のセルを並べることで
問題が無いか検証でき、全10通りのタイミングで特に問題が無いことを
確認した。

読み出しについても同じことを確認し、tSEVRは規格値 max13.5μs に対
して最悪 8.5μsで問題なし。
やはり10通りのタイミングについてもEXCEL上で検証して問題となるような
パターンもなしということで、『ノーウェイトの68B09』であればDRQポー
リングによる方法でも2HDのアクセスに対して問題は起きないという結論に
なった。

34 :ナイコンさん:2014/02/27(木) 02:10:27.27 .net
なお、「68000システムの製作全科」でFM-77をホストとして2HDにアクセス
した事例で、普通にループを組んだらうまくいかなかったという理由は複数
あると思われる。
1つはI/Oのウェイト。FM-7では$FDxxのアクセス時とBOOT ROMのアクセス時に
MRDYがアサートされてEクロック周期で半クロック分のウェイトが掛かるよう
になっており、このときのEクロック周期は750nsになる。
FM-77ではBOOT ROMがまともな250ns品になったのでウェイトは不要かもしれ
ないが、I/Oには相変らずウェイトが入っていると思われる。
(ゲートアレイ化されているので定かでは無い)
2つ目はメインメモリのリフレッシュ。FM-77のメイン側に搭載しているDRAM
はMB8265A-15でサイクルタイム260ns〜270ns(ちょっとおぼろげ)なのでサイ
クルスチールによるリフレッシュは出来ず、DMAサイクルを挿入してのリフ
レッシュを必要とする。
6809のDMAはDMAサイクルの入りと明けにDeadサイクルがそれぞれ1クロック
ずつ必要となるので、リフレッシュ動作のためには最低でも3クロックを
要しその間プログラム実行は停止される。
DRAMの規格としては2ms以内に128回(行アドレス)のリフレッシュをするよう
に定められていて、これは最長15.625μs毎に1回という頻度で実現できる。
FM-7/77ではそれを代々4.9152MHzのクロックから作っていて、ゲートアレイ
化されているので断言はできないものの、6分周した13μsという周期が
恐らくリフレッシュ要求の元になっていると思われる。
2HDでは16μs毎にDRQが立ってデータの読み書きを要求してくるので、その間
に2回リフレッシュが入ってしまう。このとき3μsの間MPUは停止してしまう
ので、これはやはり大きいんじゃなかろうかと。

などと長々検証した結論、こんなヒリヒリする設計するくらいなら素直に
SYNC使えよ!というのが正解。いくら安くなったといっても62256をメイン
メモリに使わせてくれるワケ無いんだし、I/Oのウェイトを無くすことも
できゃしないんだから。

総レス数 1000
302 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200