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

書庫過去の投稿日別表示

全1ページ

[1]

苦悶式SDカード

クヨクヨ悩んでいても仕方がない。
暫定仕様を考えて、最小限の機能を実装するところから始めよう。
目標は、「ぼくが持っているSDにアクセスできること」。
この時点で、このブログは自分用の利己的なメモと化す(笑)
特徴は、BASICからアクセス可能なことだ。
さっそくアセンブラの数行を書く。歴史的な数行だ(大袈裟なw)。
 
イメージ 1
 
暫定仕様
 ○読むのも書くのも、BASICからのUSR関数で呼び出す。
 ○どのセクターを読み書きするかは、A=USR?(n)の n で指示する。
  n は2バイト整数。
 ○読み書きは、SDで従来から一般的な512B単位とする。
 ○読み書きするデータはBASICがBUFFにアクセスして入出力する。
 ○書き込み後、BASICはSDから読み出してベリファイを行う。
 ○エラーについては、BASICがBUFFに返されたデータを見て判断。
 ○ターゲットはSDのみとする。(MMC非対応)
 ○当面、FATには対応しない。いわばHBI-55モード(笑)。
 
マシン語側の暫定仕様
 ○使用コマンドは、CMD0、ACMD41、CMD17、CMD24、CMD16。
 ○念のため、CMD16によりセクター長を512Bとする。(省略するかも。)
 ○/CSはプログラム側で負論理とする(74HC14を不要とする)。
  不具合があれば、正論理に変更する(74HC14を加える)。
 ○エラーハンドリングは、CMDレスポンスのフォーマットR1のみ。
  CMDレスポンス時のエラーは、1バイトをBUFFに書き込んでRETする。
  書き込み実行時のエラーレスポンスは関知しない。(BASIC任せ)
 ○CMD17の読み込み前にBUFFを初期化する(例えば「00」で埋める)。
  CMD24の書き込み時はBUFFの初期化を行わない。
  BASICは、書き込みエラーをベリファイ時に知ることになる。
 ○SDの容量は関知しない。人間がSDカードの表示を見ろ。
 ○読み書きのセクタ・アドレスは、USR関数の引数の範囲となる。(注)
 
(注)CMD17及びCMD24の引数は4バイトある。
  ただし1セクタ512Bなので、セクタごとの引数は次のようになる。
    引数バイト 3  2  1  0
    セクタ0:00 00 00 00
    セクタ1:00 00 02 00
    セクタ2:00 00 04 00
  つまり引数バイト0は常に「00」である。
  一方、USR関数で与えられる引数は2バイト整数である。
  下位1バイトをセクタ引数1に、上位1バイトをセクタ引数2に割り当てる。
  すると、引数バイト3も常に「00」である。
  従って「00 FF FE 00」が、このプログラムにおける最大引数となる。
  512Bを掛けると、アクセス可能な最大容量となる。いくらになるのかな?
  考え違いしてたらごめんね。このへん、よく間違うの。
  
本質的なところは出来たも同然だ(爆)
あとはこれを実現する実質的な部分をコツコツと書くことになる。
その前に、PSGの初期化、SDカードの初期化、/CSの上げ下げやCLKの上げ下げ、CMDの発行とレスポンスの受け取り、読み取りデータの受け取り、不要CRCの読み捨て、ビジー待ち、ダミーCLKの挿入・・・などなど、細かな段取りをリストアップする必要がある。
PSGの8ピンを「H」にしたり「L」にしたり、なんていうシモジモの原始的ルーチンは、さらにその先にある。
ルーチンを積み上げて積み上げて積み上げてルーチンを作る。
どこかでルーチンがコケたら、「みなコケた〜」。
 
「MSXによるSDカードの読み書きをアセンブラで書く」。ささやかな機能しか実現しないくせに、予想外の大プロジェクトになりそうだなあ〜。
大丈夫か?>自分
 
※上記暫定仕様は、いつの間にか変更されているかも知れません。ご了承されたし。

全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円で好きなお礼品を選べる
毎日人気ランキング更新中!
数量限定!イオンおまとめ企画
「無料お試しクーポン」か
「値引きクーポン」が必ず当たる!

その他のキャンペーン

みんなの更新記事