I tried the SDformat program (for mac) as someone suggested, then ran Clock Loop's modified code and I still get garbage. I don't know what's going on but it seems to not like this card.
I tried the SDformat program (for mac) as someone suggested, then ran Clock Loop's modified code and I still get garbage. I don't know what's going on but it seems to not like this card.
p
Something in the program is still messed up because I also get garbage at first for about 4 seconds, and then it works.
I tried this modified code with my troublesome Panasonic card with no change in result. I also tried it with the Lexar card above and found no difference.
Clock Loop,
I too had modified the spin code, first because of the pin assignments, but also
1) my SD card power is switched by p12 and
2) I was getting garbage data.
I too found that there was a weird interaction between the serial port and the SD card test, so I ended up moving the serial port initialization to after the test. Here is how I modified Cluso's spin code, only the first PUB. I'm using BST/Mac, so I left off the long startup delay.
[SIZE=1][FONT=courier new]pub Main : i | tm
'' This Spin code is not part of the boot code, it' just starts the PASM cog and shows the resultdira[12]~~ ' for Tracy only...outa[12]~ ' This turns on power to my SD cardwaitcnt(clkfreq/10+cnt)
bytefill(@done,0,4+512+512) 'clear the buffers
done[0] := $FF'set busycognew(@entry, @done)
repeatuntil (done[0] == 0)
dbg.start(31,30,0,9600)
waitcnt(clkfreq/10+cnt)
dbg.str(string("testing...",13))
DisplayParam
DisplayMBR
repeat
[/FONT][/SIZE]
On a quick test with one SanDisk 4Gb card, your program (with the appropriate pin assignments) and mine give the same results. But how do you know they are correct?
I tried this modified code with my troublesome Panasonic card with no change in result. I also tried it with the Lexar card above and found no difference.
Does it still throw out the GARBAGE? before the mbr result?
The result you show could be correct, if your mbr really doesn't contain any data. (your result does show some data actually, at the bottom of the mbr)
You could try to write data to the mbr and see if it shows up. Its possible you don't have a problem with your sd cards?
On a quick test with one SanDisk 4Gb card, your program (with the appropriate pin assignments) and mine give the same results. But how do you know they are correct?
Because you modified the code to fix the sd PASM and fullduplexserial PASM stomping on eachother, before you tested, your results are probably correct. (as correct as can be?)
Technically the only perfect way to know we are getting good MBR data is to write custom data to our MBR, and then do this read.
(the program "winimage" allows the modification of MBR data) (CAREFULL, you can seriously screw up your computers mbr with this program)
Others here used the original code, and most their results show the MBR with all 0 data. (except the very end)
(it could be correct, but i figured its best to re-test because with my card, before the fix, it showed all 0's in the mbr (except the very end), and then after the PASM fix it showed tons of data in the mbr at the beginning.
I wrote to my sd cards MBR using winimage.
I did this by saving the mbr in winimage as mbr.bin file, I then opened it up in NOTEPAD and started typing, I then saved it as is. I then imported it into winimage, writing to the mbr of the sd card.
Heres the result with the fixed spin program.
Clusos program as it is now in the first post (he hasn't fixed it yet) will not even push this information to the terminal, it will just throw out garbage due to the pasm stomping.
It seems that due to variations in the sd card logic speeds, some see the problem, and others do not.
But rest assured, the sd PASM, and the fullduplexserial PASM are stomping on eachother in the original program.
BTW I have no idea what I'm looking for in this data. Is what I posted any good? I am using the latest code that Clock Loop posted on a Prop BOE board.
BTW I have no idea what I'm looking for in this data. Is what I posted any good? I am using the latest code that Clock Loop posted on a Prop BOE board.
It LOOKs good, there is data at the end of your MBR, but not at the beginning, most SD cards that have original format have nothing in the beginning of the MBR. (but most show some data near the end, like yours.)
The only way data gets into the MBR of a sd card is if you used a utility with it that wrote data to the mbr. (linux boot, etc...)
I expect most sd card results here to match yours IF they use my modified program.
If they use clusos, the beginning of the mbr could possibly show all 0's but really have data in it. (like my 16 gig sdhc pny card did, in my post above)
I used the SD formatter program from the SD org website on my Mac to format the cards before I used your program. It formats them to FAT16.
It looks like anyone who did that, or has original mbr format, ends up with this at the very end of the MBR, while most of the other mbr data is all 0's.
To that You can use mos of BOOT spaces area --- As long You don't will boot from that SC on windows machine. -- Reading else writing to That SD give You never problems.
On Image I post You can see what every value near end say to You.
Look on table on right side of picture
Oh right, I suppose this is the best way to verify the MBR data, open up winhex, and compare it to the values output by the spin program.
If I did that I would have immediately noticed the discrepancy and posted here about it.
But after fixing the original program, it made me aware that my previous MBR reads with the original broken program cluso posted were bad reads.
Some of my sd cards worked fine with the code cluso posted, like others here.
But 3 of my sd cards wouldn't show the result, and only throw garbage at the terminal continuously, which is what made me aware of the program being buggy.
At first I just added some wait counts, and that helped, it would still initially throw out garbage, but then would show the mbr data.
Then after figuring out the real problem (main spin code PASM stomping on sub object's PASM (or vice versa), it all cleared up and the garbage problem went away.
Im still curious, ... I didn't know it was possible for PASM in the main spin file, to interact with PASM in an object that is included in that main spin file.
But its happening in the original program. Its probably a simple fix, but I understand very little PASM.
Its also completely possible that I am not even close to what the cause of this problem really is. (i.e. memory stomping) (PASM labels being identical?)
Sorry guys, I am really busy.
What is most likely happening are 2 problems..
1. The card is slow and therefore the busy is being returned for a long time and this is filling up my hub buffer and overruning hubram. It could also occur on large cards. I have no checks, just a buffer of 8K longs. This is the 37 xx xx FF 29 xx 01 FF code repeating. I have not timeout checks, nor overrun checks.
2. The upper ASCII characters >= $80 should e checked and masked. Some of these may upset PST.
I did notwant the MBR changed so that I could see what else may be there that we might upset in my method. Seems most either have nothing (all $00) in the boot code, or a small bootloader with the message somthing like not found. We can utilise these without any risk. They all seem to be FAT16 or FAT 32. If the card is raw (no formatting) then it is all $00 with no MBR identifier $55 $AA at the very end. Often you can see partition table data - the last 4 * 16 bytes before the $55 $AA identifier.
To repeat again, my method does not care what formatting (read file system) is on the card. This way, we can best utilise whatever open file system is devised later to deal with the larger SD cards without falling foul of MS patents. I am sure this will happen, and we will be able to write (without any changes to the ROM) a new boot loader to take care of this. We also can utilise the full encryption of the P2 as well. This is the simplest and safest method possible.
I posted P1 code that can locate a Boot File within the FAT16/32 filesystem and write this pointer and an Identifier into the MBR boot area. This could be simply modified to copy the direct sector of a boot partition should you wish to utilise this method. It just works simply guys, so why al the fuss.
I am more concerned to make sure that we have the logic correct to read a few raw sectors from the SD card using the P2 ROM. Just enough to locate a small boot program (or whole P2 program). This can load up a file system, partition system, or nothing but raw access. My method can cater for almost anything, all with minimum ROM usage.
I did notwant the MBR changed so that I could see what else may be there that we might upset in my method. Seems most either have nothing (all $00) in the boot code, or a small bootloader with the message somthing like not found. We can utilise these without any risk. They all seem to be FAT16 or FAT 32. If the card is raw (no formatting) then it is all $00 with no MBR identifier $55 $AA at the very end. Often you can see partition table data - the last 4 * 16 bytes before the $55 $AA identifier.
To repeat again, my method does not care what formatting (read file system) is on the card. This way, we can best utilise whatever open file system is devised later to deal with the larger SD cards without falling foul of MS patents.
SO this test was just to see if most sd cards COULD read their MBRS? AND to see if any of the regular formatted sd cards had anything in the mbr?
It looks like everyones sd cards read fine with the test program, and most mbr's are empty. I like not relying on a specific format or file system to boot the p2. This will allow any p2 developer to even develop their OWN operating system and file system if they choose. And this also allows other file systems like linux ext3 to be utilized if the user so chooses, because the p2 is only looking for mbr data in specific location for boot code. What the developer does from that point on is wide open. Just the way everyone here likes it. FREEDOM!
I think that the only reason any one would suggest it be tied to a specific file system format, is because they don't understand the nature of the mbr and how it dosen't care what file system you use, the mbr chugs along oblivious to any file system format, making it perfectly suited for modification with pointer code. (exactly how computers work today)
The p2 is pretty much a computer in a single chip, so it makes sense to adopt mbr booting.
Perhaps I missing some gotchas? Consider how long computers have been utilizing mbr to boot a plethora of OS's, even today with our modern 64-bit cpus, OS's and super immersive gaming, but yet it all starts with a simple MBR method that was invented decades ago, and hasn't changed at all since, even with our 4ghz, 16gig ram, solid state hard drives, 64-bit cpus, etc... all the wonderful advanced hardware and software, but yet we still rely on the good ol' simple MBR to get it all going.
This method has worked so well for so long, I am kinda surprised to see opposition to it, and even more surprised to see people saying that the p2 ROM should contain FAT support!!!!!! HELL NO. o.O
A few of my sd cards had info in the mbr, but thats because i had used those sd cards for bootable utilities, firmware updaters, and mini-linux, and I had to use a special tool to format and write data to those cards.
It looks like, ALL sd cards so far can read the mbr just fine, and like you said, they all have no data in the mbr. (with original sd format)
The idea to use the sd mbr as pointer to locate boot code for p2, looks like it will work great! Now let hope it gets implemented.
(its pretty easy to plop a binary file onto the sd card, and then use a tool to find its start address, then inject that start address into the mbr at pre-defined location.)
Is this something a new user to the p2 will be able to easily do? No, not at first.
But then after the guru's here hack on it, they will develop a tool that allows one to automate most of the process, by just supplying the drive letter of the sd card, and the prop2 program to be booted.
A tool could be developed for different sd formats also.
But then after the guru's here hack on it, they will develop a tool that allows one to automate most of the process, by just supplying the drive letter of the sd card, and the prop2 program to be booted.
A tool could be developed for different sd formats also.
The same Prop (P1 or P2) can be the tool:
1) serially upload to prop ram the firmware for this purpose
2) send the information on what pins the SD is wired
3) send data to write to SD
Comments
I have only seen one MBR/VBR where data is in the area I want to store the pointer.
Does anyone have an SDXC that they can post results?
p
Something in the program is still messed up because I also get garbage at first for about 4 seconds, and then it works.
Size: 2gig
Type:MicroSD
Works with windows.
testing... Parameters used... 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 00 00 00 FF 08 AA 00 FF 37 AA 00 FF 29 AA 00 FF 11 00 00 FF 00 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 MBR sector 0... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
ALL PREVIOUS SD CARD RESULTS ARE INVALID DUE TO BROKEN PASM CODE!!!!
I found this out by only starting the FULLDUPLEXSERIAL object AFTER the sdroutines in PASM were done.
Now my SDHC 16gb PNY card reads like this:
[code]
Parameters used...
00 00 01 FF 08 AA 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
MBR sector 0...
FA 33 C0 8E D0 BC 00 7C 8B F4 50 07 50 1F FB FC
I tried this modified code with my troublesome Panasonic card with no change in result. I also tried it with the Lexar card above and found no difference.
[code]
Parameters used...
00 00 01 FF 08 AA 05 FF 37 AA 01 FF 29 AA 01 FF
37 AA 01 FF 29 AA 00 FF 11 00 00 FF FE FF 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
MBR sector 0...
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 ................
39 00 06 1F FF DF F5 00 00 00 0B 83 1E 00 00 00 9..
I too had modified the spin code, first because of the pin assignments, but also
1) my SD card power is switched by p12 and
2) I was getting garbage data.
I too found that there was a weird interaction between the serial port and the SD card test, so I ended up moving the serial port initialization to after the test. Here is how I modified Cluso's spin code, only the first PUB. I'm using BST/Mac, so I left off the long startup delay.
[SIZE=1][FONT=courier new]pub Main : i | tm ' ' This Spin code is not part of the boot code, it ' just starts the PASM cog and shows the result dira[12]~~ ' for Tracy only... outa[12]~ ' This turns on power to my SD card waitcnt(clkfreq/10+cnt) bytefill(@done,0,4+512+512) 'clear the buffers done[0] := $FF 'set busy cognew(@entry, @done) repeat until (done[0] == 0) dbg.start(31,30,0,9600) waitcnt(clkfreq/10+cnt) dbg.str(string("testing...",13)) DisplayParam DisplayMBR repeat [/FONT][/SIZE]
On a quick test with one SanDisk 4Gb card, your program (with the appropriate pin assignments) and mine give the same results. But how do you know they are correct?
Does it still throw out the GARBAGE? before the mbr result?
The result you show could be correct, if your mbr really doesn't contain any data. (your result does show some data actually, at the bottom of the mbr)
You could try to write data to the mbr and see if it shows up. Its possible you don't have a problem with your sd cards?
Size: 2GB FAT16
Type:MicroSD
Works with windows and Prop.
Parameters used... 00 00 01 FF 08 AA 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF MBR sector 0... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 01 ............... 01 00 06 FE FF FF 3F 00 00 00 84 EF 3A 00 00 00 ...þÿÿ?...ï:... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............Uª
Because you modified the code to fix the sd PASM and fullduplexserial PASM stomping on eachother, before you tested, your results are probably correct. (as correct as can be?)
Technically the only perfect way to know we are getting good MBR data is to write custom data to our MBR, and then do this read.
(the program "winimage" allows the modification of MBR data) (CAREFULL, you can seriously screw up your computers mbr with this program)
Others here used the original code, and most their results show the MBR with all 0 data. (except the very end)
(it could be correct, but i figured its best to re-test because with my card, before the fix, it showed all 0's in the mbr (except the very end), and then after the PASM fix it showed tons of data in the mbr at the beginning.
Size: 1GB FAT16
Type:MicroSD
Works with windows and Prop.
[code]
Parameters used...
00 00 01 FF 08 AA 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 00 FF 3A 00 00 FF 11 00 00 FF
FE FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
MBR sector 0...
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 ................
04 00 06 04 E4 C9 81 00 00 00 7F CF 1D 00 00 00 ....
Size: 2GB FAT16
Type:MicroSD
Works with windows and Prop.
[code]
Parameters used...
00 00 01 FF 08 AA 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 00 FF
3A 00 00 FF 11 00 00 FF FE FF 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
MBR sector 0...
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 ................
08 00 06 1F DF BF 85 00 00 00 7B 07 3B 00 00 00 ...߿
I did this by saving the mbr in winimage as mbr.bin file, I then opened it up in NOTEPAD and started typing, I then saved it as is. I then imported it into winimage, writing to the mbr of the sd card.
Heres the result with the fixed spin program.
Clusos program as it is now in the first post (he hasn't fixed it yet) will not even push this information to the terminal, it will just throw out garbage due to the pasm stomping.
It seems that due to variations in the sd card logic speeds, some see the problem, and others do not.
But rest assured, the sd PASM, and the fullduplexserial PASM are stomping on eachother in the original program.
Brand:SanDisk
Size: 1gb
Type: MicroSD
Parameters used... 00 00 01 FF 08 AA 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF MBR sector 0... 49 20 6F 70 65 6E 65 64 20 75 70 20 61 20 74 65 I opened up a te 78 74 20 66 69 6C 65 20 69 6E 20 6E 6F 74 65 70 xt file in notep 61 64 20 61 6E 64 20 73 74 61 72 74 65 64 20 74 ad and started t 79 70 69 6E 67 20 74 65 78 74 2C 20 61 6E 64 20 yping text, and 74 68 65 6E 20 73 61 76 65 64 20 69 74 20 61 73 then saved it as 20 61 20 6D 62 72 2E 62 69 6E 20 66 69 6C 65 20 a mbr.bin file 61 6E 64 20 74 68 65 6E 20 69 6D 70 6F 72 74 65 and then importe 64 20 69 74 20 69 6E 74 6F 20 74 68 65 20 6D 61 d it into the ma 73 74 65 72 20 62 6F 6F 74 20 72 65 63 6F 72 64 ster boot record 20 63 6F 64 65 20 70 72 6F 70 65 72 74 69 65 73 code properties 20 77 69 6E 64 6F 77 20 69 6E 20 77 69 6E 69 6D window in winim 61 67 65 2E 20 20 49 20 72 65 61 6C 6C 79 20 68 age. I really h 6F 70 65 20 77 65 20 63 61 6E 20 75 73 65 20 73 ope we can use s 64 20 63 61 72 64 73 20 74 6F 20 62 6F 6F 74 20 d cards to boot 74 68 65 20 70 72 6F 70 2E 20 20 20 20 20 20 20 the prop. 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 00 00 00 80 03 ......€. 3D 00 06 1F FF D7 F9 00 00 00 07 44 1E 00 00 00 =..ÿ×ù....D.... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ............ÿ
It LOOKs good, there is data at the end of your MBR, but not at the beginning, most SD cards that have original format have nothing in the beginning of the MBR. (but most show some data near the end, like yours.)
The only way data gets into the MBR of a sd card is if you used a utility with it that wrote data to the mbr. (linux boot, etc...)
I expect most sd card results here to match yours IF they use my modified program.
If they use clusos, the beginning of the mbr could possibly show all 0's but really have data in it. (like my 16 gig sdhc pny card did, in my post above)
It looks like anyone who did that, or has original mbr format, ends up with this at the very end of the MBR, while most of the other mbr data is all 0's.
55 AA
[code]
Parameters used...
00 00 01 FF 08 AA 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
MBR sector 0...
33 C0 8E D0 BC 00 7C FB 50 07 50 1F FC BE 1B 7C 3
On Image I post You can see what every value near end say to You.
Look on table on right side of picture
To that You can use mos of BOOT spaces area --- As long You don't will boot from that SC on windows machine. -- Reading else writing to That SD give You never problems.
Only reserved place are Parameters area
Oh right, I suppose this is the best way to verify the MBR data, open up winhex, and compare it to the values output by the spin program.
If I did that I would have immediately noticed the discrepancy and posted here about it.
But after fixing the original program, it made me aware that my previous MBR reads with the original broken program cluso posted were bad reads.
Some of my sd cards worked fine with the code cluso posted, like others here.
But 3 of my sd cards wouldn't show the result, and only throw garbage at the terminal continuously, which is what made me aware of the program being buggy.
At first I just added some wait counts, and that helped, it would still initially throw out garbage, but then would show the mbr data.
Then after figuring out the real problem (main spin code PASM stomping on sub object's PASM (or vice versa), it all cleared up and the garbage problem went away.
Im still curious, ... I didn't know it was possible for PASM in the main spin file, to interact with PASM in an object that is included in that main spin file.
But its happening in the original program. Its probably a simple fix, but I understand very little PASM.
Its also completely possible that I am not even close to what the cause of this problem really is. (i.e. memory stomping) (PASM labels being identical?)
What version of Winhex do you have? I was thinking about buying.
What is most likely happening are 2 problems..
1. The card is slow and therefore the busy is being returned for a long time and this is filling up my hub buffer and overruning hubram. It could also occur on large cards. I have no checks, just a buffer of 8K longs. This is the 37 xx xx FF 29 xx 01 FF code repeating. I have not timeout checks, nor overrun checks.
2. The upper ASCII characters >= $80 should e checked and masked. Some of these may upset PST.
I did notwant the MBR changed so that I could see what else may be there that we might upset in my method. Seems most either have nothing (all $00) in the boot code, or a small bootloader with the message somthing like not found. We can utilise these without any risk. They all seem to be FAT16 or FAT 32. If the card is raw (no formatting) then it is all $00 with no MBR identifier $55 $AA at the very end. Often you can see partition table data - the last 4 * 16 bytes before the $55 $AA identifier.
To repeat again, my method does not care what formatting (read file system) is on the card. This way, we can best utilise whatever open file system is devised later to deal with the larger SD cards without falling foul of MS patents. I am sure this will happen, and we will be able to write (without any changes to the ROM) a new boot loader to take care of this. We also can utilise the full encryption of the P2 as well. This is the simplest and safest method possible.
I posted P1 code that can locate a Boot File within the FAT16/32 filesystem and write this pointer and an Identifier into the MBR boot area. This could be simply modified to copy the direct sector of a boot partition should you wish to utilise this method. It just works simply guys, so why al the fuss.
I am more concerned to make sure that we have the logic correct to read a few raw sectors from the SD card using the P2 ROM. Just enough to locate a small boot program (or whole P2 program). This can load up a file system, partition system, or nothing but raw access. My method can cater for almost anything, all with minimum ROM usage.
testing..._ Parameters used... 00 00 01 FF 08 AA 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 00 FF 3A 00 00 FF 11 00 00 FF FE FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 MBR sector 0... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 ................ 3F 00 06 17 D7 D7 FB 00 00 00 05 7F 3C 00 00 00 ?...???....?<... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............U?
Dump of MBR:
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 |................| 000001c0 3f 00 06 17 d7 d7 fb 00 00 00 05 7f 3c 00 00 00 |?...........<...| 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
testing..._ Parameters used... 00 00 01 FF 08 AA 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF MBR sector 0... FA 31 C0 8E D8 8E D0 BC 00 7C 89 E6 06 57 8E C0 ?1??????.|??.W?? FB FC BF 00 06 B9 00 01 F3 A5 EA 1F 06 00 00 52 ???..?..????...R 52 B4 41 BB AA 55 31 C9 30 F6 F9 CD 13 72 13 81 R?A??U1?0???.r.? FB 55 AA 75 0D D1 E9 73 09 66 C7 06 8D 06 B4 42 ?U?u.??s.f?.?.?B EB 15 5A B4 08 CD 13 83 E1 3F 51 0F B6 C6 40 F7 ?.Z?.?.???Q.??@? E1 52 50 66 31 C0 66 99 E8 66 00 E8 21 01 4D 69 ?RPf1?f??f.?!.Mi 73 73 69 6E 67 20 6F 70 65 72 61 74 69 6E 67 20 ssing operating 73 79 73 74 65 6D 2E 0D 0A 66 60 66 31 D2 BB 00 system...f`f1??. 7C 66 52 66 50 06 53 6A 01 6A 10 89 E6 66 F7 36 |fRfP.Sj.j.??f?6 F4 7B C0 E4 06 88 E1 88 C5 92 F6 36 F8 7B 88 C6 ?{??.??????6?{?? 08 E1 41 B8 01 02 8A 16 FA 7B CD 13 8D 64 10 66 .?A?..?.?{?.?d.f 61 C3 E8 C4 FF BE BE 7D BF BE 07 B9 20 00 F3 A5 a??????}??.? .?? C3 66 60 89 E5 BB BE 07 B9 04 00 31 C0 53 51 F6 ?f`????.?..1?SQ? 07 80 74 03 40 89 DE 83 C3 10 E2 F3 48 74 5B 79 .?t.@????.??Ht[y 39 59 5B 8A 47 04 3C 0F 74 06 24 7F 3C 05 75 22 9Y[?G.<.t.$?<.u" 66 8B 47 08 66 8B 56 14 66 01 D0 66 21 D2 75 03 f?G.f?V.f.?f!?u. 66 89 C2 E8 AC FF 72 03 E8 B6 FF 66 8B 46 1C E8 f?????r.???f?F.? A0 FF 83 C3 10 E2 CC 66 61 C3 E8 62 00 4D 75 6C ????.??fa??b.Mul 74 69 70 6C 65 20 61 63 74 69 76 65 20 70 61 72 tiple active par 74 69 74 69 6F 6E 73 2E 0D 0A 66 8B 44 08 66 03 titions...f?D.f. 46 1C 66 89 44 08 E8 30 FF 72 13 81 3E FE 7D 55 F.f?D.?0?r.?>?}U AA 0F 85 06 FF BC FA 7B 5A 5F 07 FA FF E4 E8 1E ?.?.???{Z_.????. 00 4F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65 .Operating syste 6D 20 6C 6F 61 64 20 65 72 72 6F 72 2E 0D 0A 5E m load error...^ AC B4 0E 8A 3E 62 04 B3 07 CD 10 3C 0A 75 F1 CD ??.?>b.?.?.<.u?? 18 F4 EB FD 00 00 00 00 00 00 00 00 00 00 00 00 .???............ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 EE 13 01 00 00 00 80 02 ........?.....?. 03 01 0B 30 F0 C0 00 20 00 00 00 0C 76 00 00 00 ...0??. ....v... 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA ..............U?
Dump of MBR:
00000010 fb fc bf 00 06 b9 00 01 f3 a5 ea 1f 06 00 00 52 |...............R| 00000020 52 b4 41 bb aa 55 31 c9 30 f6 f9 cd 13 72 13 81 |R.A..U1.0....r..| 00000030 fb 55 aa 75 0d d1 e9 73 09 66 c7 06 8d 06 b4 42 |.U.u...s.f.....B| 00000040 eb 15 5a b4 08 cd 13 83 e1 3f 51 0f b6 c6 40 f7 |..Z......?Q...@.| 00000050 e1 52 50 66 31 c0 66 99 e8 66 00 e8 21 01 4d 69 |.RPf1.f..f..!.Mi| 00000060 73 73 69 6e 67 20 6f 70 65 72 61 74 69 6e 67 20 |ssing operating | 00000070 73 79 73 74 65 6d 2e 0d 0a 66 60 66 31 d2 bb 00 |system...f`f1...| 00000080 7c 66 52 66 50 06 53 6a 01 6a 10 89 e6 66 f7 36 ||fRfP.Sj.j...f.6| 00000090 f4 7b c0 e4 06 88 e1 88 c5 92 f6 36 f8 7b 88 c6 |.{.........6.{..| 000000a0 08 e1 41 b8 01 02 8a 16 fa 7b cd 13 8d 64 10 66 |..A......{...d.f| 000000b0 61 c3 e8 c4 ff be be 7d bf be 07 b9 20 00 f3 a5 |a......}.... ...| 000000c0 c3 66 60 89 e5 bb be 07 b9 04 00 31 c0 53 51 f6 |.f`........1.SQ.| 000000d0 07 80 74 03 40 89 de 83 c3 10 e2 f3 48 74 5b 79 |..t.@.......Ht[y| 000000e0 39 59 5b 8a 47 04 3c 0f 74 06 24 7f 3c 05 75 22 |9Y[.G.<.t.$.<.u"| 000000f0 66 8b 47 08 66 8b 56 14 66 01 d0 66 21 d2 75 03 |f.G.f.V.f..f!.u.| 00000100 66 89 c2 e8 ac ff 72 03 e8 b6 ff 66 8b 46 1c e8 |f.....r....f.F..| 00000110 a0 ff 83 c3 10 e2 cc 66 61 c3 e8 62 00 4d 75 6c |.......fa..b.Mul| 00000120 74 69 70 6c 65 20 61 63 74 69 76 65 20 70 61 72 |tiple active par| 00000130 74 69 74 69 6f 6e 73 2e 0d 0a 66 8b 44 08 66 03 |titions...f.D.f.| 00000140 46 1c 66 89 44 08 e8 30 ff 72 13 81 3e fe 7d 55 |F.f.D..0.r..>.}U| 00000150 aa 0f 85 06 ff bc fa 7b 5a 5f 07 fa ff e4 e8 1e |.......{Z_......| 00000160 00 4f 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 |.Operating syste| 00000170 6d 20 6c 6f 61 64 20 65 72 72 6f 72 2e 0d 0a 5e |m load error...^| 00000180 ac b4 0e 8a 3e 62 04 b3 07 cd 10 3c 0a 75 f1 cd |....>b.....<.u..| 00000190 18 f4 eb fd 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001b0 00 00 00 00 00 00 00 00 ee 13 01 00 00 00 80 02 |................| 000001c0 03 01 0b 30 f0 c0 00 20 00 00 00 0c 76 00 00 00 |...0... ....v...| 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
[code]
testing...
Parameters used...
00 00 01 FF 08 AA 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
37 00 01 FF 29 00 01 FF 37 00 01 FF 29 00 01 FF
MBR sector 0...
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 ................
0C 00 0B 38 F8 B8 89 00 00 00 77 9F 3A 00 00 00 ...8
http://www.winhex.com/winhex/
SO this test was just to see if most sd cards COULD read their MBRS? AND to see if any of the regular formatted sd cards had anything in the mbr?
It looks like everyones sd cards read fine with the test program, and most mbr's are empty. I like not relying on a specific format or file system to boot the p2. This will allow any p2 developer to even develop their OWN operating system and file system if they choose. And this also allows other file systems like linux ext3 to be utilized if the user so chooses, because the p2 is only looking for mbr data in specific location for boot code. What the developer does from that point on is wide open. Just the way everyone here likes it. FREEDOM!
I think that the only reason any one would suggest it be tied to a specific file system format, is because they don't understand the nature of the mbr and how it dosen't care what file system you use, the mbr chugs along oblivious to any file system format, making it perfectly suited for modification with pointer code. (exactly how computers work today)
The p2 is pretty much a computer in a single chip, so it makes sense to adopt mbr booting.
Perhaps I missing some gotchas? Consider how long computers have been utilizing mbr to boot a plethora of OS's, even today with our modern 64-bit cpus, OS's and super immersive gaming, but yet it all starts with a simple MBR method that was invented decades ago, and hasn't changed at all since, even with our 4ghz, 16gig ram, solid state hard drives, 64-bit cpus, etc... all the wonderful advanced hardware and software, but yet we still rely on the good ol' simple MBR to get it all going.
This method has worked so well for so long, I am kinda surprised to see opposition to it, and even more surprised to see people saying that the p2 ROM should contain FAT support!!!!!! HELL NO. o.O
A few of my sd cards had info in the mbr, but thats because i had used those sd cards for bootable utilities, firmware updaters, and mini-linux, and I had to use a special tool to format and write data to those cards.
It looks like, ALL sd cards so far can read the mbr just fine, and like you said, they all have no data in the mbr. (with original sd format)
The idea to use the sd mbr as pointer to locate boot code for p2, looks like it will work great! Now let hope it gets implemented.
(its pretty easy to plop a binary file onto the sd card, and then use a tool to find its start address, then inject that start address into the mbr at pre-defined location.)
Is this something a new user to the p2 will be able to easily do? No, not at first.
But then after the guru's here hack on it, they will develop a tool that allows one to automate most of the process, by just supplying the drive letter of the sd card, and the prop2 program to be booted.
A tool could be developed for different sd formats also.
The same Prop (P1 or P2) can be the tool:
1) serially upload to prop ram the firmware for this purpose
2) send the information on what pins the SD is wired
3) send data to write to SD