ここから本文です
Dr.Kikkie (KIKI) : 不許無断天才|免責:本稿を真に受けて損害があっても知らん。

書庫過去の投稿日別表示

全1ページ

[1]

まだ読み出しのデバッグが終わってないというのに、書き込みコマンドに手を付けちゃいました。書き込みのほうが一手間多いのに、なんか上手くいっているみたい。使用したカードは、Canonのコンパクトデジカメについていた16MBのSDC。16GBちゃいませ、16MBでっせ。そういう時代もあったのですなあ。と感慨に耽っている場合ではありません。
 
まず、SDCのコマンドについておさらい。
一般に次の6バイトの形式で発行します。
  [CMD][ARG1][ARG2][ARG3][ARG4][CRC]
[CMD]の部分は、読み出しなら[0x51]、書き込みなら[0x58]を入れます。続く[ARG1]〜[ARG4]は引数で、512バイト目から読み書きしたいときは、
  [0x00][0x00][0x02][0x00]
となります。多くの場合、512Bが1単位となりますから、[ARG4]は[0x00]のままで、[ARG1][ARG2][ARG3]の3バイトでアドレスを指定することになります。[ARG3]に注目すると、第0セクタのときは[0x00]、512バイト目からの第1セクタのときは[0x02]、第2セクタのときは[0x04]・・・と偶数になるわけですね。
最後の[CRC]は、SPIモードでアクセスするときに意味を持つのは[CMD0]のときだけで[0x95]となります。
 
まとめると、
  CMD  0:[0x40][0x00][0x00][0x00][0x00][0x95]
  CMD  1:[0x41][0x00][0x00][0x00][0x00][0xF9]
  CMD16:[0x50][0x00][0x00][0x02][0x00][0x00]
  CMD17:[0x51][0x00][0x00][0x00][0x00][0x00]
  CMD24:[0x58][0x00][0x00][0x00][0x00][0x00]
これだけ知っていれば、初期化して(CMD0、CMD1)、512B単位に設定して(CMD16)、読み(CMD17)、書き(CMD24)ができます。
 
イメージ 1
 
さて、ここでどうしようかな?というのが、MSX-BASICからの引数の渡し方です。
2バイト整数で渡せばいいじゃん♪と思っていたら、SDCのセクタ数はもっと多いのですね。MSX-BASICの2バイト整数は正負ありなので−32768〜32767の範囲。しかし今回は正の偶数のみなので、2倍して32767より小さい16383がA=USR(n×2)のnに入る最大値ということになる?(間違ってたら教えてね。)
512B × 16383 =8,388,096B、つまり8MB余りが2バイト整数でアクセスできる限界?
「いや、そこは単精度なり倍精度を使えばいいじゃん」と思うかもしれませんが、MSX-BASICでは内部的には単精度や倍精度はBCD形式になってるんですよね。だからメモリからSDCにポイポイと[ARG1][ARG2][ARG3]の3バイトに放り込めないのですよ。一個ずつPOKEするしか思いつきません。
3バイト使えば、512B × 0xFF × 0xFF × 0xFE = 8,456,371,200B。およそ8.5GBまでアクセスできるんですねえ。・・・ってこれで合ってるの? なんかメチャ少ないんですけど?
 
ま、苦手な計算は得意な人に任せておいて、下の写真でも眺めていただきましょう。
CMD24で書き込みのテストをしているところです。左端の上の[ARG1]〜[ARG3]はコマンドの引数([ARG4]がないのはどうせ0x00だから)。次の[CHAR]は書き込みたい文字。512Bのバッファをこの文字で埋めます。[CMD_0:Done]から[CMD24:Finish]まではマシン語が返しているメッセージ。
続く[CMD_0RES:01]から[CMD24DRS:05]は、BASICがマシン語のワークエリアから拾ってきたコマンドレスポンス。全て正しいレスポンスが返ってるでしょ?
ほいで、書き込みを指示した文字が「w」だから「wwwwwwww」となっているわけです。
最後の「R/W」は、本当は先頭にあって「読み込み/書き込み」を選択します。
というわけで、だいたいの機能は盛り込めたと思うのですが、最初に書いたように、読み込みのデバッグがまだ出来てないのですよ >┼○ バタッ
 
書き込みも、本当に書き込めているのかSDCのセクタ毎にダンプできるツールで確かめてみたいところです。
今日はここまで来ました(・∀・)
 
イメージ 2
 

全1ページ

[1]

1 2 3
4 5 6 7 8 9 10
11 12 13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

過去の記事一覧

最新のコメント最新のコメント

すべて表示

kik**41010
kik**41010
非公開 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について

よしもとブログランキング

もっと見る
本文はここまでですこのページの先頭へ

[PR]お得情報

数量限定!イオンおまとめ企画
「無料お試しクーポン」か
「値引きクーポン」が必ず当たる!
ふるさと納税サイト≪さとふる≫
実質2000円で好きなお礼品を選べる
毎日人気ランキング更新中!

その他のキャンペーン

みんなの更新記事