標準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
前へ
次へ
ホームページトップへ戻る