2018.5.10
前へ
次へ
ホームページトップへ戻る

標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
やっと(!)MYCPU80の改良型基板製作に着手しました!!





[第902回]


●SDカードでERR:92?(2)

前回からの続きです。
FATで再フォーマットしたSDカードのセクタbOを読み出すことに成功したのでしたが、読み出したデータは本来セクタbOにあるべきものではありませんでした。
前回お見せしたセクタbOのデータです。

>/ld sctrd.bin,8000
loading SCTRD.BIN ...0017(23)bytes loaded,from 8000 to 8016
>jp 8000
>dm 8200,83ff
8200  EB 3C 90 4D 53 44 4F 53-35 2E 30 00 02 40 08 00  .<.MSDOS5.0..@..
8210  02 00 02 00 00 F8 F0 00-3F 00 FF 00 00 00 00 00  ........?.......
8220  00 D8 3B 00 80 00 29 F3-0C 6A 90 4E 4F 20 4E 41  .リ;...)..j.NO NA
8230  4D 45 20 20 20 20 46 41-54 31 36 20 20 20 33 C9  ME    FAT16   3ノ
8240  8E D1 BC F0 7B 8E D9 B8-00 20 8E C0 FC BD 00 7C  .ムシ.{.ルク. .タ.ス.|
8250  38 4E 24 7D 24 8B C1 99-E8 3C 01 72 1C 83 EB 3A  8N$}$.チ..<.r...:
8260  66 A1 1C 7C 26 66 3B 07-26 8A 57 FC 75 06 80 CA  f。.|&f;.&.W.u..ハ
8270  02 88 56 02 80 C3 10 73-EB 33 C9 8A 46 10 98 F7  ..V..テ.s.3ノ.F...
8280  66 16 03 46 1C 13 56 1E-03 46 0E 13 D1 8B 76 11  f..F..V..F..ム.v.
8290  60 89 46 FC 89 56 FE B8-20 00 F7 E6 8B 5E 0B 03  `.F..V.ク ....^..
82A0  C3 48 F7 F3 01 46 FC 11-4E FE 61 BF 00 00 E8 E6  テH...F..N.aソ....
82B0  00 72 39 26 38 2D 74 17-60 B1 0B BE A1 7D F3 A6  .r9&8-t.`ア.セ。}.ヲ
82C0  61 74 32 4E 74 09 83 C7-20 3B FB 72 E6 EB DC A0  at2Nt..ヌ ;.r..ワ
82D0  FB 7D B4 7D 8B F0 AC 98-40 74 0C 48 74 13 B4 0E  .}エ}..ャ.@t.Ht.エ.
82E0  BB 07 00 CD 10 EB EF A0-FD 7D EB E6 A0 FC 7D EB  サ..ヘ....}...}.
82F0  E1 CD 16 CD 19 26 8B 55-1A 52 B0 01 BB 00 00 E8  .ヘ.ヘ.&.U.Rー.サ...
8300  3B 00 72 E8 5B 8A 56 24-BE 0B 7C 8B FC C7 46 F0  ;.r.[.V$セ.|..ヌF.
8310  3D 7D C7 46 F4 29 7D 8C-D9 89 4E F2 89 4E F6 C6  =}ヌF.)}.ル.N..N.ニ
8320  06 96 7D CB EA 03 00 00-20 0F B6 C8 66 8B 46 F8  ..}ヒ.... .カネf.F.
8330  66 03 46 1C 66 8B D0 66-C1 EA 10 EB 5E 0F B6 C8  f.F.f.ミfチ...^.カネ
8340  4A 4A 8A 46 0D 32 E4 F7-E2 03 46 FC 13 56 FE EB  JJ.F.2....F..V..
8350  4A 52 50 06 53 6A 01 6A-10 91 8B 46 18 96 92 33  JRP.Sj.j...F...3
8360  D2 F7 F6 91 F7 F6 42 87-CA F7 76 1A 8A F2 8A E8  メ.....B.ハ.v.....
8370  C0 CC 02 0A CC B8 01 02-80 7E 02 0E 75 04 B4 42  タフ..フク...~..u.エB
8380  8B F4 8A 56 24 CD 13 61-61 72 0B 40 75 01 42 03  ...V$ヘ.aar.@u.B.
8390  5E 0B 49 75 06 F8 C3 41-BB 00 00 60 66 6A 00 EB  ^.Iu..テAサ..`fj..
83A0  B0 42 4F 4F 54 4D 47 52-20 20 20 20 0D 0A 52 65  ーBOOTMGR    ..Re
83B0  6D 6F 76 65 20 64 69 73-6B 73 20 6F 72 20 6F 74  move disks or ot
83C0  68 65 72 20 6D 65 64 69-61 2E FF 0D 0A 44 69 73  her media....Dis
83D0  6B 20 65 72 72 6F 72 FF-0D 0A 50 72 65 73 73 20  k error...Press 
83E0  61 6E 79 20 6B 65 79 20-74 6F 20 72 65 73 74 61  any key to resta
83F0  72 74 0D 0A 00 00 00 00-00 00 00 AC CB D8 55 AA  rt.........ャヒリUェ
>

セクタbOについては[総合第33回]で説明しています。
セクタbOにはMBRという名前がつけられています。
そのSDカードのパーテーション情報などが書かれています。
もうほとんどがら空きで00が並んでいます。
こんなにぎっしりじゃありません。

おお、[総合第33回]に上とそっくりのセクタデータについての説明がありました。
BPBという名前がつけられています。
Windowsでフォーマットすると、「MSDOS5.0」という文字列が書き込まれるのだとか。
どうやらこのSDカードのセクタbOには、そのBPBが書き込まれているようです。
MBRはありません。
うむむ。

パーテーションを区切らないで、このSDカード全体を1パーテーションとする、ということなのでしょうか?
Windows7ではこれでも問題としないところをみると、そういうことでもよいのかもしれませんが…。
しかし、これは掟破りではありませんか、ねえ。
Windows様はそれでよくても、当SDカードアクセスプログラムとしては掟破りは困ります。
DIRコマンドでエラーが発生したのは、どうもそのあたりの事情だったのでは。

ということで、ここは掟に従って、MBRとBPBを作り直してみることにしました。
まずはBPBを移動します。

>jp 8100
FFFF01FFFF01FFFF00FFFF00FFFFFFFFFFFFFFFE
EB3C904D53444F53352E3000024008000200020000F8F0003F00FF0000000000
00D83B00800029F30C6A904E4F204E414D4520202020464154313620202033C9
8ED1BCF07B8ED9B800208EC0FCBD007C384E247D248BC199E83C01721C83EB3A
66A11C7C26663B07268A57FC750680CA0288560280C31073EB33C98A461098F7
661603461C13561E03460E13D18B7611608946FC8956FEB82000F7E68B5E0B03
C348F7F30146FC114EFE61BF0000E8E600723926382D741760B10BBEA17DF3A6
6174324E740983C7203BFB72E6EBDCA0FB7DB47D8BF0AC9840740C487413B40E
BB0700CD10EBEFA0FD7DEBE6A0FC7DEBE1CD16CD19268B551A52B001BB0000E8
3B0072E85B8A5624BE0B7C8BFCC746F03D7DC746F4297D8CD9894EF2894EF6C6
06967DCBEA030000200FB6C8668B46F86603461C668BD066C1EA10EB5E0FB6C8
4A4A8A460D32E4F7E20346FC1356FEEB4A525006536A016A10918B4618969233
D2F7F691F7F64287CAF7761A8AF28AE8C0CC020ACCB80102807E020E7504B442
8BF48A5624CD136161720B40750142035E0B497506F8C341BB000060666A00EB
B0424F4F544D4752202020200D0A52656D6F7665206469736B73206F72206F74
686572206D656469612EFF0D0A4469736B206572726F72FF0D0A507265737320
616E79206B657920746F20726573746172740D0A00000000000000ACCBD855AA
BE70
>dm 8800,89ff
8800  EB 3C 90 4D 53 44 4F 53-35 2E 30 00 02 40 08 00  .<.MSDOS5.0..@..
8810  02 00 02 00 00 F8 F0 00-3F 00 FF 00 00 00 00 00  ........?.......
8820  00 D8 3B 00 80 00 29 F3-0C 6A 90 4E 4F 20 4E 41  .リ;...)..j.NO NA
8830  4D 45 20 20 20 20 46 41-54 31 36 20 20 20 33 C9  ME    FAT16   3ノ
8840  8E D1 BC F0 7B 8E D9 B8-00 20 8E C0 FC BD 00 7C  .ムシ.{.ルク. .タ.ス.|
8850  38 4E 24 7D 24 8B C1 99-E8 3C 01 72 1C 83 EB 3A  8N$}$.チ..<.r...:
8860  66 A1 1C 7C 26 66 3B 07-26 8A 57 FC 75 06 80 CA  f。.|&f;.&.W.u..ハ
8870  02 88 56 02 80 C3 10 73-EB 33 C9 8A 46 10 98 F7  ..V..テ.s.3ノ.F...
8880  66 16 03 46 1C 13 56 1E-03 46 0E 13 D1 8B 76 11  f..F..V..F..ム.v.
8890  60 89 46 FC 89 56 FE B8-20 00 F7 E6 8B 5E 0B 03  `.F..V.ク ....^..
88A0  C3 48 F7 F3 01 46 FC 11-4E FE 61 BF 00 00 E8 E6  テH...F..N.aソ....
88B0  00 72 39 26 38 2D 74 17-60 B1 0B BE A1 7D F3 A6  .r9&8-t.`ア.セ。}.ヲ
88C0  61 74 32 4E 74 09 83 C7-20 3B FB 72 E6 EB DC A0  at2Nt..ヌ ;.r..ワ
88D0  FB 7D B4 7D 8B F0 AC 98-40 74 0C 48 74 13 B4 0E  .}エ}..ャ.@t.Ht.エ.
88E0  BB 07 00 CD 10 EB EF A0-FD 7D EB E6 A0 FC 7D EB  サ..ヘ....}...}.
88F0  E1 CD 16 CD 19 26 8B 55-1A 52 B0 01 BB 00 00 E8  .ヘ.ヘ.&.U.Rー.サ...
8900  3B 00 72 E8 5B 8A 56 24-BE 0B 7C 8B FC C7 46 F0  ;.r.[.V$セ.|..ヌF.
8910  3D 7D C7 46 F4 29 7D 8C-D9 89 4E F2 89 4E F6 C6  =}ヌF.)}.ル.N..N.ニ
8920  06 96 7D CB EA 03 00 00-20 0F B6 C8 66 8B 46 F8  ..}ヒ.... .カネf.F.
8930  66 03 46 1C 66 8B D0 66-C1 EA 10 EB 5E 0F B6 C8  f.F.f.ミfチ...^.カネ
8940  4A 4A 8A 46 0D 32 E4 F7-E2 03 46 FC 13 56 FE EB  JJ.F.2....F..V..
8950  4A 52 50 06 53 6A 01 6A-10 91 8B 46 18 96 92 33  JRP.Sj.j...F...3
8960  D2 F7 F6 91 F7 F6 42 87-CA F7 76 1A 8A F2 8A E8  メ.....B.ハ.v.....
8970  C0 CC 02 0A CC B8 01 02-80 7E 02 0E 75 04 B4 42  タフ..フク...~..u.エB
8980  8B F4 8A 56 24 CD 13 61-61 72 0B 40 75 01 42 03  ...V$ヘ.aar.@u.B.
8990  5E 0B 49 75 06 F8 C3 41-BB 00 00 60 66 6A 00 EB  ^.Iu..テAサ..`fj..
89A0  B0 42 4F 4F 54 4D 47 52-20 20 20 20 0D 0A 52 65  ーBOOTMGR    ..Re
89B0  6D 6F 76 65 20 64 69 73-6B 73 20 6F 72 20 6F 74  move disks or ot
89C0  68 65 72 20 6D 65 64 69-61 2E FF 0D 0A 44 69 73  her media....Dis
89D0  6B 20 65 72 72 6F 72 FF-0D 0A 50 72 65 73 73 20  k error...Press 
89E0  61 6E 79 20 6B 65 79 20-74 6F 20 72 65 73 74 61  any key to resta
89F0  72 74 0D 0A 00 00 00 00-00 00 00 AC CB D8 55 AA  rt.........ャヒリUェ
>/sv sct0dt.bin,8800,89ff
0200(512)bytes saved
>

