Talk:Microsoft Binary Format

What is still missing
Important dates:

✅ 1975 = First release of Altair BASIC with (now MBF) floating point by Monte Davidoff who had some experience writing floating point routines

✅ 1978 = TRS-80 Level II BASIC introduces double precision

✅ 1980 = Intel 8087 with (now IEEE) floating point by William Kahan

✅ 1985 = IEEE standard published

1987 = QuickBASIC 4.00 (with IEEE floating point)

1991 = Visual Basic 1.0 (maybe not as important)

Conceptual:

✅ Why is IEEE different? Try to motivate existence of NaNs, infs, denormals, different exponent size.

✅ Why was it important for Altair BASIC to have floating point routines?

Why did Microsoft switch to IEEE after the standard was published, rather than sticking to MBF? (Interoperability, speed)

How would using these floating point numbers work from the user's perspective? What would you type, what would display?

What could you do with these floating point numbers?

✅ Did other software support MBF numbers? (MASM comes to mind; Multiplan for the Tandy 200 notably didn't, it used BCD)

Niceties:

A few examples could be enlightening, for example a few simple numbers and the corresponding bytes, a BASIC session demonstrating their use, anything to make it all a bit more grounded. It's a bit abstract as it stands.

Nicer looking diagrams.

— Preceding unsigned comment added by 82.139.82.82 (talk) 01:37, 2 October 2015 (UTC)


 * More potential To-Dos:


 * Check the number of decimal digits supported by the 40-bit and 64-bit formats. (Some sources state that the 40-bit format supports 9 digits, but it could also be an 8-digit format only.)
 * The references should be converted into the Template:Cite format and various parameters added.
 * --Matthiaspaul (talk) 22:56, 31 January 2016 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified 1 one external link on Microsoft Binary Format. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Corrected formatting/usage for http://www.rjh.org.uk/altair/ian.htm

When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at ).

Cheers.—cyberbot II  Talk to my owner :Online 08:15, 31 May 2016 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified 1 one external link on Microsoft Binary Format. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit User:Cyberpower678/FaQs for additional information. I made the following changes:
 * Added archive http://web.archive.org/web/20160304114859/http://www.intel.com/content/dam/www/public/us/en/documents/case-studies/floating-point-case-study.pdf to http://www.intel.com/content/dam/www/public/us/en/documents/case-studies/floating-point-case-study.pdf

When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at ).

Cheers.—cyberbot II  Talk to my owner :Online 19:03, 2 June 2016 (UTC)

External links modified (January 2018)
Hello fellow Wikipedians,

I have just modified 2 external links on Microsoft Binary Format. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20050220040002/http://ftp.gwdg.de/pub/mpsf/pc_doc/dosbesch.ps to ftp://ftp.gwdg.de/pub/mpsf/pc_doc/dosbesch.ps
 * Added archive https://web.archive.org/web/20160305170347/http://www.csidata.com/patch/csim.txt to http://www.csidata.com/patch/csim.txt
 * Added tag to https://www.7api.com/converting-microsoft-binary-format-to-ieee-format-using-vb-6-beatfx.html

When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.

Cheers.— InternetArchiveBot  (Report bug) 10:16, 29 January 2018 (UTC)

Not sure what this means...
"At the time, while IBM had introduced their own programs"

Well, practically everyone had "introduced their own programs". And their own FP formats. What is this statement supposed to mean? Maury Markowitz (talk) 00:25, 4 November 2019 (UTC)

Bias and exponent value ranges
Hi, I marked a few sentence fragments regarding the exponent bias and the actually used values in the exponent field in MBFs because something does not appear to be quite right here. When you look at the list of example values further down in the article (in particular for the binary representation for numbers (2,) 1, 0.5, 0.25), it can be seen that binary exponent field values 81h..FFh are associated with positive numbers larger or equal to 1 (or negative numbers smaller or equal than -1), and binary field values 01h..80h are associated with positive numbers smaller than 1 (or negative values larger than -1). The exponent field value 00h is special and is associated with a number of 0. This is odd, because one would more likely expect ranges 01h..7Fh and 80h..FFh (as currently stated in the article, but unsourced). (Something to keep into account when comparing with IEEE 754: MBF places the decimal point before the assumed bit, while IEEE places the decimal point after the assumed bit.)

The example values are taken from byte-exact disassembled ROMs of the 6502 port, so, while the examples are definitely accurate binary-wise, it would still be possible for the source comments to be misleading. However, there are some magic constants (2*pi, pi/2, sqrt(2)) used in the trigonometric algorithms (which make sense "as is" algorithmically, so they are unlikely to have wrongly interpreted numbers in the comments), and they fit in nicely with the other values, suggesting that their interpretation is correct as well.

Though unlikely, it is also possible that the binary representation of the 6502 implementation of MBFs actually was different from that of the 8080 and/or x86 versions, the latter being described in a Borland document.

Of course, it is also possible that I am just missing something.

Since the numbers have been changed back and forth a couple of times in the history of the article, it would be great if others could investigate this as well. I don't ask for removal of this contents (because, I think, it is important for historical reasons to document these formats accurately and down to the bit level), more for plausibility checking and possibly to provide additional "accurately known" real-world example values (for the various platforms) for comparison. --Matthiaspaul (talk) 17:45, 31 August 2020 (UTC)
 * There are several conventions to define the exponent: with the radix point just before the first digit, just after the first digit, or just after the last digit (the C language uses the first one, and IEEE 754 uses the last two). And for a given floating-point system, the value of the exponent of a number depends on the chosen convention. Thus the value of the bias also depends on the chosen convention. It is said that MBF uses the first one (is there a source saying that there is an official convention for MBF?), but I'm not sure that everyone follows it. The Borland document is about C++, thus might prefer the C convention for this reason. The different values of the bias found in sources (128 and 129) might have been caused by choosing different conventions (and unfortunately, these conventions can silently be mixed up). So this needs to be checked... Vincent Lefèvre (talk) 15:16, 16 September 2020 (UTC)