SN923: Spinrite

  • SpinRite v6.1 Release #3
    The 3rd release of SpinRite v6.1 is published and may be obtained by all SpinRite v6.0 owners at the SpinRite v6.1 Pre-Release page. (SpinRite will shortly be officially updated to v6.1 so this page will be renamed.) The primary new feature, and the reason for this release, was the discovery of memory problems in some systems that were affecting SpinRite's operation. So SpinRite now incorporates a built-in test of the system's memory. For the full story, please see this page in the "Pre-Release Announcements & Feedback" forum.
  • Be sure to checkout “Tips & Tricks”
    Dear Guest Visitor → Once you register and log-in please checkout the “Tips & Tricks” page for some very handy tips!

  • BootAble – FreeDOS boot testing freeware

    To obtain direct, low-level access to a system's mass storage drives, SpinRite runs under a GRC-customized version of FreeDOS which has been modified to add compatibility with all file systems. In order to run SpinRite it must first be possible to boot FreeDOS.

    GRC's “BootAble” freeware allows anyone to easily create BIOS-bootable media in order to workout and confirm the details of getting a machine to boot FreeDOS through a BIOS. Once the means of doing that has been determined, the media created by SpinRite can be booted and run in the same way.

    The participants here, who have taken the time to share their knowledge and experience, their successes and some frustrations with booting their computers into FreeDOS, have created a valuable knowledgebase which will benefit everyone who follows.

    You may click on the image to the right to obtain your own copy of BootAble. Then use the knowledge and experience documented here to boot your computer(s) into FreeDOS. And please do not hesitate to ask questions – nowhere else can better answers be found.

    (You may permanently close this reminder with the 'X' in the upper right.)

Dave New

Well-known member
Nov 23, 2020
Steve complains about specs you can drive a Mac truck through. Reminded me of the LIM EEMS 2.0 spec, that had a call to unmap a memory block, so like a dummy when I implemented the driver, I actually unmapped the memory block when asked. Much issues occurred, mainly from Windows/286 itself, because it actually unmapped a block and then accessed that block, expecting it to be where it last left it (?!). Take about 'use-after-free'! It turns out that Microsoft only considered an unmapped block to actually be unmapped, ONLY after it had been re-mapped by a subsequent call (thread safe, anyone? NOT!). So, I had to 'break' my driver to allow Microsoft's broken usage of the specification that they, Intel, and Lotus had invented together. Sheesh.

Then Steve waxes philosophically about having to do a 3rd implementation to 'get it right'. That comes straight out of Fred Brook's "Mythical Man-Month', where he notes that most non-trivial software needs three releases to get it right. The first release is usually feature-poor, the 2nd is a bloated mess, and the 3rd is usually the winner. He points out the IBM 360 mainframe OS as an example, but I found it true with Windows - it took them until Windows 3 (actually 3.1) before it was a reasonable operating system.
  • Like
Reactions: SeanBZA