Boot Sector for Windows 1.02 disks

Discuss MS-DOS, Windows 1, 2 and 3.
Post Reply
RubyTuesday
User avatar
Donator
Posts: 76
Joined: Mon Jan 12, 2015 1:33 pm

Boot Sector for Windows 1.02 disks

Post by RubyTuesday »

I've been analyzing the boot sector of some dumps of Windows 1.02, and I suspect that the bootloader code is too large to fit in the first sector, and so squeezes the extra code at the end of each FAT table (i.e, there is actually 2 copies of the extra code - once per FAT table).

The first 512 bytes of the disk, and the second 512 bytes of each FAT table is seemingly common, across all disks in my dumps of the Windows 1.02 set, so those bytes don't appear to be related to the files or file fragmentation on the disk.

Am I correct to assume that this extra data in the FAT sectors is extra bootloader code, or is it some weird copy protection scheme?

I'm not sure if it is related, but the Windows Write Disk from 1.02 seems to have traces of files from the Desktop Applications Disk, but I'll document that in another post.

Code: Select all

Offset(d) 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15

//Start of Boot Sector
00000000  EB 2C 90 49 42 4D 20 20 32 2E 30 00 02 02 01 00  ë,.IBM  2.0.....
00000016  02 70 00 D0 02 FD 02 00 09 00 02 00 00 00 00 00  .p.Ð.ý..........
00000032  0A DF 02 25 02 09 2A FF 50 F6 0F 02 CD 19 FA 33  .ß.%..*ÿPö..Í.ú3
00000048  C0 8E D0 BC 00 7C 8E D8 A3 7A 00 C7 06 78 00 21  ÀŽÐ¼.|ŽØ£z.Ç.x.!
00000064  7C FB CD 13 73 03 E9 95 00 0E 1F A0 10 7C 98 F7  |ûÍ.s.é•... .|˜÷
00000080  26 16 7C 03 06 1C 7C 03 06 0E 7C A3 03 7C A3 13  &.|...|...|£.|£.
00000096  7C B8 20 00 F7 26 11 7C 05 FF 01 BB 00 02 F7 F3  |¸ .÷&.|.ÿ.»..÷ó
00000112  01 06 13 7C E8 7E 00 72 B3 A1 13 7C A3 7E 7D B8  ...|è~.r³¡.|£~}¸
00000128  70 00 8E C0 8E D8 BB 00 00 2E A1 13 7C E8 B6 00  p.ŽÀŽØ»...¡.|è¶.
00000144  2E A0 18 7C 2E 2A 06 15 7C FE C0 32 E4 50 B4 02  . .|.*..|þÀ2äP´.
00000160  E8 C1 00 58 72 38 2E 28 06 20 7C 76 0E 2E 01 06  èÁ.Xr8.(. |v....
00000176  13 7C 2E F7 26 0B 7C 03 D8 EB CE 0E 1F CD 11 D0  .|.÷&.|.ØëÎ..Í.Ð
00000192  C0 D0 C0 25 03 00 75 01 40 40 8B C8 F6 06 1E 7C  ÀÐÀ%..u.@@‹Èö..|
00000208  80 75 02 33 C0 8B 1E 7E 7D EA 00 00 70 00 BE C9  €u.3À‹.~}ê..p.¾É
00000224  7D E8 02 00 EB FE 2E AC 24 7F 74 4D B4 0E BB 07  }è..ëþ.¬$.tM´.».
00000240  00 CD 10 EB F1 B8 50 00 8E C0 0E 1F 2E A1 03 7C  .Í.ëñ¸P.ŽÀ...¡.|
00000256  E8 43 00 BB 00 00 B8 01 02 E8 58 00 72 2C 33 FF  èC.»..¸..èX.r,3ÿ
00000272  B9 0B 00 26 80 0D 20 26 80 4D 20 20 47 E2 F4 33  ¹..&€. &€M  Gâô3
00000288  FF BE DF 7D B9 0B 00 FC F3 A6 75 0E BF 20 00 BE  ÿ¾ß}¹..üó¦u.¿ .¾
00000304  EB 7D B9 0B 00 F3 A6 75 01 C3 BE 80 7D E8 A6 FF  ë}¹..ó¦u.þ€}è¦ÿ
00000320  B4 00 CD 16 F9 C3 1E 0E 1F 33 D2 F7 36 18 7C FE  ´.Í.ùÃ...3Ò÷6.|þ
00000336  C2 88 16 15 7C 33 D2 F7 36 1A 7C 88 16 1F 7C A3  ˆ..|3Ò÷6.|ˆ..|£
00000352  08 7C 1F C3 2E 8B 16 08 7C B1 06 D2 E6 2E 0A 36  .|.Ã.‹..|±.Òæ..6
00000368  15 7C 8B CA 86 E9 2E 8B 16 1E 7C CD 13 C3 00 00  .|‹Ê†é.‹..|Í.Ã..
00000384  0D 0A 4E 6F 6E 2D 53 79 73 74 65 6D 20 64 69 73  ..Non-System dis
00000400  6B 20 6F 72 20 64 69 73 6B 20 65 72 72 6F 72 0D  k or disk error.
00000416  0A 52 65 70 6C 61 63 65 20 61 6E 64 20 73 74 72  .Replace and str
00000432  69 6B 65 20 61 6E 79 20 6B 65 79 20 77 68 65 6E  ike any key when
00000448  20 72 65 61 64 79 0D 0A 00 0D 0A 44 69 73 6B 20   ready.....Disk 
00000464  42 6F 6F 74 20 66 61 69 6C 75 72 65 0D 0A 00 69  Boot failure...i
00000480  62 6D 62 69 6F 20 20 63 6F 6D 30 69 62 6D 64 6F  bmbio  com0ibmdo
00000496  73 20 20 63 6F 6D 30 00 00 00 00 00 00 00 55 AA  s  com0.......Uª

