On Superfloppies and their Images
#141
Posted 26 January 2012 - 10:53 PM
#142
Posted 27 January 2012 - 12:01 AM
A mixed format could hold 1.759MB and be Bootable. A 1.92MB Floppy using three 4KB Sectors per Track can be created, but is very unreliable.
#143
Posted 27 January 2012 - 03:07 AM
I corrected the issue by "forcing" anything in the 639<n<2399 sectors size to have 2 sectors per clusters.
This leaves open a possible mistake (still to be verified) about media type 250, but I don't think it is a "real issue".
I re-added the image making part <- please do test it. and report.
The spreadsheet still misses some features, like the 2K/XP vs. DOS reserved sectors emulation for biggish images and a few more, including some switch to more finely choose label, and label type (BS, BS+FS, FS only and 08 vs. 28 type) and possibly a few more bits, but it should be basically working.
I am removing anyway the previous attachment in post #111
For NO apparent reason
Clever
- it uses built-in FC.EXE to do the binary reading, no need for external tools

- the output (left part - hex text) can be copied and pasted directly in Tiny Hexer or similar
- all variables are defined in the batch as seen on screen (useful for derivative work) and the FULL variable contains the hex text
- very handy to quickly show contents of a FAT1x bootsector
Limits:
- only XP and later
- NOT (yet) duly tested with "strange" characters in text fields like OEM_String, Volume_Label or System_ID
- Experimental (release 0.01 ALPHA)
Have fun.
jaclaz
Attachment view_bs_001.zip removed, see below.
Attached File(s)
-
Known_floppies2.zip (193.22K)
Number of downloads: 18
This post has been edited by jaclaz: 29 January 2012 - 11:16 AM
#144
Posted 27 January 2012 - 06:35 PM
Bug report:
N:\>view_bs N:\noname.bs => works as expected. N:\>view_bs n:\noname.bs => works as expected. N:\>view_bs .\noname.bs => works as expected. N:\>view_bs \noname.bs => works as expected. But... N:\>view_bs noname.bs => gives instead: noname.bs File "N:\noname.bs" does not exist or is not 512 bytes in size ! Press any key to continue . . . You need to supply a target bootsector to view! view_bs.cmd - small batch file to view BPB data of bootsectors by jaclaz - version 0.01 ALPHA Usage: view_bs.cmd <FAT1x bootsector file> Examples: view_bs.cmd test_01.bs view_bs.cmd C:\BS_tests\test_01.bs view_bs.cmd "C:\A stoopidly long path containing spaces\a stoopid file name.bs" Target bootsector file MUST be 512 bytes in size. Press any key to continue . . . N:\>
noname.bs is a bootsector, and is exactly 512 bytes long.
N: is a 768 MiB gavotte ramdisk
OS: Win XP SP3
Now, just in case:
C:\>view_bs noname.bs noname.bs File "C:\noname.bs" does not exist or is not 512 bytes in size ! Press any key to continue . . . <etc.>
#145
Posted 28 January 2012 - 04:51 AM
It works here.
I tried in both a FAT32 and a NTFS volume (in case the issue is due to the fact that the file is stored directly in the $MFT) but it still does work.
Try replacing:
Quote
FOR /F "tokens=3" %%A IN ('DIR "%~1"^|FIND /I "%~1"') DO IF NOT %%A==512 GOTO :ERROR1
with:
Quote
FOR /F "tokens=3" %%A IN ('DIR "%~nx1"^|FIND /I "%~nx1"') DO IF NOT %%A==512 GOTO :ERROR1
but it shouldn't make any difference
Create an :ERROR2 at the end
Quote
ECHO 2 File "%~dpnx1" does not exist or is not 512 bytes in size 2^^!
ECHO.
PAUSE
GOTO :Usage
and change one of the the two lines to point to :ERROR2 instead of :ERROR1, let's see which one creates the exception.
Post the output of:
Quote
Try replacing:
Quote
with:
Quote
jaclaz
This post has been edited by jaclaz: 28 January 2012 - 04:53 AM
#146
Posted 28 January 2012 - 01:02 PM
jaclaz, on 28 January 2012 - 04:51 AM, said:
It works here.
I tried in both a FAT32 and a NTFS volume (in case the issue is due to the fact that the file is stored directly in the $MFT) but it still does work.
Try replacing:
Quote
FOR /F "tokens=3" %%A IN ('DIR "%~1"^|FIND /I "%~1"') DO IF NOT %%A==512 GOTO :ERROR1
with:
Quote
FOR /F "tokens=3" %%A IN ('DIR "%~nx1"^|FIND /I "%~nx1"') DO IF NOT %%A==512 GOTO :ERROR1
but it shouldn't make any difference
Yet it does:
N:\>nview_bs n:\noname.bs n:\noname.bs File "n:\noname.bs" does not exist or is not 512 bytes in size ! Press any key to continue . . . Terminate batch job (Y/N)? y N:\>nview_bs N:\noname.bs N:\noname.bs File "N:\noname.bs" does not exist or is not 512 bytes in size ! Press any key to continue . . . Terminate batch job (Y/N)? y N:\>nview_bs .\noname.bs .\noname.bs File "N:\noname.bs" does not exist or is not 512 bytes in size ! Press any key to continue . . . Terminate batch job (Y/N)? y N:\>nview_bs \noname.bs \noname.bs File "N:\noname.bs" does not exist or is not 512 bytes in size ! Press any key to continue . . . Terminate batch job (Y/N)? y N:\>nview_bs noname.bs noname.bs File "N:\noname.bs" does not exist or is not 512 bytes in size ! Press any key to continue . . . Terminate batch job (Y/N)? y
#147
Posted 28 January 2012 - 01:09 PM
IF NOT EXIST %1 GOTO :ERROR1
FOR /F "tokens=3" %%A IN ('DIR "%~1"^|FIND /I "%~1"') DO IF NOT %%A==512 GOTO :ERROR2
I get:
N:\>eview_bs noname.bs noname.bs 2 File "N:\noname.bs" does not exist or is not 512 bytes in size 2! Press any key to continue . . . Terminate batch job (Y/N)? y
All the other forms work, obviously, since they already did before...
N:\>DIR noname.bs
Volume in drive N is RamDisk
Volume Serial Number is 1234-5678
Directory of N:\
28/01/2012 04:49 PM 512 noname.bs
1 File(s) 512 bytes
0 Dir(s) 804,265,984 bytes free
#148
Posted 28 January 2012 - 01:23 PM
jaclaz, on 28 January 2012 - 04:51 AM, said:
Quote
with:
Quote
N:\>oview_bs noname.bs noname.bs EB 27 90 03 01 14 00 00 00 00 00 00 02 02 01 00 Jump_Bytes: EB2790 02 70 00 80 02 FF 01 00 08 00 02 00 00 00 00 00 OEM_String: "........" 00 00 00 00 00 00 00 CD 19 FA 8C C8 8E D8 33 D2 Bytes_per_Sector: 512 8E D2 BC 00 7C FB B8 60 00 8E D8 8E C0 33 D2 8B Sectors_per_Cluster: 2 C2 CD 13 72 69 E8 85 00 72 DD 2E 83 3E 03 7C 08 Reserved_Sectors: 1 74 06 2E C6 06 64 7D 02 BB 00 00 2E 8B 0E 03 7C Number_of_FATs: 2 51 B0 09 2A C1 B4 00 8B F0 56 33 D2 33 C0 8A C5 Max_Root_Entries: 112 2E F6 36 64 7D 8A E8 8A F4 8B C6 B4 02 CD 13 72 Small_Type_Sectors: 640 2D 5E 59 2E 29 36 05 7C 74 1F 8B C6 2E F7 26 65 Media_Type: 255 7D 03 D8 FE C5 B1 01 51 BE 08 00 2E 3B 36 05 7C Sectors_per_Fat: 1 7C 05 2E 8B 36 05 7C EB C0 EA 00 00 60 00 BE 67 Sectors_per_Head: 8 7D E8 02 00 EB FE 32 FF 2E AC 24 7F 74 0B 56 B4 Sectors_Before: 0 0E BB 07 00 CD 10 5E EB EF C3 E9 33 FF BB 00 00 Large_Sectors: 0 B9 04 00 B8 01 02 CD 13 1E 72 33 8C C8 8E D8 BF Disk_Number: 0 00 00 B9 0B 00 26 80 0D 20 26 80 4D 20 20 47 E2 Current_head: 0 F4 BF 00 00 BE 8B 7D B9 0B 00 FC F3 A6 75 0F BF NT_Signature: 0 20 00 BE 97 7D B9 0B 00 F3 A6 75 02 1F C3 BE 1B Volume_Serial: CD19FA8C 7D E8 A2 FF B4 00 CD 16 1F F9 C3 0D 0A 4E 6F 6E Volume_Label: "3.|" 2D 53 79 73 74 65 6D 20 64 69 73 6B 20 6F 72 20 System_ID: "`.3" 64 69 73 6B 20 65 72 72 6F 72 0D 0A 52 65 70 6C Magic_bytes: 55AA 61 63 65 20 61 6E 64 20 73 74 72 69 6B 65 20 61 6E 79 20 6B 65 79 20 77 68 65 6E 20 72 65 61 64 79 0D 0A 00 01 00 02 0D 0A 44 69 73 6B 20 42 6F 6F 74 20 66 61 69 6C 75 72 65 0D 0A 00 4D 69 63 72 6F 73 6F 66 74 2C 49 6E 63 20 69 62 6D 62 69 6F 20 20 63 6F 6D 30 69 62 6D 64 6F 73 20 20 63 6F 6D 30 05 C6 06 77 2F FF 83 7E FC 00 75 0B 80 7E F7 3B 75 05 C6 06 76 2F FF 89 EC 5D CA 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 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
All other forms also work, of course (but I tested them, all the same).
Here's noname.bs, just in case:
Attached File(s)
-
noname.7z (523bytes)
Number of downloads: 8
#149
Posted 28 January 2012 - 01:24 PM
dencorso, on 28 January 2012 - 01:09 PM, said:
N:\>DIR noname.bs
Volume in drive N is RamDisk
Volume Serial Number is 1234-5678
Directory of N:\
28/01/2012 04:49 PM 512 noname.bs
1 File(s) 512 bytes
0 Dir(s) 804,265,984 bytes free
Here it is
Quote
With your settings size is 4th token (and not 3rd which happens when you have 24h time set).
But then why the other forms of filename work baffles me.
Attached version 002 with the %~z1 approach, please re-test, so that I can remove version 001.
jaclaz
Attachment removed, see below.
This post has been edited by jaclaz: 29 January 2012 - 11:16 AM
#150
Posted 29 January 2012 - 05:20 AM
#151
Posted 29 January 2012 - 11:15 AM
dencorso, on 29 January 2012 - 05:20 AM, said:
Good
(I forgot "Current_head" field in previous ones, and have now added a clearer - hopefully
jaclaz
P.S. File updated, small typo, I had "lost" a "%" in the %Volume_Label% of first view.
Attached File(s)
-
view_bs_003.zip (2.38K)
Number of downloads: 9
This post has been edited by jaclaz: 29 January 2012 - 02:06 PM
#152
Posted 31 January 2012 - 06:22 PM
Now:
- it can run on 2K too (no need for fsutil)
- it can run on read-only media (no more temp file)
- can process files larger than 512 bytes (like whole floppy or super-floppy images)
- values are now right-aligned
- it is a tadbit slower in first screen coming up, though

Verson 0.05 attached.
(don't try finding version 0.04, it was for internal use only)
In order to remove the temp file I had to introduce a possible bug, that along the good old tradition I will call "feature"
If the bootsector starts with "::" i.e. with 3A3A the first two bytes will be reported as 0000.
I'll see if I can later remove this "feature".
jaclaz
Attached File(s)
-
view_bs_005.zip (2.35K)
Number of downloads: 10
#153
Posted 20 June 2012 - 07:53 AM
It should be almost working, still a couple options missing
Still no kids willing to play with me though
jaclaz
Attached File(s)
-
view_bs_008.zip (6.98K)
Number of downloads: 9
#154
Posted 22 June 2012 - 02:23 AM
jaclaz, on 01 November 2011 - 04:47 AM, said:
More generally only 512 Bytes/Sectors will be included (besides the booting aspect, I suspect that non 512 bytes/sector formats would have anyway problems in VM's and/or Virtual Drives).
For the record there are the 8.00" floppy formats:
http://support.micro.../kb/75131/en-us
that do have a different sector size, and they will be ignored also.
Hey, great find, jaclaz! I didn't realize these olde 8" floppies had 128 byte and 1024 byte sectors!
rloew, on 01 November 2011 - 11:09 PM, said:
As I expected the BIOS will not boot the Disk, but a slightly non-standard format may make it possible to boot, if I can solve an internal Disk Geometry problem.
Well, the 128 byte and 1024 byte sectors in the above KB are from the time of MS-DOS 1.0 and 2.0, which was pretty much (if not completely) the pre-hard-disk era. So the BIOSes of the time (especially the original IBM one) must have been able to boot with these now-obscure/defunct sector sizes.
Joe.
#155
Posted 22 June 2012 - 12:41 PM
jds, on 22 June 2012 - 02:23 AM, said:
rloew, on 01 November 2011 - 11:09 PM, said:
As I expected the BIOS will not boot the Disk, but a slightly non-standard format may make it possible to boot, if I can solve an internal Disk Geometry problem.
Well, the 128 byte and 1024 byte sectors in the above KB are from the time of MS-DOS 1.0 and 2.0, which was pretty much (if not completely) the pre-hard-disk era. So the BIOSes of the time (especially the original IBM one) must have been able to boot with these now-obscure/defunct sector sizes.
Joe.
I assume so.
Modern BIOSes do support these formats. They can't be booted because the Boot code does not scan for them. It only tries 512 Byte Sectors. I did create a Bootable 1K Sector Floppy by slipping in one 512 Bytes Sector.
#156
Posted 26 September 2012 - 08:27 PM
Nice
- Take a floppy.
- Format it under DOS 7.x, give it not a label.
- Copy to it a single file (whatever smallish file, let's say 2048 bytes or less, like an AUTOEXEC.BAT for example, would do)
- Make a dd-like copy of the floppy.
- Format the copy under the same DOS 7.x, still not giving it a label, but this time using the /q switch.
- Make another dd-like copy of the floppy made in points #1-3
- Format it from XP command line, stil not giving it a label and use as well the /q switch
- Compare the two latter floppies with the first one in a hex editor or similar.
Of course the same can be done in a VM and/or using a virtual disk drive with floppy images instead of real floppies.
Questions:
Q1. How many different sectors there are between first and second disk?
Q2. How many different sectors there are between first and third disk?
jaclaz
#157
Posted 28 September 2012 - 01:40 PM
jaclaz, on 26 September 2012 - 08:27 PM, said:
Q1. How many different sectors there are between first and second disk?
Q2. How many different sectors there are between first and third disk?
Q1: 4, of course!
Q2: 5 ?!?
Note added later: Just for the record, I used the excellent freeware DiskImage, by Mike Brutman, to generate the floppy images under plain MS-DOS 7.10, and the equally excellent freeware NTRawrite, by Blake Ramsdell, to generate the floppy image at the XP SP3 DOS Box.
Attached File(s)
-
jaclaz\'s experiment.7z (91.77K)
Number of downloads: 10
#158
Posted 29 September 2012 - 03:52 AM
Now, what could have been the reason the good MS guys did that change?
The chances of this phenomenon actually "changing something" is in practice virtually 0, as it is actually very rare to have a floppy filled "up to the brim", but I find it "queer".
Could it be some form of "preparation" for NTFS formatting? (that was however removed since day 1, because of the size of the metadata, and was it not for the good Mark Russinovich
Compare with:
http://www.msfn.org/...ize-of-bootsdi/
http://code.google.c.../wiki/Tiny_NTFS
It would be interesting if a simialr experiment would be repeated on a NT 4.0 and on a Win2K machine ...
jaclaz
#160
Posted 02 October 2012 - 04:50 AM
tomasz86, on 02 October 2012 - 04:11 AM, said:
You NEED to start from a "fully formatted" under DOS floppy image, as in steps 1-2-3 of the instructions.
I haven't checked the image you posted, but if it was not made like the above and if there are NOT 3 (three) images done EXACTLY as the given instructions, the experiments makes no sense/gives no results you can observe.
You can re-use the files dencorso provided, though, making a copy of 1STIMA.IMA naming it 3rdima2K.ima and formatting it with /q on Windows 2000.
jaclaz
This post has been edited by jaclaz: 02 October 2012 - 04:55 AM



Help

Back to top