SDPIC2D.BINのプログラムリストを確認してみましたら、セクタから読み出したデータを画面に表示するともに8800〜89FFをバッファに使って、そこに書き込んでいることがわかりました(自分で作ったプログラムなのに、そんなことはすっかり忘れてしまっています)。
それで読み出したデータをSCT0DT.BINというファイル名で一時保存しました。

そのようにしておいて、次は移動先のセクタです。
とりあえずセクタbPにしてみることにしました。
念のためセクタbPを読み出して確認してみました。

>cm 8108
8108 00-01
8109 AF-
>jp 8100
FFFF01FFFF01FFFF00FFFF00FFFFFFFFFFFFFFFE
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000
>/ld sct0dt.bin,8800
loading SCT0DT.BIN ...0200(512)bytes loaded,from 8800 to 89FF
>dm 8800,880f
8800  EB 3C 90 4D 53 44 4F 53-35 2E 30 00 02 40 08 00  .<.MSDOS5.0..@..
>cm 880e
880E 08-07
880F 00-
>jp 8103
FFFF01FFFF01FFFF00FFFF00
FF
>

何も書かれていないようです。
そこでここにさきほど保存しておいたBPBを移すことにしました。
セクタbOからセクタbPに移しますから、予約セクタの数を−1しておいてから、セーブしました。
8100がセクタREADで8103がセクタWRITEです。

