M-DOS and FAT edit

Welcome to Wikipedia!

Are there any factual errors in the M-DOS article, Marc? If so, please feel free to correct them. The article also still lacks many references for verification. It would be great if you could provide some additional sources. Born out of historical interest I have a number of questions myself:

Was the operating system called MDOS or M-DOS or MIDAS? (--Matthiaspaul (talk) 15:20, 26 July 2012 (UTC))Reply

It was originally called MDOS but then changed to MIDAS (Microsoft Interrupt Driven Asynchronous System) when we found there was an existing MDOS. MarcMcd (talk) 06:23, 15 August 2012 (UTC)Reply

Since you wrote, that it did not only support a 8-bit FAT file system, but also a 12-bit and 16-bit variant, can you perhaps explain this in better details? Did these file systems already had official names like "FAT" (or even "FAT8")? Were these 12-bit and 16-bit variants compatible with the FAT12 and FAT16 implementations in MS-DOS/PC DOS, or have these been pre-cursors based on the same ideas but with different on-medium data structures? (--Matthiaspaul (talk) 15:20, 26 July 2012 (UTC))Reply

Conceptually but not structurally compatible. Tim changed the meaning of a cluster value when he copied the file structure from Standalone Disk Basic. I used 0 for free, 1 for reserved, 2-191 for next cluster, and 192 + n (where n is the number of sectors used in the last cluster) for the 8 bit FAT. It was known as the FAT structure back then. The directory entries used a different order of values and had some extra attributes as I recall but still were basically a filename, first cluster pointer, and additional information. He also moved the location of the directory track and initially forgot the directory stopper. The directory stopper value kept directory searches from reading the whole track it indicated the last file in the directory. Standalone DIsk Basic disks were easily convertable to the MIDAS FAT structure, I had a command in MIDAS and a Basic program that did it. The geneology is Standalone Disk Basic is the progenitor of both. It was originally written for the NCR 8500 and then generalized for many Japanese PCs in conjunction with bitmapped graphics.MarcMcd (talk) 06:23, 15 August 2012 (UTC)Reply
Thank you for these details.
So, there was no extra value for "bad cluster", or did you use 1 for this purpose? What other purpose served a "reserved" cluster, perhaps just occupy space for the boot loader or the root dir (if it wasn't located before the FAT)? I always wondered why cluster value 1 is not officially used in DOS - well, in reality it is used internally when creating new cluster chains, but this can not normally be seen on disk unless in odd cases after a power failure. Did cluster value 1 had this use in MIDAS already?
Why didn't you use values above 192 + n? Just because of the size of the medium, or was there some reason in the inherent design why this would not have been practical?
Why did you use different end markers? I always wondered why different end markers were used in DOS as well. A single value should have been enough, unless there was originally some further reason or an idea for future expansion (which didn't materialize up to the present). Can you explain this?
Of course, I would be very interested in the different evolution stages of the directory entry layout as well.
The root directory is now (in FAT12/FAT16, that is) stored between the FAT and the data region, but where was it stored originally? What was the value of the directory stopper?
Since you wrote that MIDAS has been adopted to Japanese machines, I assume these were 8080/Z80 based machines, weren't they? Or was there an 8086 adaptation of MIDAS as well? --Matthiaspaul (talk) 11:05, 28 August 2012 (UTC)Reply
Meanwhile I take it that you didn't mean MIDAS but Standalone Disk BASIC, which was implemented for that NCR machine. Is this correct? Do you still remember the exact model name? I'm asking because the only NCR 8500 model I could find was kind of a mini-computer rather than a data-entry terminal, and it used a different CPU. Manes and Andrews mention a NCR 8200 as an upgrade to the NCR 7200, but all sources I could turn up seem to indicate that the 8200 was a larger machine as well and used a 16-bit processor, not an 8080. The NCR 7200 was definitely 8080, but cassette-based, although some internet users claim they have seen it in an (unofficial?) configuration with a floppy drive as well. Others indicate a NCR 7500. Confusing...
There's another question related to the early history of the FAT file system. Some Microsoft-published documents state, that FAT was originally incorporated in an Intel operating system for the 8086 and was bought (back?) by Microsoft. This has caused rumours about FAT being used in Intel's iRMX-86 or ISIS even before it was used Standalone Disk BASIC. If the Intel thing wouldn't have been published by Microsoft itself, I would not have paid attention to it and had attributed this to some clueless writer mixing it up with the SCP QDOS -> 86-DOS -> MS-DOS transition, but perhaps you can clear this up as well. Did Intel ever use an early form of FAT in one of their OSes? Thanks a lot. --Matthiaspaul (talk) 15:20, 6 September 2012 (UTC)Reply

After all, according to statements made by Tim Paterson, FAT12 was designed by him and introduced with 86-DOS in 1980. However, according to him, it was based on demonstrations and discussions of the 8-bit FAT filesystem invented and implemented by you. Did you, at this point in time, already had 12-bit and 16-bit implementations of the file system as well? (--Matthiaspaul (talk) 15:20, 26 July 2012 (UTC))Reply

Tim had access to Standalone Disk Basic source and I talked to him about how the file structure worked. I had 10, 12, and 16 bit FAT drivers in MIDAS in 1979 but he was looking at Standalone Disk Basic. The number of bits is a very minor matter, all FATs are a single table with multiple entry points (list heads) each of which is a file. It is based on saving space since a cluster can have only one use so why have separate worst case structures like index tables? Fold them all together. The unique aspect of the directory entry is that it points to the head of a list threaded through a single table. Tim coded it but design-wise he did little except re-arrange the order of the cluster numbers. MarcMcd (talk) 06:23, 15 August 2012 (UTC)Reply
Given those space contraints it was definitely a clever decision at its time (and still was way into the Nineties). (However, at least with FAT32 the plain size of the FAT has become an issue by itself.)
12 bit and 16 bit look like very natural choices to me, but 10 bit seem a bit "odd". Have these been just experimental implementations in order to get a better feeling of what's practical? --Matthiaspaul (talk) 11:05, 28 August 2012 (UTC)Reply

IIRC FAT16 was introduced much later with MS-DOS/PC DOS 3.0 in 1984, when, according to the article, development on MIDAS should have stopped already around 1982. So, was it back-ported to MIDAS or was an earlier implementation of a 16-bit variant in MIDAS ported to MS-DOS/PC DOS? How do these historic bits fit together? (--Matthiaspaul (talk) 15:20, 26 July 2012 (UTC))Reply

They have a common parent, Standalone Disk Basic. I didn't find a Wikipedia reference for it. MarcMcd (talk) 06:23, 15 August 2012 (UTC)Reply
It's a pity, at present it just redirects to Microsoft BASIC. I guess, there are few people who could contribute to this topic, but you are welcome to change that, either by adding a section to the Microsoft BASIC article or by working the redirect into an article. :-) --Matthiaspaul (talk) 11:05, 28 August 2012 (UTC)Reply
BTW. In order to create proper redirects, what was the exact spelling of Stand-alone Disk BASIC? I have seen it written as "Stand-alone" and "Standalone", with and without "Disk" and "BASIC" in all-uppercase or as "Basic"... --Matthiaspaul (talk) 15:20, 6 September 2012 (UTC)Reply

Since I have never seen a medium with 8-bit FAT file system structures (and was not able to find a description of them), perhaps you can provide some descriptions of the on-disk data structures? Did it already use the same 32-byte directory entries (and layout) as FAT12 and FAT16 use? Did it always use 3 FATs? Did it already support the FAT ID byte (1st byte in the 1st FAT) to differentiate between different media geometries? If so, which magic values for which geometry templates? Were clusters 0 and 1 and cluster values ...F6h to ...FFh already reserved and had the same special meanings as in FAT12 and FAT16? I think, this would help a lot to bring this all into perspective and improve the corresponding articles and put some historically open questions to rest. (If you'd prefer to discuss offline, feel free to contact me via the e-mail button in my user page.) Thanks. --Matthiaspaul (talk) 15:20, 26 July 2012 (UTC)Reply

As mentioned the special values were 0 (free), 1 (reserved), and C0 to CD (0 to 13 sectors last cluster) rather than F6 to FF. There were always 3 copies of the FAT though that was a parameter for MIDAS. I used 16 byte directory entries in Standalone Disk Basic and 32 byte in MIDAS. There was no FAT ID byte, all disks were the same for Basic since there were no hard drives yet just floppies. I can look in my old docs for the exact structures. MarcMcd (talk) 06:23, 15 August 2012 (UTC)Reply
If you would have fun sharing this, I would be deeply interested in that. This, or 1:1 sector images of MIDAS-formatted floppies, so they could be studied in a hex-editor.
If there was only one floppy size but four different FAT types, how did you detect them? Or was this a conditional define at assembly time? --Matthiaspaul (talk) 11:05, 28 August 2012 (UTC)Reply

It would be great to have any kind of published reference to M-DOS. --Wtshymanski (talk) 16:30, 27 July 2012 (UTC)Reply

I have documents I could scan but need a place to put them. MarcMcd (talk) 06:23, 15 August 2012 (UTC)Reply
Well, ideally you could publish them on your personal web site or blog (or such). Photos or scans, which can be shared under a free redistribution license, can be uploaded on Wikipedia or even WP's sister project Commons, so that they could be used in the article as well. For other stuff, I might be able to help out privately. (Also, while there are certainly no sites about MIDAS, there are some great CP/M sites which might be open-minded enough to host this kind of stuff as well - sure, MIDAS is in no way related to CP/M, but it's about the same time frame and processor...) Thanks. --Matthiaspaul (talk) 11:05, 28 August 2012 (UTC)Reply