MSX-DOS

From Infogalactic: the planetary knowledge core
(Redirected from BDOS (MSX))
Jump to: navigation, search
MSX-DOS
Developer Microsoft Corporation
OS family DOS
Working state Historic
Source model Closed source
Initial release 1984; 40 years ago (1984)
Marketing target Home computers
Available in English
Platforms MSX home computer architecture
Kernel type Monolithic kernel
Default user interface Command line interface, Text user interface
License Proprietary
Official website {{#property:P856}}

MSX-DOS is a discontinued disk operating system developed by Microsoft for the 8-bit home computer standard MSX, and is a cross between MS-DOS 1.25 and CP/M-80 2.

MSX-DOS

MSX-DOS and the extended BASIC with 3½-inch floppy disk support (known as MSX DOS Disk Operating System) were simultaneously developed by Microsoft and Spectravideo as a software and hardware standard for the home computer MSX standard, to add disk capabilities to BASIC and to give the system a cheaper software medium than Memory Cartridges, and a more powerful storage system than cassette tape (See SVI MSX User Manual (M-246) 1985 (Spectravideo MSX DOS Disk Operating System) Introduction to MSX DOS section 1.3). The standard BIOS of an unexpanded MSX computer did not have any floppy disk support, so the additional floppy disk expansion system came with its own BIOS extension ROM (built-in on the disk controller) called the BDOS. Spectravideo also released an MSX-DOS disk, in conjunction with the SVI-707 which could be Loaded into your MSX System. Once MSX-DOS had been Loaded, the system searches the MSX-DOS disk for the COMMAND.COM file and loads it into memory (See SVI MSX User Manual (M-246) 1985 (Spectravideo MSX DOS Disk Operating System) Getting Started section 2.1).It not only added floppy disk support commands to MSX BASIC, but also a booting system, with which it was possible to boot a real disk operating system. In that case, the BDOS bypassed the BASIC ROMs, so that the whole 64 KB of address space of the Z80 microprocessor inside the MSX computer could be used for the DOS or for other boot-able disks, for example disk based games. At the same time, the original BIOS ROMs could still be accessed through a "memory bank switch" mechanism, so the DOS-based software could still use BIOS calls to control the hardware and other software mechanisms the main ROMs supplied. Also, because of the BDOS ROM, basic file access capacity was available even without a command interpreter by using the BASIC extended commands.

One major difference between MSX-DOS and MS-DOS 2.x was that MSX-DOS did not use the "boot sector" on the floppy to boot, but booted using the BDOS ROM routines,[citation needed] and, in a fashion much like MS-DOS 1.25, it used the FAT ID value from the first byte of the FAT to select file system parameter profiles for its FAT12 file system instead of from the BIOS Parameter Block (BPB) in the bootsector. Also, because there could be more than one floppy disk controller in two or more cartridge slots, MSX-DOS could boot from several different floppy disk drives. This meant that it was possible to have both, a 5¼" floppy disk drive and a 3½" disk drive, and the user could boot from either one of them depending on which drive had a bootable floppy in it.

Development history

On 10 August 1983, Paul Allen called Tim Paterson, original author of 86-DOS and MS-DOS 1.x, asking him to do a "Z80 version of MS-DOS" for the MSX standard.[1] At the time, Paterson was busy trying to get the first product of his startup Falcon Systems ready to go, so he suggested a few other developers but Allen said he’d already asked. Allen was in a hurry to get it done and nobody else could meet his timeline. Allen and Paterson finally agreed, and on 17 August, they signed an agreement to do "Z80 MS-DOS 1.25" for USD 100,000 and the rights for Paterson's company to distribute MS-DOS 2.0, 2.5, and 3.0 with a hardware product without royalty.[2]

For Paterson, this was mostly a translation process. He had already written an Z80-to-8086 assembly language translation program (TRANS.COM). In this case, he was manually translating in the other direction. Because MS-DOS 1.x was modelled after CP/M's API and was able to run CP/M applications that had been source-level translated to 8086, that would mean, MSX-DOS would be able to run CP/M programs directly.[2]

For this project, Paterson also wrote a Z80 emulator that ran under MS-DOS, which would allow him to do the entire development project under MS-DOS. The MSX-DOS he was writing had an I/O System layer, that interfaced directly to the I/O System layer of the MS-DOS machine, that was running the emulation. This gave MSX-DOS direct access and control of the disk format. Most of the core code was file management, so this was necessary to test it out.[2]

By 2 October 1983, he had Microsoft BASIC and M80 running under MSX-DOS. He finished coding COMMAND.COM a few days later. He worked out some bugs and demonstrated MSX-DOS to Paul Allen on 11 October. The beta test version was officially delivered on 26 October 1983. It included an easter egg, that printed Paterson's name. The name was encoded with FAT code, so it couldn’t be found by simply searching the file. After delivery of the beta version, the code was sent to ASCII in Japan. They created the I/O System for the MSX machine. That code was developed by Jay Suzuki. He figured out the easter egg and added his name to it.[2]

ASCII was having problems getting MSX-DOS working on the actual MSX machine. They had not provided an actual MSX machine to Paterson, and instead flew him to Tokyo on 28 January 1984 to help them. It turned out that ASCII had been modifying the code without telling Paterson, so they were not working from the same code base. Paterson spent three days in Tokyo figuring out the problems and came back to Seattle.[2]

Chris Larson from Microsoft and Jay Suzuki visited Paterson in Seattle at the end of February and early March 1984. They brought an MSX machine with an in-circuit emulator (ICE) for debugging. They got everything working and on 23 April 1984, Microsoft accepted delivery and made the final payment for MSX-DOS to Paterson.[2]

At the time MSX-DOS was written, there was only one popular disk operating system for 8-bit Intel 8080 compatible microprocessors, which was Digital Research's CP/M-80 system. It was also often used with Z80 systems, because the Z80 used an extended 8080 architecture. Microsoft's own disk operating system was also inspired by CP/M.

To be able to run (slightly modified) CP/M software Microsoft decided to implement functionality similar to major parts of the CP/M BIOS, routines that CP/M systems used to do specific disk operating tasks, such as opening files, etc. Instead of basing the command processor on CP/M's CCP, which was known for some user unfriendliness, a command line interpreter (COMMAND.COM) inspired on its MS-DOS counterpart was used. Microsoft also chose its own FAT12 file system over CP/M's filing methods. This ensured that MSX-DOS floppies could be used on an MS-DOS machine, and that only one single formatting and filing system would be used. This was an important decision, because CP/M disk were often not interchangeable between machines, incompatible disk formatting schemes being a factor in this.

Microsoft also added a standard set of disk commands to MSX-DOS, that were compatible with MS-DOS, but not with CP/M. Finally they converted their "pipelineing" system from MS-DOS to MSX-DOS. The resulting DOS was a system that was much user-friendlier than CP/M, but was (in principle) compatible with major CP/M software packages such as WordStar, Turbo Pascal and the "M80" assembler and "L80" linker.

Improved versions

Like MS-DOS 1.25, the first version of MSX-DOS did not have subdirectories, but in 1988 it evolved to version 2, offering facilities such as subdirectories, memory management and environment strings. Later versions of MSX computers (MSX-2) added an internal real-time clock, which MSX-DOS could use for time stamping files.

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. 2.0 2.1 2.2 2.3 2.4 2.5 Lua error in package.lua at line 80: module 'strict' not found.

See also