次はMBRです。
新しく作るのは面倒なので、別のSDカードのセクタbOを読み出して、それをコピーしてしまうことにしました。

>cm 8108
8108 01-00
8109 AF-
>jp 8100
FFFF01FFFF01FFFF01FFFF01FFFF00FFFF00FFFE
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000004
0400062CECCCFF00000001D73B00000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000055AA
4FE9
>dm 89b0,89ff
89B0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 04  ................
89C0  04 00 06 2C EC CC FF 00-00 00 01 D7 3B 00 00 00  ...,.フ.....ラ;...
89D0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
89E0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
89F0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 55 AA  ..............Uェ
>cm 89c6
89C6 FF-01
89C7 00-
>jp 8103
FFFF00FFFF00FF
>

別のSDカードに差し換えて、JP 8100を実行しました。
BPBはすぐ次のセクタですから、そのところだけ書き換えました。
そのあと、今まで作業していたSDカードに換えて、そこでJP 8103を実行しました。
これでまっとうなSDカードが出来上がったはずです。

さてどうでしょうか。
さっそく試してみました。

おお。
エラーが出なくなりました。

フォーマットしてみました。

問題ないようです。

適当なプログラムを書いて、それをセーブして、それからまたロードしてみました。

いいじゃありませんか。

いいぞ。いいぞ。


これにて一件落着。
のはずだったのですが...。

次回に続きます。

TTLでCPUをつくろう![第902回]

2018.5.10upload

前へ
次へ
ホームページトップへ戻る