Hacker News new | ask | show | jobs
by mato 4466 days ago
This tidbit from the DOS 2.0 README.txt (section 5) is fascinating:

  The user manual contains some significant errors. Most of these are
  due to last minute changes to achieve a greater degree of compatibility
  with IBM's implementation of MS-DOS (PC DOS). This includes the use
  of "\" instead of "/" as the path separator, and "/" instead of "-"
  as the switch character. For transporting of batch files across
  machines, Microsoft encourages the use of "\" and "/" respectively
  in the U.S. market. (See DOSPATCH.TXT for how you can overide this.
  The user guide explains how the end-user can override this in CONFIG.SYS).
Also this, from the documentation for the CharOper system call (that never made it outside of MSFT?) in SYSCALL.txt:

        AL Function
        -- --------
         0 DL, on return, will contain the DOS switch
            character. On most systems this will default to
            '-'.
         1 Set the switch character to the character in DL.
         2 Read the device availability byte into DL. If
            this byte is 0, then devices must be accessed in
            file I/O calls by /dev/device. If this byte is
            non-zero, then the devices are available at every
            node of the directory tree (i.e. CON is the
            console device not the file CON). This byte is
            generally 0.
         3 Set the device availability byte to the value in
            DL.
It looks like we have IBM to blame for '\' and '/' as a path separator/switch character in DOS/Windows, Microsoft originally was using the Xenix '/' and '-' respectively. I knew that Microsoft used Xenix fairly heavily internally but never thought that DOS was quite so influenced by it.
3 comments

Larry Osterman (a long time MS engineer) wrote about this at some length here: http://blogs.msdn.com/b/larryosterman/archive/2005/06/24/432...
And to this day we're still barred from creating files or directories named CON, PRN, NUL ... Damn you, IBM
Not just CON but also con.txt, con.js, etc.! Try cloning a git repository with a file called con.js using msysgit. The result is that, when msysgit tries to clone the file, the contents of the file `con.js` are printed to stdout, i.e. to CON.
It's interesting to see the real specification for this system call, as only the device availability subfunctions were widely known outside of Microsoft [1].

I wonder if many other hidden or deprecated functions are present in these releases.

[1] http://www.delorie.com/djgpp/doc/rbinter/id/65/27.html

At the time I seem to recall this was documented as being the SWITCHAR in config.sys certainly by MSDOS3.x this was well known and I seem to recall trying it out on MSDOS 2.x on a commodore pc clone (in Sweden) this would have been around 1985ish