//Start of FAT (first copy)
00000512  FD FF FF 03 40 00 FF 6F 00 07 80 00 09 A0 00 0B  ýÿÿ.@.ÿo..€.. ..
00000528  C0 00 0D E0 00 0F 00 01 11 20 01 13 40 01 15 60  À..à..... ..@..`
00000544  01 17 80 01 19 A0 01 1B C0 01 1D E0 01 1F 00 02  ..€.. ..À..à....
00000560  21 20 02 23 40 02 25 60 02 27 80 02 29 A0 02 2B  ! .#@.%`.'€.) .+
00000576  C0 02 2D E0 02 2F 00 03 31 20 03 33 40 03 35 60  À.-à./..1 .3@.5`
00000592  03 37 80 03 39 A0 03 3B C0 03 3D E0 03 3F 00 04  .7€.9 .;À.=à.?..
00000608  41 20 04 43 40 04 45 60 04 47 80 04 49 A0 04 4B  A .C@.E`.G€.I .K
00000624  C0 04 4D E0 04 4F 00 05 51 20 05 53 40 05 55 60  À.Mà.O..Q .S@.U`
00000640  05 57 80 05 59 A0 05 5B C0 05 5D E0 05 5F 00 06  .W€.Y .[À.]à._..
00000656  61 20 06 63 40 06 65 60 06 67 80 06 69 A0 06 6B  a .c@.e`.g€.i .k
00000672  C0 06 6D E0 06 6F 00 07 71 20 07 73 40 07 75 60  À.mà.o..q .s@.u`
00000688  07 77 80 07 79 A0 07 7B C0 07 7D E0 07 7F 00 08  .w€.y .{À.}à....
00000704  81 20 08 83 40 08 85 60 08 87 80 08 89 A0 08 8B  . .ƒ@.…`.‡€.‰ .‹
00000720  C0 08 8D E0 08 8F 00 09 91 20 09 93 40 09 95 60  À..à....‘ .“@.•`
00000736  09 97 80 09 99 A0 09 9B C0 09 9D E0 09 9F 00 0A  .—€.™ .›À..à.Ÿ..
00000752  A1 20 0A A3 40 0A A5 60 0A A7 80 0A A9 A0 0A AB  ¡ .£@.¥`.§€.© .«
00000768  C0 0A AD E0 0A AF 00 0B B1 20 0B B3 40 0B B5 60  À..à.¯..± .³@.µ`
00000784  0B B7 80 0B B9 A0 0B BB C0 0B BD E0 0B BF F0 FF  .·€.¹ .»À.½à.¿ðÿ
00000800  C1 20 0C FF 0F 00 00 00 00 00 00 00 00 00 00 00  Á .ÿ............  //Last FAT cluster specified on this line
00000816  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000832  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000848  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000864  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000880  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000896  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000912  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000928  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000944  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000960  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000976  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000992  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001008  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001024  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001040  00 00 00 00 00 00 5F 5E 83 ED 02 8B E5 1F 5D 4D  ......_^Ē.܌.]M  //Is this extra bootloader code?
00001056  CA 02 00 55 8B EC 83 EC 10 56 57 8B 76 0C 8B 4E  Ê..U‹ìƒì.VW‹v.‹N
00001072  0E 0B 4E 10 75 14 33 D2 33 C9 8B 5E 04 B8 01 42  ..N.u.3Ò3É‹^.¸.B
00001088  CD 21 72 39 89 56 FA 89 46 F8 8B 46 0E 0B C0 75  Í!r9‰Vú‰Fø‹F..Àu
00001104  3C 8B 46 10 0B C0 75 31 8B 4E FA 8B 56 F8 8B 5E  <‹F..Àu1‹Nú‹Vø‹^
00001120  04 B8 00 42 CD 21 72 15 1E 16 1F 8D 56 F0 B9 08  .¸.BÍ!r.....Vð¹.
00001136  00 01 4E F8 83 56 FA 00 B4 3F CD 21 1F 72 72 3B  ..NøƒVú.´?Í!.rr;
00001152  C1 75 6E 16 58 8B F2 EB 04 50 E8 37 F8 8E C0 26  Áun.X‹òë.Pè7øŽÀ&
00001168  8B 7C 02 26 8B 44 06 33 C9 89 4E FC B1 03 26 22  ‹|.&‹D.3ɉNü±.&"
00001184  4C 01 E3 52 26 8B 5C 04 83 EB 01 72 44 D1 E3 06  L.ãR&‹\.ƒë.rDÑã.
00001200  8E 46 12 26 03 1E 28 00 26 8B 1F 07 89 5E FE E2  ŽF.&..(.&‹..‰^þâ
00001216  02 EB 19 FF 76 12 FF 76 04 50 E8 1C F9 FF 76 FE  .ë.ÿv.ÿv.Pè.ùÿvþ
00001232  52 50 E8 45 F5 8B 5E FE 0B C0 74 15 53 50 E8 A1  RPèEõ‹^þ.Àt.SPè¡
00001248  F4 8E C2 26 81 3E 00 00 4E 45 75 5A FF 46 FC EB  ôŽÂ&.>..NEuZÿFüë
00001264  55 33 C0 E9 05 01 26 8A 4C 04 E3 F5 8B 5E 12 80  U3Àé..&ŠL.ãõ‹^.€
00001280  F9 FF 74 D8 8E C3 8B D9 4B 26 39 1E 1C 00 76 E1  ùÿt؎ËÙK&9...vá
00001296  50 D1 E3 8B C3 D1 E3 D1 E3 03 D8 26 03 1E 22 00  PÑã‹ÃÑãÑã.Ø&..".
00001312  26 F6 47 04 40 74 0F 06 53 E8 D6 F8 A8 01 75 11  &öG.@t..SèÖø¨.u.
00001328  50 E8 90 F7 EB 0B 06 51 FF 76 04 FF 76 04 E8 13  Pè.÷ë..Qÿv.ÿv.è.
00001344  FC 8B D0 58 E3 AB 50 52 8B 46 0E 0B C0 75 0B 8C  ü‹ÐXã«PR‹F..Àu.Œ
00001360  D0 8B 4E 10 E3 04 51 E8 6A F7 8E C0 B3 07 26 22  ЋN.ã.Qèj÷ŽÀ³.&"
00001376  1C 33 C9 B1 04 26 22 4C 01 53 51 FF 76 08 E8 53  .3ɱ.&"L.SQÿv.èS
00001392  F7 8E C0 59 5B 5A 58 80 FB 02 74 2E 80 FB 03 74  ÷ŽÀY[ZX€û.t.€û.t
00001408  44 80 FB 05 74 11 B8 01 00 83 C6 08 FF 4E 0A 7E  D€û.t.¸..ƒÆ.ÿN.~
00001424  03 E9 B6 FE EB 65 90 E3 05 26 01 05 EB E8 8B D8  .é¶þëe.ã.&..ëè‹Ø
00001440  26 87 1D 8B FB 43 75 F6 EB DC 8B 5E FC 23 5E 06  &‡.‹ûCuöëÜ‹^ü#^.
00001456  75 2E E3 05 26 01 15 EB CD 8B DA 26 87 1D 8B FB  u.ã.&..ëÍ‹Ú&‡.‹û
00001472  43 75 F6 EB C1 E3 09 26 01 05 26 01 55 02 EB B6  CuöëÁã.&..&.U.ë¶
00001488  8B D8 26 87 1D 26 89 55 02 8B FB 43 75 F2 EB A6  ‹Ø&‡.&‰U.‹ûCuòë¦
00001504  E3 09 26 01 15 26 01 45 FE EB 9B 8B DA 26 87 1D  ã.&..&.Eþ뛋Ú&‡.
00001520  26 89 45 FE 8B FB 43 75 F2 EB 8B 5F 5E 8B E5 5D  &‰Eþ‹ûCuòë‹_^‹å]

//Start of FAT (second copy)
00001536  FD FF FF 03 40 00 FF 6F 00 07 80 00 09 A0 00 0B  ýÿÿ.@.ÿo..€.. ..
00001552  C0 00 0D E0 00 0F 00 01 11 20 01 13 40 01 15 60  À..à..... ..@..`
00001568  01 17 80 01 19 A0 01 1B C0 01 1D E0 01 1F 00 02  ..€.. ..À..à....
00001584  21 20 02 23 40 02 25 60 02 27 80 02 29 A0 02 2B  ! .#@.%`.'€.) .+
00001600  C0 02 2D E0 02 2F 00 03 31 20 03 33 40 03 35 60  À.-à./..1 .3@.5`
00001616  03 37 80 03 39 A0 03 3B C0 03 3D E0 03 3F 00 04  .7€.9 .;À.=à.?..
00001632  41 20 04 43 40 04 45 60 04 47 80 04 49 A0 04 4B  A .C@.E`.G€.I .K
00001648  C0 04 4D E0 04 4F 00 05 51 20 05 53 40 05 55 60  À.Mà.O..Q .S@.U`
00001664  05 57 80 05 59 A0 05 5B C0 05 5D E0 05 5F 00 06  .W€.Y .[À.]à._..
00001680  61 20 06 63 40 06 65 60 06 67 80 06 69 A0 06 6B  a .c@.e`.g€.i .k
00001696  C0 06 6D E0 06 6F 00 07 71 20 07 73 40 07 75 60  À.mà.o..q .s@.u`
00001712  07 77 80 07 79 A0 07 7B C0 07 7D E0 07 7F 00 08  .w€.y .{À.}à....
00001728  81 20 08 83 40 08 85 60 08 87 80 08 89 A0 08 8B  . .ƒ@.…`.‡€.‰ .‹
00001744  C0 08 8D E0 08 8F 00 09 91 20 09 93 40 09 95 60  À..à....‘ .“@.•`
00001760  09 97 80 09 99 A0 09 9B C0 09 9D E0 09 9F 00 0A  .—€.™ .›À..à.Ÿ..
00001776  A1 20 0A A3 40 0A A5 60 0A A7 80 0A A9 A0 0A AB  ¡ .£@.¥`.§€.© .«
00001792  C0 0A AD E0 0A AF 00 0B B1 20 0B B3 40 0B B5 60  À..à.¯..± .³@.µ`
00001808  0B B7 80 0B B9 A0 0B BB C0 0B BD E0 0B BF F0 FF  .·€.¹ .»À.½à.¿ðÿ
00001824  C1 20 0C FF 0F 00 00 00 00 00 00 00 00 00 00 00  Á .ÿ............  //Last FAT cluster specified on this line
00001840  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001856  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001872  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001888  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001904  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001920  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001936  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001952  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001968  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00001984  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00002000  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00002016  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00002032  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00002048  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00002064  00 00 00 00 00 00 5F 5E 83 ED 02 8B E5 1F 5D 4D  ......_^Ē.܌.]M  //Is this extra bootloader code?
00002080  CA 02 00 55 8B EC 83 EC 10 56 57 8B 76 0C 8B 4E  Ê..U‹ìƒì.VW‹v.‹N
00002096  0E 0B 4E 10 75 14 33 D2 33 C9 8B 5E 04 B8 01 42  ..N.u.3Ò3É‹^.¸.B
00002112  CD 21 72 39 89 56 FA 89 46 F8 8B 46 0E 0B C0 75  Í!r9‰Vú‰Fø‹F..Àu
00002128  3C 8B 46 10 0B C0 75 31 8B 4E FA 8B 56 F8 8B 5E  <‹F..Àu1‹Nú‹Vø‹^
00002144  04 B8 00 42 CD 21 72 15 1E 16 1F 8D 56 F0 B9 08  .¸.BÍ!r.....Vð¹.
00002160  00 01 4E F8 83 56 FA 00 B4 3F CD 21 1F 72 72 3B  ..NøƒVú.´?Í!.rr;
00002176  C1 75 6E 16 58 8B F2 EB 04 50 E8 37 F8 8E C0 26  Áun.X‹òë.Pè7øŽÀ&
00002192  8B 7C 02 26 8B 44 06 33 C9 89 4E FC B1 03 26 22  ‹|.&‹D.3ɉNü±.&"
00002208  4C 01 E3 52 26 8B 5C 04 83 EB 01 72 44 D1 E3 06  L.ãR&‹\.ƒë.rDÑã.
00002224  8E 46 12 26 03 1E 28 00 26 8B 1F 07 89 5E FE E2  ŽF.&..(.&‹..‰^þâ
00002240  02 EB 19 FF 76 12 FF 76 04 50 E8 1C F9 FF 76 FE  .ë.ÿv.ÿv.Pè.ùÿvþ
00002256  52 50 E8 45 F5 8B 5E FE 0B C0 74 15 53 50 E8 A1  RPèEõ‹^þ.Àt.SPè¡
00002272  F4 8E C2 26 81 3E 00 00 4E 45 75 5A FF 46 FC EB  ôŽÂ&.>..NEuZÿFüë
00002288  55 33 C0 E9 05 01 26 8A 4C 04 E3 F5 8B 5E 12 80  U3Àé..&ŠL.ãõ‹^.€
00002304  F9 FF 74 D8 8E C3 8B D9 4B 26 39 1E 1C 00 76 E1  ùÿt؎ËÙK&9...vá
00002320  50 D1 E3 8B C3 D1 E3 D1 E3 03 D8 26 03 1E 22 00  PÑã‹ÃÑãÑã.Ø&..".
00002336  26 F6 47 04 40 74 0F 06 53 E8 D6 F8 A8 01 75 11  &öG.@t..SèÖø¨.u.
00002352  50 E8 90 F7 EB 0B 06 51 FF 76 04 FF 76 04 E8 13  Pè.÷ë..Qÿv.ÿv.è.
00002368  FC 8B D0 58 E3 AB 50 52 8B 46 0E 0B C0 75 0B 8C  ü‹ÐXã«PR‹F..Àu.Œ
00002384  D0 8B 4E 10 E3 04 51 E8 6A F7 8E C0 B3 07 26 22  ЋN.ã.Qèj÷ŽÀ³.&"
00002400  1C 33 C9 B1 04 26 22 4C 01 53 51 FF 76 08 E8 53  .3ɱ.&"L.SQÿv.èS
00002416  F7 8E C0 59 5B 5A 58 80 FB 02 74 2E 80 FB 03 74  ÷ŽÀY[ZX€û.t.€û.t
00002432  44 80 FB 05 74 11 B8 01 00 83 C6 08 FF 4E 0A 7E  D€û.t.¸..ƒÆ.ÿN.~
00002448  03 E9 B6 FE EB 65 90 E3 05 26 01 05 EB E8 8B D8  .é¶þëe.ã.&..ëè‹Ø
00002464  26 87 1D 8B FB 43 75 F6 EB DC 8B 5E FC 23 5E 06  &‡.‹ûCuöëÜ‹^ü#^.
00002480  75 2E E3 05 26 01 15 EB CD 8B DA 26 87 1D 8B FB  u.ã.&..ëÍ‹Ú&‡.‹û
00002496  43 75 F6 EB C1 E3 09 26 01 05 26 01 55 02 EB B6  CuöëÁã.&..&.U.ë¶
00002512  8B D8 26 87 1D 26 89 55 02 8B FB 43 75 F2 EB A6  ‹Ø&‡.&‰U.‹ûCuòë¦
00002528  E3 09 26 01 15 26 01 45 FE EB 9B 8B DA 26 87 1D  ã.&..&.Eþ뛋Ú&‡.
00002544  26 89 45 FE 8B FB 43 75 F2 EB 8B 5F 5E 8B E5 5D  &‰Eþ‹ûCuòë‹_^‹å]

//Start of Root Dir listing
00002560  57 52 49 54 45 20 20 20 20 20 20 28 00 00 00 00  WRITE      (....
00002576  00 00 00 00 00 00 87 8D 2F 0C 00 00 00 00 00 00  ......‡./.......
00002592  52 45 41 44 4D 45 20 20 44 4F 43 20 00 00 00 00  README  DOC ....
00002608  00 00 00 00 00 00 03 90 2F 0C 02 00 6A 0B 00 00  ......../...j...
00002624  57 52 49 54 45 20 20 20 45 58 45 20 00 00 00 00  WRITE   EXE ....
00002640  00 00 00 00 00 00 03 90 2F 0C 05 00 00 EB 02 00  ......../....ë..
00002656  50 52 41 43 54 49 43 45 44 4F 43 20 00 00 00 00  PRACTICEDOC ....
00002672  00 00 00 00 00 00 03 90 2F 0C C0 00 80 0B 00 00  ......../.À.€...
00002688  00 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6  .ööööööööööööööö
00002704  F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6 F6  öööööööööööööööö
...

os2fan2
User avatar
Donator
Posts: 1394
Joined: Sun Dec 30, 2007 8:12 am
Location: Brisbane, Queensland
Contact:

Re: Boot Sector for Windows 1.02 disks

Post by os2fan2 »

Have a look at this thread http://www.betaarchive.com/forum/viewto ... xx#p384728 It is a rexx script that replaces the first 32 bits of the boot sector. The bulk of the boot block is the loader program, but the first 32 bits is the describer table.

The first sector is the boot block, put there by format. It's a little programkin that searches the floppy for the named files, and loads that.

The bit that you query as 'extra boot code' is actually the 'file allocation table'. The entry in the directory points to the first sector, and the chain of sectors is to be found in this table.

In the early days, it did appear that the master diskettes for various proggies were just 'reformatted' diskettes, and this have deleted files on them. It is certainly true that there is some interesting stuff in the deleted space on the pcdos 1.1 diskettes.

vicvan
Posts: 123
Joined: Thu Jan 01, 2015 8:50 pm

Re: Boot Sector for Windows 1.02 disks

Post by vicvan »

At least, there is no copy protection on each disks.

Also you can see some interesting stuff on Windows 1.01 end user version with boot sector of IBM 2.0
Last edited by vicvan on Mon Mar 02, 2015 4:17 pm, edited 1 time in total.

Battler
User avatar
Donator
Posts: 2117
Joined: Sat Aug 19, 2006 8:13 am
Location: Slovenia, Central Europe.
Contact:

Re: Boot Sector for Windows 1.02 disks

Post by Battler »

- os2fan2: Look carefully. The marked parts don't look like FAT at all. If read as FAT data, they would point to way too high allocation units. I think it really is some kind of code.
Main developer of the 86Box emulator.
Join the 86Box Discord server, a nice community for true enthusiasts and 86Box supports!

The anime channel is on the Ring of Lightning Discord server.

Check out our SoftHistory Forum for quality discussion about older software.

JustZisGuy
Posts: 271
Joined: Wed Dec 11, 2013 3:24 am

Re: Boot Sector for Windows 1.02 disks

Post by JustZisGuy »

Early disk formatters and disk tools did not always zero their buffers before using them. As a result you can wind up with random "garbage" in some places. On a 360K disk a FAT is allocated two sectors, but does not use all of the bytes in each sector. As the formatter formatted and checked for bad sectors, it only wrote bytes used by the FAT against a dirty RAM memory buffer, and when finished wrote that buffer to disk.

In this case the "garbage" is likely data or code left in memory from whatever program was run prior to the formatter.

You will also find similar memory buffer "garbage" at the end of files where the tail end of the file does not fill an entire cluster.

vicvan
Posts: 123
Joined: Thu Jan 01, 2015 8:50 pm

Re: Boot Sector for Windows 1.02 disks

Post by vicvan »

@JustZisGuy

Oh, you seem to explain very well, thanks.
Yes, that's what I want to say.

Threat
Donator
Posts: 87
Joined: Mon Feb 24, 2014 3:00 pm

Re: Boot Sector for Windows 1.02 disks

Post by Threat »

It is left over code.

Not all of it disassembled well, but you can clearly see there is x86 code in there.

Code: Select all

      .data:0x00000000 0000 add    BYTE PTR [eax],al 
  

      .data:0x00000002 0000 add    BYTE PTR [eax],al 
  

      .data:0x00000004 0000 add    BYTE PTR [eax],al 
  

      .data:0x00000006 5f pop    edi 
  

      .data:0x00000007 5e pop    esi 
  

      .data:0x00000008 83ed02 sub    ebp,0x2 
  

      .data:0x0000000b 8be5 mov    esp,ebp 
  

      .data:0x0000000d 1f pop    ds 
; char* dst = arg[0] 

      .data:0x0000000e 5d pop    ebp 
  

      .data:0x0000000f 4d dec    ebp 
  

      .data:0x00000010 ca0200 retf   0x2 
; char c = src[i] 

      .data:0x00000013 55 push   ebp 
  

      .data:0x00000014 8bec mov    ebp,esp 
; dst[i] = c 

      .data:0x00000016 83ec10 sub    esp,0x10 
  

      .data:0x00000019 56 push   esi 
  

      .data:0x0000001a 57 push   edi 
  

      .data:0x0000001b 8b760c mov    esi,DWORD PTR [esi+0xc] 
; while (c != 0) 

      .data:0x0000001e 8b4e0e mov    ecx,DWORD PTR [esi+0xe] 
  

      .data:0x00000021 0b4e10 or     ecx,DWORD PTR [esi+0x10] 
  

   ┏  .data:0x00000024 7514 jne    loc_0000003a 
  

   ┃  .data:0x00000026 33d2 xor    edx,edx 
  

   ┃  .data:0x00000028 33c9 xor    ecx,ecx 
  

   ┃  .data:0x0000002a 8b5e04 mov    ebx,DWORD PTR [esi+0x4] 
  

   ┃  .data:0x0000002d b80142cd21 mov    eax,0x21cd4201 
  

 ┏━╋  .data:0x00000032 7239 jb     loc_0000006d 
  

 ┃ ┃  .data:0x00000034 8956fa mov    DWORD PTR [esi-0x6],edx 
  

 ┃ ┃  .data:0x00000037 8946f8 mov    DWORD PTR [esi-0x8],eax 
  

 ┃ ┃  .data:0x0000003a    
 ┃ ┃  .data:0x0000003a  loc_0000003a:  
 ┃ ┗▶ .data:0x0000003a 8b460e mov    eax,DWORD PTR [esi+0xe] 
  

 ┃    .data:0x0000003d 0bc0 or     eax,eax 
  

 ┃    .data:0x0000003f 753c jne    0x0000007d 
  

 ┃    .data:0x00000041 8b4610 mov    eax,DWORD PTR [esi+0x10] 
  

 ┃    .data:0x00000044 0bc0 or     eax,eax 
  

 ┃┏━  .data:0x00000046 7531 jne    loc_00000079 
  

 ┃┃   .data:0x00000048 8b4efa mov    ecx,DWORD PTR [esi-0x6] 
  

 ┃┃   .data:0x0000004b 8b56f8 mov    edx,DWORD PTR [esi-0x8] 
  

 ┃┃   .data:0x0000004e 8b5e04 mov    ebx,DWORD PTR [esi+0x4] 
  

 ┃┃   .data:0x00000051 b80042cd21 mov    eax,0x21cd4200 
  

 ┣╋━  .data:0x00000056 7215 jb     loc_0000006d 
  

 ┃┃   .data:0x00000058 1e push   ds 
  

 ┃┃   .data:0x00000059 16 push   ss 
  

 ┃┃   .data:0x0000005a 1f pop    ds 
  

 ┃┃   .data:0x0000005b 8d56f0 lea    edx,[esi-0x10] 
  

 ┃┃   .data:0x0000005e b90800014e mov    ecx,0x4e010008 
  

 ┃┃   .data:0x00000063 f8 clc 
  

 ┃┃   .data:0x00000064 8356fa00 adc    DWORD PTR [esi-0x6],0x0 
  

 ┃┃   .data:0x00000068 b43f mov    ah,0x3f 
  

 ┃┃   .data:0x0000006a cd21 int    0x21 
  

 ┃┃   .data:0x0000006c 1f pop    ds 
  

 ┃┃   .data:0x0000006d    
 ┃┃   .data:0x0000006d  loc_0000006d:  
 ┗╋┳▶ .data:0x0000006d 7272 jb     loc_000000e1 
  

  ┃┃  .data:0x0000006f 3bc1 cmp    eax,ecx 
  

  ┃┣  .data:0x00000071 756e jne    loc_000000e1 
  

  ┃┃  .data:0x00000073 16 push   ss 
  

  ┃┃  .data:0x00000074 58 pop    eax 
  

  ┃┃  .data:0x00000075 8bf2 mov    esi,edx 
  

  ┃┃  .data:0x00000077 eb04 jmp    0x0000007d 
  

  ┃┃  .data:0x00000079    
  ┃┃  .data:0x00000079  loc_00000079:  
  ┗╋▶ .data:0x00000079 50 push   eax 
  

   ┃  .data:0x0000007a e837f88ec0 call   func_c08ef8b6 
  

   ┃  .data:0x0000007f 268b7c0226 mov    edi,DWORD PTR es:[edx+eax*1+0x26] 
  

   ┃  .data:0x00000084 8b440633 mov    eax,DWORD PTR [esi+eax*1+0x33] 
  

   ┃  .data:0x00000088 c9 leave 
  

   ┃  .data:0x00000089 894efc mov    DWORD PTR [esi-0x4],ecx 
  

   ┃  .data:0x0000008c b103 mov    cl,0x3 
  

   ┃  .data:0x0000008e 26224c01e3 and    cl,BYTE PTR es:[ecx+eax*1-0x1d] 
  

   ┃  .data:0x00000093 52 push   edx 
  

   ┃  .data:0x00000094 268b5c0483 mov    ebx,DWORD PTR es:[esp+eax*1-0x7d] 
  

   ┃  .data:0x00000099 eb01 jmp    0x0000009c 
  

   ┣  .data:0x0000009b 7244 jb     loc_000000e1 
  

   ┃  .data:0x0000009d d1e3 shl    ebx,1 
  

   ┃  .data:0x0000009f 06 push   es 
  

   ┃  .data:0x000000a0 8e4612 mov    es,WORD PTR [esi+0x12] 
  

   ┃  .data:0x000000a3 26031e add    ebx,DWORD PTR es:[esi] 
  

   ┃  .data:0x000000a6 2800 sub    BYTE PTR [eax],al 
  

   ┃  .data:0x000000a8 268b1f mov    ebx,DWORD PTR es:[edi] 
  

   ┃  .data:0x000000ab 07 pop    es 
  

   ┃  .data:0x000000ac 895efe mov    DWORD PTR [esi-0x2],ebx 
  

   ┃  .data:0x000000af e202 loop   0x000000b3 
  

  ┏╋  .data:0x000000b1 eb19 jmp    loc_000000cc 
  

  ┃┃  .data:0x000000b3 ff7612 push   DWORD PTR [esi+0x12] 
  

  ┃┃  .data:0x000000b6 ff7604 push   DWORD PTR [esi+0x4] 
  

  ┃┃  .data:0x000000b9 50 push   eax 
  

  ┃┃  .data:0x000000ba e81cf9ff76 call   func_76fff9db 
  

  ┃┃  .data:0x000000c0 52 push   edx 
  

  ┃┃  .data:0x000000c1 50 push   eax 
  

  ┃┃  .data:0x000000c2 e845f58b5e call   func_5e8bf60c 
  

  ┃┃  .data:0x000000c7 fe0b dec    BYTE PTR [ebx] 
  

  ┃┣  .data:0x000000ca 7415 je     loc_000000e1 
  

  ┃┃  .data:0x000000cc    
  ┃┃  .data:0x000000cc  loc_000000cc:  
  ┣╋▶ .data:0x000000cc 53 push   ebx 
  

  ┃┃  .data:0x000000cd 50 push   eax 
  

  ┃┃  .data:0x000000ce e8a1f48ec2 call   func_c28ef574 
  

  ┃┃  .data:0x000000d3 26813e00004e45 cmp    DWORD PTR es:[esi],0x454e0000 
  

┏━╋╋  .data:0x000000da 755a jne    loc_00000136 
  

┃ ┃┃  .data:0x000000dc ff46fc inc    DWORD PTR [esi-0x4] 
  

┣━╋╋  .data:0x000000df eb55 jmp    loc_00000136 
  

┃ ┃┃  .data:0x000000e1    
┃ ┃┃  .data:0x000000e1  loc_000000e1:  
┃┏╋┻▶ .data:0x000000e1 33c0 xor    eax,eax 
  

┃┃┃   .data:0x000000e3 e90501268a jmp    0x8a2601ed 
  

┃┃┃   .data:0x000000e8 4c dec    esp 
  

┃┃┃   .data:0x000000e9 04e3 add    al,0xe3 
  

┃┃┃   .data:0x000000eb f5 cmc 
  

┃┃┃   .data:0x000000ec 8b5e12 mov    ebx,DWORD PTR [esi+0x12] 
  

┃┃┃   .data:0x000000ef 80f9ff cmp    cl,0xff 
  

┃┃┗━  .data:0x000000f2 74d8 je     loc_000000cc 
  

┃┃    .data:0x000000f4 8ec3 mov    es,ebx 
  

┃┃    .data:0x000000f6 8bd9 mov    ebx,ecx 
  

┃┃    .data:0x000000f8 4b dec    ebx 
  

┃┃    .data:0x000000f9 26391e cmp    DWORD PTR es:[esi],ebx 
  

┃┃    .data:0x000000fc 1c00 sbb    al,0x0 
  

┃┣━━  .data:0x000000fe 76e1 jbe    loc_000000e1 
  

┃┃    .data:0x00000100 50 push   eax 
  

┃┃    .data:0x00000101 d1e3 shl    ebx,1 
  

┃┃    .data:0x00000103 8bc3 mov    eax,ebx 
  

┃┃    .data:0x00000105 d1e3 shl    ebx,1 
  

┃┃    .data:0x00000107 d1e3 shl    ebx,1 
  

┃┃    .data:0x00000109 03d8 add    ebx,eax 
  

┃┃    .data:0x0000010b 26031e add    ebx,DWORD PTR es:[esi] 
  

┃┃    .data:0x0000010e 2200 and    al,BYTE PTR [eax] 
  

┃┃    .data:0x00000110 26f6470440 test   BYTE PTR es:[edi+0x4],0x40 
  

┃┃ ┏  .data:0x00000115 740f je     loc_00000126 
  

┃┃ ┃  .data:0x00000117 06 push   es 
  

┃┃ ┃  .data:0x00000118 53 push   ebx 
  

┃┃ ┃  .data:0x00000119 e8d6f8a801 call   func_01a8f9f4 
  

┃┃ ┃  .data:0x0000011e 7511 jne    0x00000131 
  

┃┃ ┃  .data:0x00000120 50 push   eax 
  

┃┃ ┃  .data:0x00000121 e890f7eb0b call   func_0bebf8b6 
  

┃┃ ┃  .data:0x00000126    
┃┃ ┃  .data:0x00000126  loc_00000126:  
┃┃ ┗▶ .data:0x00000126 06 push   es 
  

┃┃    .data:0x00000127 51 push   ecx 
  

┃┃    .data:0x00000128 ff7604 push   DWORD PTR [esi+0x4] 
  

┃┃    .data:0x0000012b ff7604 push   DWORD PTR [esi+0x4] 
  

┃┃    .data:0x0000012e e813fc8bd0 call   func_d08bfd46 
  

┃┃    .data:0x00000133 58 pop    eax 
  

┃┗━━  .data:0x00000134 e3ab jecxz  loc_000000e1 
  

┃     .data:0x00000136    
┃     .data:0x00000136  loc_00000136:  
┗━━━▶ .data:0x00000136 50 push   eax 
  

      .data:0x00000137 52 push   edx 
  

      .data:0x00000138 8b460e mov    eax,DWORD PTR [esi+0xe] 
  

      .data:0x0000013b 0bc0 or     eax,eax 
  

      .data:0x0000013d 750b jne    0x0000014a 
  

      .data:0x0000013f 8cd0 mov    eax,ss 
  

      .data:0x00000141 8b4e10 mov    ecx,DWORD PTR [esi+0x10] 
  

      .data:0x00000144 e304 jecxz  0x0000014a 
  

      .data:0x00000146 51 push   ecx 
  

      .data:0x00000147 e86af78ec0 call   func_c08ef8b6 
  

      .data:0x0000014c b307 mov    bl,0x7 
  

      .data:0x0000014e 26221c33 and    bl,BYTE PTR es:[ebx+esi*1] 
  

      .data:0x00000152 c9 leave 
  

      .data:0x00000153 b104 mov    cl,0x4 
  

      .data:0x00000155 26224c0153 and    cl,BYTE PTR es:[ecx+eax*1+0x53] 
  

      .data:0x0000015a 51 push   ecx 
  

      .data:0x0000015b ff7608 push   DWORD PTR [esi+0x8] 
  

      .data:0x0000015e e853f78ec0 call   func_c08ef8b6 
  

      .data:0x00000163 59 pop    ecx 
  

      .data:0x00000164 5b pop    ebx 
  

      .data:0x00000165 5a pop    edx 
  

      .data:0x00000166 58 pop    eax 
  

      .data:0x00000167 80fb02 cmp    bl,0x2 
  

      .data:0x0000016a 742e je     0x0000019a 
  

      .data:0x0000016c 80fb03 cmp    bl,0x3 
  

      .data:0x0000016f 7444 je     0x000001b5 
  

      .data:0x00000171 80fb05 cmp    bl,0x5 
  

   ┏  .data:0x00000174 7411 je     loc_00000187 
  

   ┃  .data:0x00000176    
   ┃  .data:0x00000176  loc_00000176:  
 ┏━╋▶ .data:0x00000176 b8010083c6 mov    eax,0xc6830001 
  

 ┃ ┃  .data:0x0000017b 08ff or     bh,bh 
  

 ┃ ┃  .data:0x0000017d 4e dec    esi 
  

 ┃ ┃  .data:0x0000017e 0a7e03 or     bh,BYTE PTR [esi+0x3] 
  

 ┃ ┃  .data:0x00000181 e9b6feeb65 jmp    0x65ec003c 
  

 ┃ ┃  .data:0x00000186 90 nop 
  

 ┃ ┃  .data:0x00000187    
 ┃ ┃  .data:0x00000187  loc_00000187:  
 ┃ ┗▶ .data:0x00000187 e305 jecxz  0x0000018e 
  

 ┃    .data:0x00000189 260105ebe88bd8 add    DWORD PTR es:0xd88be8eb,eax 
  

 ┃    .data:0x00000190 26871d8bfb4375 xchg   DWORD PTR es:0x7543fb8b,ebx 
  

 ┃    .data:0x00000197 f6eb imul   bl 
  

 ┃    .data:0x00000199 dc8b5efc235e fmul   QWORD PTR [ebx+0x5e23fc5e] 
  

 ┃    .data:0x0000019f 06 push   es 
  

 ┃┏━  .data:0x000001a0 752e jne    loc_000001d0 
  

 ┃┃   .data:0x000001a2 e305 jecxz  0x000001a9 
  

 ┃┃   .data:0x000001a4 260115ebcd8bda add    DWORD PTR es:0xda8bcdeb,edx 
  

 ┃┃   .data:0x000001ab 26871d8bfb4375 xchg   DWORD PTR es:0x7543fb8b,ebx 
  

 ┃┃   .data:0x000001b2 f6eb imul   bl 
  

 ┃┃   .data:0x000001b4 c1e309 shl    ebx,0x9 
  

 ┃┃   .data:0x000001b7 26010526015502 add    DWORD PTR es:0x2550126,eax 
  

 ┣╋━  .data:0x000001be ebb6 jmp    loc_00000176 
  

 ┃┃   .data:0x000001c0    
 ┃┃   .data:0x000001c0  loc_000001c0:  
 ┃┃┏▶ .data:0x000001c0 8bd8 mov    ebx,eax 
  

 ┃┃┃  .data:0x000001c2 26871d26895502 xchg   DWORD PTR es:0x2558926,ebx 
  

 ┃┃┃  .data:0x000001c9 8bfb mov    edi,ebx 
  

 ┃┃┃  .data:0x000001cb 43 inc    ebx 
  

 ┃┃┗  .data:0x000001cc 75f2 jne    loc_000001c0 
  

 ┣╋━  .data:0x000001ce eba6 jmp    loc_00000176 
  

 ┃┃   .data:0x000001d0    
 ┃┃   .data:0x000001d0  loc_000001d0:  
 ┃┗┳▶ .data:0x000001d0 e309 jecxz  loc_000001db 
  

 ┃ ┃  .data:0x000001d2 260115260145fe add    DWORD PTR es:0xfe450126,edx 
  

 ┣━╋  .data:0x000001d9 eb9b jmp    loc_00000176 
  

 ┃ ┃  .data:0x000001db    
 ┃ ┃  .data:0x000001db  loc_000001db:  
 ┃ ┣▶ .data:0x000001db 8bda mov    ebx,edx 
  

 ┃ ┃  .data:0x000001dd 26871d268945fe xchg   DWORD PTR es:0xfe458926,ebx 
  

 ┃ ┃  .data:0x000001e4 8bfb mov    edi,ebx 
  

 ┃ ┃  .data:0x000001e6 43 inc    ebx 
  

 ┃ ┗  .data:0x000001e7 75f2 jne    loc_000001db 
  

 ┗━━  .data:0x000001e9 eb8b jmp    loc_00000176 
  

      .data:0x000001eb 5f pop    edi 
  

      .data:0x000001ec 5e pop    esi 
  

      .data:0x000001ed 8be5 mov    esp,ebp 
  

      .data:0x000001ef 5d pop    ebp 
  


      .data:0x00000000 0000 add    BYTE PTR [eax],al 
  

      .data:0x00000002 0000 add    BYTE PTR [eax],al 
  

      .data:0x00000004 0000 add    BYTE PTR [eax],al 
  

      .data:0x00000006 5f pop    edi 
  

      .data:0x00000007 5e pop    esi 
  

      .data:0x00000008 83ed02 sub    ebp,0x2 
  

      .data:0x0000000b 8be5 mov    esp,ebp 
  

      .data:0x0000000d 1f pop    ds 
; char* dst = arg[0] 

      .data:0x0000000e 5d pop    ebp 
  

      .data:0x0000000f 4d dec    ebp 
  

      .data:0x00000010 ca0200 retf   0x2 
; char c = src[i] 

      .data:0x00000013 55 push   ebp 
  

      .data:0x00000014 8bec mov    ebp,esp 
; dst[i] = c 

      .data:0x00000016 83ec10 sub    esp,0x10 
  

      .data:0x00000019 56 push   esi 
  

      .data:0x0000001a 57 push   edi 
  

      .data:0x0000001b 8b760c mov    esi,DWORD PTR [esi+0xc] 
; while (c != 0) 

      .data:0x0000001e 8b4e0e mov    ecx,DWORD PTR [esi+0xe] 
  

      .data:0x00000021 0b4e10 or     ecx,DWORD PTR [esi+0x10] 
  

   ┏  .data:0x00000024 7514 jne    loc_0000003a 
  

   ┃  .data:0x00000026 33d2 xor    edx,edx 
  

   ┃  .data:0x00000028 33c9 xor    ecx,ecx 
  

   ┃  .data:0x0000002a 8b5e04 mov    ebx,DWORD PTR [esi+0x4] 
  

   ┃  .data:0x0000002d b80142cd21 mov    eax,0x21cd4201 
  

 ┏━╋  .data:0x00000032 7239 jb     loc_0000006d 
  

 ┃ ┃  .data:0x00000034 8956fa mov    DWORD PTR [esi-0x6],edx 
  

 ┃ ┃  .data:0x00000037 8946f8 mov    DWORD PTR [esi-0x8],eax 
  

 ┃ ┃  .data:0x0000003a    
 ┃ ┃  .data:0x0000003a  loc_0000003a:  
 ┃ ┗▶ .data:0x0000003a 8b460e mov    eax,DWORD PTR [esi+0xe] 
  

 ┃    .data:0x0000003d 0bc0 or     eax,eax 
  

 ┃    .data:0x0000003f 753c jne    0x0000007d 
  

 ┃    .data:0x00000041 8b4610 mov    eax,DWORD PTR [esi+0x10] 
  

 ┃    .data:0x00000044 0bc0 or     eax,eax 
  

 ┃┏━  .data:0x00000046 7531 jne    loc_00000079 
  

 ┃┃   .data:0x00000048 8b4efa mov    ecx,DWORD PTR [esi-0x6] 
  

 ┃┃   .data:0x0000004b 8b56f8 mov    edx,DWORD PTR [esi-0x8] 
  

 ┃┃   .data:0x0000004e 8b5e04 mov    ebx,DWORD PTR [esi+0x4] 
  

 ┃┃   .data:0x00000051 b80042cd21 mov    eax,0x21cd4200 
  

 ┣╋━  .data:0x00000056 7215 jb     loc_0000006d 
  

 ┃┃   .data:0x00000058 1e push   ds 
  

 ┃┃   .data:0x00000059 16 push   ss 
  

 ┃┃   .data:0x0000005a 1f pop    ds 
  

 ┃┃   .data:0x0000005b 8d56f0 lea    edx,[esi-0x10] 
  

 ┃┃   .data:0x0000005e b90800014e mov    ecx,0x4e010008 
  

 ┃┃   .data:0x00000063 f8 clc 
  

 ┃┃   .data:0x00000064 8356fa00 adc    DWORD PTR [esi-0x6],0x0 
  

 ┃┃   .data:0x00000068 b43f mov    ah,0x3f 
  

 ┃┃   .data:0x0000006a cd21 int    0x21 
  

 ┃┃   .data:0x0000006c 1f pop    ds 
  

 ┃┃   .data:0x0000006d    
 ┃┃   .data:0x0000006d  loc_0000006d:  
 ┗╋┳▶ .data:0x0000006d 7272 jb     loc_000000e1 
  

  ┃┃  .data:0x0000006f 3bc1 cmp    eax,ecx 
  

  ┃┣  .data:0x00000071 756e jne    loc_000000e1 
  

  ┃┃  .data:0x00000073 16 push   ss 
  

  ┃┃  .data:0x00000074 58 pop    eax 
  

  ┃┃  .data:0x00000075 8bf2 mov    esi,edx 
  

  ┃┃  .data:0x00000077 eb04 jmp    0x0000007d 
  

  ┃┃  .data:0x00000079    
  ┃┃  .data:0x00000079  loc_00000079:  
  ┗╋▶ .data:0x00000079 50 push   eax 
  

   ┃  .data:0x0000007a e837f88ec0 call   func_c08ef8b6 
  

   ┃  .data:0x0000007f 268b7c0226 mov    edi,DWORD PTR es:[edx+eax*1+0x26] 
  

   ┃  .data:0x00000084 8b440633 mov    eax,DWORD PTR [esi+eax*1+0x33] 
  

   ┃  .data:0x00000088 c9 leave 
  

   ┃  .data:0x00000089 894efc mov    DWORD PTR [esi-0x4],ecx 
  

   ┃  .data:0x0000008c b103 mov    cl,0x3 
  

   ┃  .data:0x0000008e 26224c01e3 and    cl,BYTE PTR es:[ecx+eax*1-0x1d] 
  

   ┃  .data:0x00000093 52 push   edx 
  

   ┃  .data:0x00000094 268b5c0483 mov    ebx,DWORD PTR es:[esp+eax*1-0x7d] 
  

   ┃  .data:0x00000099 eb01 jmp    0x0000009c 
  

   ┣  .data:0x0000009b 7244 jb     loc_000000e1 
  

   ┃  .data:0x0000009d d1e3 shl    ebx,1 
  

   ┃  .data:0x0000009f 06 push   es 
  

   ┃  .data:0x000000a0 8e4612 mov    es,WORD PTR [esi+0x12] 
  

   ┃  .data:0x000000a3 26031e add    ebx,DWORD PTR es:[esi] 
  

   ┃  .data:0x000000a6 2800 sub    BYTE PTR [eax],al 
  

   ┃  .data:0x000000a8 268b1f mov    ebx,DWORD PTR es:[edi] 
  

   ┃  .data:0x000000ab 07 pop    es 
  

   ┃  .data:0x000000ac 895efe mov    DWORD PTR [esi-0x2],ebx 
  

   ┃  .data:0x000000af e202 loop   0x000000b3 
  

  ┏╋  .data:0x000000b1 eb19 jmp    loc_000000cc 
  

  ┃┃  .data:0x000000b3 ff7612 push   DWORD PTR [esi+0x12] 
  

  ┃┃  .data:0x000000b6 ff7604 push   DWORD PTR [esi+0x4] 
  

  ┃┃  .data:0x000000b9 50 push   eax 
  

  ┃┃  .data:0x000000ba e81cf9ff76 call   func_76fff9db 
  

  ┃┃  .data:0x000000c0 52 push   edx 
  

  ┃┃  .data:0x000000c1 50 push   eax 
  

  ┃┃  .data:0x000000c2 e845f58b5e call   func_5e8bf60c 
  

  ┃┃  .data:0x000000c7 fe0b dec    BYTE PTR [ebx] 
  

  ┃┣  .data:0x000000ca 7415 je     loc_000000e1 
  

  ┃┃  .data:0x000000cc    
  ┃┃  .data:0x000000cc  loc_000000cc:  
  ┣╋▶ .data:0x000000cc 53 push   ebx 
  

  ┃┃  .data:0x000000cd 50 push   eax 
  

  ┃┃  .data:0x000000ce e8a1f48ec2 call   func_c28ef574 
  

  ┃┃  .data:0x000000d3 26813e00004e45 cmp    DWORD PTR es:[esi],0x454e0000 
  

┏━╋╋  .data:0x000000da 755a jne    loc_00000136 
  

┃ ┃┃  .data:0x000000dc ff46fc inc    DWORD PTR [esi-0x4] 
  

┣━╋╋  .data:0x000000df eb55 jmp    loc_00000136 
  

┃ ┃┃  .data:0x000000e1    
┃ ┃┃  .data:0x000000e1  loc_000000e1:  
┃┏╋┻▶ .data:0x000000e1 33c0 xor    eax,eax 
  

┃┃┃   .data:0x000000e3 e90501268a jmp    0x8a2601ed 
  

┃┃┃   .data:0x000000e8 4c dec    esp 
  

┃┃┃   .data:0x000000e9 04e3 add    al,0xe3 
  

┃┃┃   .data:0x000000eb f5 cmc 
  

┃┃┃   .data:0x000000ec 8b5e12 mov    ebx,DWORD PTR [esi+0x12] 
  

┃┃┃   .data:0x000000ef 80f9ff cmp    cl,0xff 
  

┃┃┗━  .data:0x000000f2 74d8 je     loc_000000cc 
  

┃┃    .data:0x000000f4 8ec3 mov    es,ebx 
  

┃┃    .data:0x000000f6 8bd9 mov    ebx,ecx 
  

┃┃    .data:0x000000f8 4b dec    ebx 
  

┃┃    .data:0x000000f9 26391e cmp    DWORD PTR es:[esi],ebx 
  

┃┃    .data:0x000000fc 1c00 sbb    al,0x0 
  

┃┣━━  .data:0x000000fe 76e1 jbe    loc_000000e1 
  

┃┃    .data:0x00000100 50 push   eax 
  

┃┃    .data:0x00000101 d1e3 shl    ebx,1 
  

┃┃    .data:0x00000103 8bc3 mov    eax,ebx 
  

┃┃    .data:0x00000105 d1e3 shl    ebx,1 
  

┃┃    .data:0x00000107 d1e3 shl    ebx,1 
  

┃┃    .data:0x00000109 03d8 add    ebx,eax 
  

┃┃    .data:0x0000010b 26031e add    ebx,DWORD PTR es:[esi] 
  

┃┃    .data:0x0000010e 2200 and    al,BYTE PTR [eax] 
  

┃┃    .data:0x00000110 26f6470440 test   BYTE PTR es:[edi+0x4],0x40 
  

┃┃ ┏  .data:0x00000115 740f je     loc_00000126 
  

┃┃ ┃  .data:0x00000117 06 push   es 
  

┃┃ ┃  .data:0x00000118 53 push   ebx 
  

┃┃ ┃  .data:0x00000119 e8d6f8a801 call   func_01a8f9f4 
  

┃┃ ┃  .data:0x0000011e 7511 jne    0x00000131 
  

┃┃ ┃  .data:0x00000120 50 push   eax 
  

┃┃ ┃  .data:0x00000121 e890f7eb0b call   func_0bebf8b6 
  

┃┃ ┃  .data:0x00000126    
┃┃ ┃  .data:0x00000126  loc_00000126:  
┃┃ ┗▶ .data:0x00000126 06 push   es 
  

┃┃    .data:0x00000127 51 push   ecx 
  

┃┃    .data:0x00000128 ff7604 push   DWORD PTR [esi+0x4] 
  

┃┃    .data:0x0000012b ff7604 push   DWORD PTR [esi+0x4] 
  

┃┃    .data:0x0000012e e813fc8bd0 call   func_d08bfd46 
  

┃┃    .data:0x00000133 58 pop    eax 
  

┃┗━━  .data:0x00000134 e3ab jecxz  loc_000000e1 
  

┃     .data:0x00000136    
┃     .data:0x00000136  loc_00000136:  
┗━━━▶ .data:0x00000136 50 push   eax 
  

      .data:0x00000137 52 push   edx 
  

      .data:0x00000138 8b460e mov    eax,DWORD PTR [esi+0xe] 
  

      .data:0x0000013b 0bc0 or     eax,eax 
  

      .data:0x0000013d 750b jne    0x0000014a 
  

      .data:0x0000013f 8cd0 mov    eax,ss 
  

      .data:0x00000141 8b4e10 mov    ecx,DWORD PTR [esi+0x10] 
  

      .data:0x00000144 e304 jecxz  0x0000014a 
  

      .data:0x00000146 51 push   ecx 
  

      .data:0x00000147 e86af78ec0 call   func_c08ef8b6 
  

      .data:0x0000014c b307 mov    bl,0x7 
  

      .data:0x0000014e 26221c33 and    bl,BYTE PTR es:[ebx+esi*1] 
  

      .data:0x00000152 c9 leave 
  

      .data:0x00000153 b104 mov    cl,0x4 
  

      .data:0x00000155 26224c0153 and    cl,BYTE PTR es:[ecx+eax*1+0x53] 
  

      .data:0x0000015a 51 push   ecx 
  

      .data:0x0000015b ff7608 push   DWORD PTR [esi+0x8] 
  

      .data:0x0000015e e853f78ec0 call   func_c08ef8b6 
  

      .data:0x00000163 59 pop    ecx 
  

      .data:0x00000164 5b pop    ebx 
  

      .data:0x00000165 5a pop    edx 
  

      .data:0x00000166 58 pop    eax 
  

      .data:0x00000167 80fb02 cmp    bl,0x2 
  

      .data:0x0000016a 742e je     0x0000019a 
  

      .data:0x0000016c 80fb03 cmp    bl,0x3 
  

      .data:0x0000016f 7444 je     0x000001b5 
  

      .data:0x00000171 80fb05 cmp    bl,0x5 
  

   ┏  .data:0x00000174 7411 je     loc_00000187 
  

   ┃  .data:0x00000176    
   ┃  .data:0x00000176  loc_00000176:  
 ┏━╋▶ .data:0x00000176 b8010083c6 mov    eax,0xc6830001 
  

 ┃ ┃  .data:0x0000017b 08ff or     bh,bh 
  

 ┃ ┃  .data:0x0000017d 4e dec    esi 
  

 ┃ ┃  .data:0x0000017e 0a7e03 or     bh,BYTE PTR [esi+0x3] 
  

 ┃ ┃  .data:0x00000181 e9b6feeb65 jmp    0x65ec003c 
  

 ┃ ┃  .data:0x00000186 90 nop 
  

 ┃ ┃  .data:0x00000187    
 ┃ ┃  .data:0x00000187  loc_00000187:  
 ┃ ┗▶ .data:0x00000187 e305 jecxz  0x0000018e 
  

 ┃    .data:0x00000189 260105ebe88bd8 add    DWORD PTR es:0xd88be8eb,eax 
  

 ┃    .data:0x00000190 26871d8bfb4375 xchg   DWORD PTR es:0x7543fb8b,ebx 
  

 ┃    .data:0x00000197 f6eb imul   bl 
  

 ┃    .data:0x00000199 dc8b5efc235e fmul   QWORD PTR [ebx+0x5e23fc5e] 
  

 ┃    .data:0x0000019f 06 push   es 
  

 ┃┏━  .data:0x000001a0 752e jne    loc_000001d0 
  

 ┃┃   .data:0x000001a2 e305 jecxz  0x000001a9 
  

 ┃┃   .data:0x000001a4 260115ebcd8bda add    DWORD PTR es:0xda8bcdeb,edx 
  

 ┃┃   .data:0x000001ab 26871d8bfb4375 xchg   DWORD PTR es:0x7543fb8b,ebx 
  

 ┃┃   .data:0x000001b2 f6eb imul   bl 
  

 ┃┃   .data:0x000001b4 c1e309 shl    ebx,0x9 
  

 ┃┃   .data:0x000001b7 26010526015502 add    DWORD PTR es:0x2550126,eax 
  

 ┣╋━  .data:0x000001be ebb6 jmp    loc_00000176 
  

 ┃┃   .data:0x000001c0    
 ┃┃   .data:0x000001c0  loc_000001c0:  
 ┃┃┏▶ .data:0x000001c0 8bd8 mov    ebx,eax 
  

 ┃┃┃  .data:0x000001c2 26871d26895502 xchg   DWORD PTR es:0x2558926,ebx 
  

 ┃┃┃  .data:0x000001c9 8bfb mov    edi,ebx 
  

 ┃┃┃  .data:0x000001cb 43 inc    ebx 
  

 ┃┃┗  .data:0x000001cc 75f2 jne    loc_000001c0 
  

 ┣╋━  .data:0x000001ce eba6 jmp    loc_00000176 
  

 ┃┃   .data:0x000001d0    
 ┃┃   .data:0x000001d0  loc_000001d0:  
 ┃┗┳▶ .data:0x000001d0 e309 jecxz  loc_000001db 
  

 ┃ ┃  .data:0x000001d2 260115260145fe add    DWORD PTR es:0xfe450126,edx 
  

 ┣━╋  .data:0x000001d9 eb9b jmp    loc_00000176 
  

 ┃ ┃  .data:0x000001db    
 ┃ ┃  .data:0x000001db  loc_000001db:  
 ┃ ┣▶ .data:0x000001db 8bda mov    ebx,edx 
  

 ┃ ┃  .data:0x000001dd 26871d268945fe xchg   DWORD PTR es:0xfe458926,ebx 
  

 ┃ ┃  .data:0x000001e4 8bfb mov    edi,ebx 
  

 ┃ ┃  .data:0x000001e6 43 inc    ebx 
  

 ┃ ┗  .data:0x000001e7 75f2 jne    loc_000001db 
  

 ┗━━  .data:0x000001e9 eb8b jmp    loc_00000176 
  

      .data:0x000001eb 5f pop    edi 
  

      .data:0x000001ec 5e pop    esi 
  

      .data:0x000001ed 8be5 mov    esp,ebp 
  

      .data:0x000001ef 5d pop    ebp 

rloew
Posts: 82
Joined: Fri Aug 02, 2013 9:32 am
Location: Elmont, NY USA
Contact:

Re: Boot Sector for Windows 1.02 disks

Post by rloew »

I agree. It is left over code. It starts shortly after the last possible FAT entry.
@Threat: It would be more legible if you disassembled the code in 16-Bit Mode rather than 32-Bit Mode.
It is definitely NOT Boot level code. It uses INT 21 Calls that are not available until IO.SYS or equivalent is loaded.

os2fan2
User avatar
Donator
Posts: 1394
Joined: Sun Dec 30, 2007 8:12 am
Location: Brisbane, Queensland
Contact:

Re: Boot Sector for Windows 1.02 disks

Post by os2fan2 »

A good number of disks were 'quick formatted', which means that the files in the root sector are marked as deleted. For example. the diskette in diskcopy.dll has a lot of deleted files on it, and Starman found a lot of interesting stuff in the space of the DOS 1 diskette, which suggests other uses before it was used for DOS.

I even recovered IBM DOS 6.0 from unformatting a diskette.

The appearence of code in the FAT suggests that it was used for some other OS before hand, since you would not expect DOS to write code in the FAT. It's been duplicated, but it could be a virus or something.

vicvan
Posts: 123
Joined: Thu Jan 01, 2015 8:50 pm

Re: Boot Sector for Windows 1.02 disks

Post by vicvan »

More interesting thing is that all disks for Windows PE and Developer version of 1.0x don't use boot sector for IBM 2.0 but IBM 3.0 or 3.1.
But I figured out that Windows 1.01 and 1.02 for End user version include boot sector for IBM 2.0

Threat
Donator
Posts: 87
Joined: Mon Feb 24, 2014 3:00 pm

Re: Boot Sector for Windows 1.02 disks

Post by Threat »

rloew wrote:I agree. It is left over code. It starts shortly after the last possible FAT entry.
@Threat: It would be more legible if you disassembled the code in 16-Bit Mode rather than 32-Bit Mode.
It is definitely NOT Boot level code. It uses INT 21 Calls that are not available until IO.SYS or equivalent is loaded.
Yes it would. But I did not have a 16bit x86 disassembler handy ... I used some free online service that only did i386 mode.
Even disassembled wrong there was enough to see it was code, eg

Code: Select all

 ┃┃   .data:0x00000068 b43f mov    ah,0x3f 
 ┃┃   .data:0x0000006a cd21 int    0x21 
I never bothered to disassemble it properly after that as it's probably a mid section of some routine rather than a complete useful routine.

If I get time I may fire up IDA and disassemble it properly as we can see if it's some code from the MSDOS utilities themselves (which I would suspect)

Windows Historian 77
User avatar
Permanently Banned
Posts: 123
Joined: Wed Dec 03, 2014 9:58 pm

Re: Boot Sector for Windows 1.02 disks

Post by Windows Historian 77 »

os2fan2 wrote:Have a look at this thread http://www.betaarchive.com/forum/viewto ... xx#p384728
I can't see it, it gives me:
Information

You are not authorised to read this forum.

InsertGoodNameHere
User avatar
Posts: 277
Joined: Sun Jul 27, 2014 11:37 am
Contact:

Re: Boot Sector for Windows 1.02 disks

Post by InsertGoodNameHere »

Windows Historian 77 wrote:
os2fan2 wrote:Have a look at this thread http://www.betaarchive.com/forum/viewto ... xx#p384728
I can't see it, it gives me:
Information

You are not authorised to read this forum.
It's in the Servers Discussion forum, that's why.
Don't visit much, if ever.

Looking to contact me? Shoot me a PM on reddit (here).

Windows Historian 77
User avatar
Permanently Banned
Posts: 123
Joined: Wed Dec 03, 2014 9:58 pm

Re: Boot Sector for Windows 1.02 disks

Post by Windows Historian 77 »

Oh. Darn it.

Kthxbai.

os2fan2
User avatar
Donator
Posts: 1394
Joined: Sun Dec 30, 2007 8:12 am
Location: Brisbane, Queensland
Contact:

Re: Boot Sector for Windows 1.02 disks

Post by os2fan2 »

DOS 1 diskettes have a strange boot sector. There's a thread on the DOS setion on how to 'fix' this. Basically, you replace the first 32 bits of the diskette with something different,

Another thing. The basic samples are written in IEEE byte-code, not ASCII files. This is pretty much a standard in the days of 8-bit computers, and there were a lot of eight-bit boxen back then. (Nearly anything that was portable was 8-bit. The tandy 100 was eight-bit with 24k of flash memory shared between storage and operation). You can open them up in gwbasic, though.

But if you run this script on a copy of the diskette, you can get something winimage etc can read. What it does is to write a DOS-2 compatible header to the floppy, replacing the DOS 1 header. It works on a whole host of diskettes from that era.

The command is c:> rexx diskimg.dsk

I use regina rexx, which is free and available on many platforms, including DOS, Windows, OS/2. It's free, maintained in Brissie, and open source.

Code: Select all

/* rexx */
/* a program to fix the boot sector of a dos 1 160 diskette */

nldr = 'EB 3C 90 49 42 4D 20 32 2E 30 20 00 02 01 01 00'x
nldr = nldr || '02 40 00 40 01 FE 01 00 08 00 01 00 00 00 00 00'x

oldr = 'EB 2F 14 00  00 00 60 00  20 37 2D 4D  61 79 2D 38'x
oldr = oldr || '31 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00'x

parse arg diskimg
call stream diskimg , 'c', 'open both'
call charout diskimg, nldr, 1
call stream diskimg, 'c', 'close'

Post Reply