
Inside the Windows 95 File System (1997) [pdf] - userbinator
http://www.tenox.net/books/Microsoft_Windows/Inside_the_Windows95_File_System.pdf
======
acdha
I ran into an interesting bug in 1997. My employer was developing an IDE and
close to the release time we got a report from a beta tester that creating a
project failed on a Windows 95 test box, where it would create the directory
but then report that it didn’t exist!

The debug log was mystifying: the app was successfully creating the project
directory but then failing to open it because the Win32 API to enumerate `C:\
_._ ` was returning an empty list and it hit the error handler when the
expected directory name wasn’t in the empty list.

Naturally, we couldn’t reproduce this on any system we had access to and the
customer could only reproduce it on Win95, not NT. I remembered that the Win95
networking stack was a deeply-invasive kludge and on a hunch tried disabling
network file sharing, which immediately made the problem reproducible even
though the local C: drive hadn’t been shared.

The IDE developer was able to side-step the big by changing the existence
check to use a different API and shipped on-time. Our theory was that
Microsoft’s QA team had missed the bug for the same reason we had: everything
in the test environment was networked to have access to the shared builds and
testcases.

------
RcouF1uZ4gsC
Windows 95 was a marvel of pragmatic engineering. While it won’t win any
awards for purity, it did a great job of delivering real value to people while
still allowing their old programs to run. FAT32 was a major part of that.

~~~
InclinedPlane
Indeed. Windows NT (and OS/2) were better from a purity standpoint but they
were too far ahead of their time due to their high ram requirements (a
whopping 4 megabytes per 16-bit application run!). It took a half a decade for
hardware to get sufficiently better and cheaper for the compromises of the
Windows 95 era to no longer make sense. Also, it's funny how now with Docker
we're going back to this multi-tenancy process isolation model (which was the
major secret sauce of Windows 95) instead of running everything in full blown
VMs.

~~~
JdeBP
That 4MiB per application assertion is not true of OS/2\. 4MiB was minimal
physical RAM requirements for 32-bit OS/2, which I myself ran on a 4MiB
machine for a while, but it did _not_ scale up from that by number of
applications run, let alone by number of 16-bit applications.

------
DanBC
This is an entire book.

[http://shop.oreilly.com/product/9781565922006.do](http://shop.oreilly.com/product/9781565922006.do)

It might be useful to have said which bit of this is most interesting.

~~~
paulirwin
And, is this a pirated book?!

I see nothing on the O'Reilly site or the host site that gives them the right
to redistribute this freely, but please let me know if I'm wrong.

------
therealmarv
this fat32 is still used a lot! One weekend I figured out how to copy an fat32
UUID from one sdcard to another when you "upgrade" your sdcard on Android and
want to keep the same path names because Android is using UUID as part of
external sdcard path names
[https://superuser.com/a/1294893/95714](https://superuser.com/a/1294893/95714)

~~~
orbitingpluto
That reminds me of how much I hated software license USB dongles.

~~~
krylon
After all the trouble I had with activating Windows and Office and whatnot, I
have come to kind of appreciate dongles, actually. Migrating a license from
one machine to another is as easy as unplugging the dongle and plugging it
into the new machine.

OTOH, the company I work for has a customer that uses some _ancient_
automation software to run an industrial plant, and that software uses dongles
attached to the parallel port, and I mean _the_ parallel port. Using USB-to-
parallel-adapters does _not_ work, and finding motherboards with parallel
ports has become rather difficult. :-|

~~~
derefr
> Using USB-to-parallel-adapters does not work

Have you tried modifying the Device Manager configuration for the USB-to-
parallel adapter to assign it the I/O port and IRQ traditionally associated
with LPT1 (I/O port 0x3BC, IRQ 7)? Changing exactly those kinds of mappings
are the whole (original) purpose of the Windows Device Manager :)

The other thing you could do, though, is just run the automation software in a
VM, and map the USB parallel port to the VM's LPT1. It's the IBM z/OS
philosophy :)

~~~
krylon
Thank you! I will pass the hint regarding the Device Manager on to our
automation people!

But as far as I recall, the software runs on DOS (for real!), and attempts to
run it inside a VM have not been very successful, because the link between the
software and the PCL is very timing-sensitive or something like that. FreeDOS
did not work, either; I got to install MS-DOS 6.22 on a few machines two or
three years ago for that reason. It was fun actually, but finding three floppy
disks for the installation media was ... challenging. ;-)

~~~
scruffyherder
You can easily make a bootable CD-ROM for MS-DOS by using the boot
emulation...

> mkisofs -b dos622_1.img . > \temp\dos6.iso

something like this, will get you a bootable CD that'll emulate a floppy and
get you onto that first disk... It's probably easier to do a dump/restore set
of whatever it is you need to install, or just make a boot floppy to load up
MSCDEX & friends so you can xcopy as another solution.....

Parallel ports aren't too hard to find, there is PCI cards you can find with
parallel ports.. Now ISA slots on the other hand....

~~~
krylon
I actually tried something along those lines, but I could not get it to work
properly. The installation started normally, but when it was time to enter the
second disk, the installer somehow did not accept the second disk.... :-|

On the upside, installing MS-DOS 6.22 from floppies took less than 15 minutes,
and the freshly installed system booted withing 15 seconds. ;-)

------
Fnoord
The lovely thing about FAT32 was that you could mount it from Linux which was
a big thing back then. So for example, I could use WINE to run Counter Strike
on Linux, and actually have a more stable experience than Windows 9x.

