If you really do want the answer to these questions which have puzzled programmers (coders) ever since the 8088 chip appeared, you may be interested in my theory. If you know little about how computers work, but have looked at the Starman's pages already you may be even more confused and bewildered than before, but don't give up it is really more simple than you might first think, and very rewarding when you understand it.

The best place to start is not the beginning, but with the introduction of the intel 386 chip and the Microsoft DOS 5 operating system in 1991.

The problem which escaped logical explanation and which becomes apparent when you read Malcolm's guide to the Staman's pages, and then in more detail in the Starman's Realm web site itself is how a chip with only 1 megabyte of space could fit up to four gigabytes of data on it. There is only one  possible explanation, and that is something only the designer of chip or the author of the software, or both, could know.
(Malcolm)
As mentioned previously, the 386 machine I purchased in 1990 came with the new operating system Microsoft DOS 5, which had online help for Edit, but no modem. The modem I purchased later that year came with BitCom software.

The software in DOS 5 was written within 1 MB (megabyte), 640k of operating system, and 340k of UMA or Upper Memory Area. Above this 1MB was the HMA (or High Memory Area, 16MB) and above this, (16MB to 1 Gigabyte), Extended memory. (See the diagram on page /starman3.) Expanded memory is actual physical memory or RAM.

Upper Memory Area

In DOS memory management, the upper memory area (UMA) refers to memory between the addresses of 640 KB and 1024 KB (0xA0000–0xFFFFF) in an IBM PC or compatible. IBM reserved the uppermost 384 KB of the 8088 CPU's 1024 KB address space for ROM, RAM on peripherals, and memory-mapped input/output. For example, the monochrome video memory area runs from 704 to 736 KB (0xB0000–B7FFF).

However, even with video RAM, the ROM BIOS and I/O ports for expansion cards, much of this 384 KB of address space was unused. As the 640 KB memory restriction became ever more of an obstacle, techniques were found to fill the empty areas with RAM. These areas were referred to as upper memory blocks (UMBs).


High Memory Area

In DOS memory management, the high memory area (HMA) is the RAM area consisting of the first 65520 bytes above the one megabyte in an IBM AT or compatible computer.

In real mode, the segmentation architecture of the Intel 80286 and subsequent processors identifies memory locations with a 16-bit segment and a 16-bit offset, which is resolved into a physical address via (segment) x 16 + (offset). Although intended to address only 1 Megabyte (MB) (220 bytes) of memory, segment:offset addresses at FFFF:0010 and beyond reference memory beyond 1 MB (FFFF0 + 0010 = 100000). So this mode can actually address the first 65520 bytes of extended memory as part of the 64 KB range starting 16 bytes before the 1 MB mark—FFFF:0000 (0xFFFF0) to FFFF:FFFF (0x10FFEF). The Intel 8086 and Intel 8088 processors, with only 1 MB of memory and only 20 address lines, wrapped around at the 20th bit, so that address FFFF:0010 was equivalent to 0000:0000.[1]

(Does this make sense?  I'll explain later)

To allow running existing DOS programs which relied on this feature to access low memory on their newer IBM PC AT computers, IBM added special circuitry on the motherboard to simulate the wrapping around. This circuit was a simple logic gate which could disconnect the microprocessor's 21st addressing line, A20, from the rest of the motherboard. This gate could be controlled, initially through the keyboard controller, to allow running programs which wanted to access the entire RAM.[1]

So-called A20 handlers could control the addressing mode dynamically,[1] thereby allowing programs to load themselves into the 1024–1088 KB region and run in real mode.[1] The first user of the HMA among Microsoft products was Windows/286 2.1 in 1988, which introduced the HIMEM.SYS device driver. Starting with DR DOS 5.0 (1990) and MS-DOS 5.0 (1991), parts of the operating system could be loaded into the HMA as well, freeing up to 46 KB of conventional memory.[1] Other components, such as device drivers and TSRs, could be loaded into the upper memory area (UMA). Under DR DOS 6.0 (1991) and higher, the disk buffers (via HIBUFFERS), parts of the command processor COMMAND.COM as well as several special self-relocating drivers like KEYB, NLSFUNC and SHARE could load into the HMA as well (using their /MH option), thereby freeing up even more conventional memory and upper memory for conventional DOS software to work with.[1] Under MS-DOS 7.0 to 8.0, parts of the HMA are also used as a scratchpad to hold a growing data structure recording various properties of the loaded real-mode drivers.[2][3]

Extended Memory
(The DOS 5 manual which I purchased in 1990,despite the above claiming that it was DR DOS 5 which first introduced HIMEM.SYS, it is fully documented on page 610 and on page 611, 612 and 613. On pages 275 and 276 it describes Extended  memory and Extended memory. The way I remember which is which is by recalling those old suitcases with IX-TEND on them which could double in size. It says that most programs that use conventional memory cannot use Extended memory because the addresses that identify locations in extended memory to programs are beyond the addresses most programs can recognize. HIMEM.SYS conforms to the Lotus/Intel/Micrsoft/AST eXtended Memory Specification (XMS) version 2.0, which specifies a standard way for programs to use extended memory cooperatively.
 EMM386 is a device driver which can use extended memory to simulate expanded memory.
Microsoft said in the DOS 5 manual on the bottom of page 279: The version of HIMEM that comes with MS-DOS 5 supersedes the version of HIMEM that comes with Microsoft Windows version 3.0.If you have both MS-DOS 5 and Windows 3.0, use the version of HIMEM that comes with MS-DOS.

Expanded Memory
Another way to add memory in excess of 640K to your system is to install Expanded Memory. This is an actual board or physical memory (as opposed to XMS Virtual memory or memory within the chip) and a program. Expanded memory is divided into 16K segments called pages.The expanded memory manager maps or copies the appropriate page to an area called a page frame when a program requests information. The page frame exists in the upper memory area. Expanded memory can be slower and more cumbersome than extended memory.

The XMS running in the High Memory Area or Virtual Memory was called the Microsoft Virtual Machine.


The Microsoft Java Virtual Machine (MSJVM) is a discontinued proprietary Java virtual machine from Microsoft. It was first made available for Internet Explorer 3 so that users could run Java applets when browsing on the World Wide Web. It was the fastest Windows-based implementation of a Java virtual machine for the first two years after its release.[1] Sun Microsystems, the creator of Java, sued Microsoft in October 1997 for incompletely implementing the Java 1.1 standard.[2] It was also named in the United States v. Microsoft Corp antitrust civil actions, as an implementation of Microsoft's "Embrace, extend and extinguish" strategy. In 2001, Microsoft settled the lawsuit with Sun and discontinued its Java implementation.


https://en.wikipedia.org/wiki/Java_virtual_machine

A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages and compiled to Java bytecode. The JVM is detailed by a specification that formally describes what is required of a JVM implementation. Having a specification ensures interoperability of Java programs across different implementations so that program authors using the Java Development Kit (JDK) need not worry about idiosyncrasies of the underlying hardware platform.

The JVM reference implementation is developed by the OpenJDK project as open source code and includes a JIT compiler called HotSpot. The commercially supported Java releases available from Oracle Corporation are based on the OpenJDK runtime.



The United States v. Microsoft Corp antitrust civil actions

The U.S. government's interest in Microsoft began in 1992 with an inquiry by the Federal Trade Commission over whether Microsoft was abusing its monopoly on the PC operating system market. The commissioners deadlocked with a 2–2 vote in 1993 and closed the investigation, but the Department of Justice led by Janet Reno opened its own investigation on August 21 of that year, resulting in a settlement on July 15, 1994 in which Microsoft consented not to tie other Microsoft products to the sale of Windows but remained free to integrate additional features into the operating system. In the years that followed, Microsoft insisted that Internet Explorer (which, in addition to OEM versions of Windows 95, appeared in the Plus! Pack sold separately[3][4]) was not a product but a feature which it was allowed to add to Windows, although the DOJ did not agree with this definition.

Antitrust trial

Microsoft's proprietary extensions to Java were used as evidence in the United States v. Microsoft Corp. antitrust civil actions.

A Memorandum of the United States in Support of Motion for Preliminary Injunction in the case of United States of America vs. Microsoft claimed that Microsoft wanted to kill Java in the marketplace.

In short, Microsoft feared and sought to impede the development of network effects that cross-platform technology like Netscape Navigator and Java might enjoy and use to challenge Microsoft's monopoly. Another internal Microsoft document indicates that the plan was not simply to blunt Java/browser cross-platform momentum, but to destroy the cross-platform threat entirely, with the "Strategic Objective" described as to "Kill cross-platform Java by grow[ing] the polluted Java market."[3] 

















































Computer  manufacturers were producing machines and chips but without software. The contest was on between companies like IBM and Microsoft to come up with suitable software.



If you look at the timeline in the link above you will see that on "June 11th 1991 IBM DOS 5 was released. It featured the moving of the DOS kernel and command.com into the high memory area.
The same day, in New York, Microsoft released MS-DOS 5, followed by a party on the Hudson on board a cruise ship dubbed DOS Boat where Dave Brubeck performed 'Take Five'. The full-screen MS-MS-DOS Editor is added to succeed Edlin."

(My MS-DOS manual which I bought with my Taiwanese Eclipse 80386 machine and MS-DOS Operating System through the Bay of Plenty Polytechnic in 1990 has the Edlin Commands which create and modify ASCII files as well as Edit, the full screen MS-DOS editor which had online Help to give information about MS-DOS Editor techniques and commands. That year I also bought an external modem which came with BitCom software.)

"It adds undelete and unformat  utilities, and task swapping."

(Undelete and unformat and mirror are not owned by Microsoft.)

"GW-Basic is replaced with QBasic. It was immediately available for retail, but only as an upgrade for users of 2.11 or later."

(Our entire computer suite was equipped with machines running MS-DOS 5 in 1990 and I hadn't owned a computer -except an Epson HX-20 running basic - so mine wasn't an upgrade but a complete new package. My computer and software cost me around $12,000 New Zealand.)

"By year end (1991)  there would be about 8 million copies in use making it Microsoft's fastest ever selling software."

August 1992 Microsoft's chairman Bill Gates becomes America's richest person.



https://en.wikipedia.org/wiki/IBM_PC_DOS#1.00
IBM PC DOS (an acronym for IBM personal computer disk operating system) is a discontinued operating system for the IBM Personal Computer, manufactured and sold by IBM from the early 1980s into the 2000s. Before version 6.1, PC DOS was an IBM-branded version of MS-DOS. From version 6.1 on, PC DOS became IBM's independent product.


The IBM task force assembled to develop the PC decided that critical components of the machine, including the operating system, would come from outside vendors. This radical break from company tradition of in-house development was one of the key decisions that made the IBM PC an industry standard. At that time the private company Microsoft, founded five years earlier by Bill Gates, was eventually selected for the operating system.

IBM wanted Microsoft to retain ownership of whatever software it developed, and wanted nothing to do with helping Microsoft, other than making suggestions from afar. According to task force member Jack Sams


The reasons were internal. We had a terrible problem being sued by people claiming we had stolen their stuff. It could be horribly expensive for us to have our programmers look at code that belonged to someone else because they would then come back and say we stole it and made all this money. We had lost a series of suits on this, and so we didn't want to have a product which was clearly someone else's product worked on by IBM people. We went to Microsoft on the proposition that we wanted this to be their product.[1][citation needed][page needed]

IBM first contacted Microsoft to look the company over in July 1980. Negotiations continued over the months that followed, and the paperwork was officially signed in early November.[2][page needed]

Although IBM expected that most customers would use PC DOS,[3] the IBM PC also supported CP/M-86, which became available six months after PC DOS,[4] and UCSD p-System operating systems.[5] IBM's expectation proved correct: one survey found that 96.3% of PCs were ordered with the $40 PC-DOS compared to 3.4% with the $240 CP/M-86.[6]


Microsoft first licensed,[7] then purchased[8] 86-DOS from Seattle Computer Products (SCP), which was modified for the IBM PC by Microsoft employee Bob O'Rear with assistance from SCP (later Microsoft) employee Tim Paterson.[9] O'Rear got 86-DOS to run on the prototype PC in February 1981. 86-DOS had to be converted from 8-inch to 5.25-inch floppy disks and integrated with the BIOS, which Microsoft was helping IBM to write.[10] IBM had more people writing requirements for the computer than Microsoft had writing code. O'Rear often felt overwhelmed by the number of people he had to deal with at the ESD (Entry Systems Division) facility in Boca Raton, Florida.

Perhaps the first public mention of the operating system was in July 1981, when Byte discussed rumors of a forthcoming personal computer with "a CP/M-like DOS ... to be called, simply, 'IBM Personal Computer DOS.'"[11] 86-DOS was rebranded IBM PC DOS 1.0 for its August 1981 release with the IBM PC. The initial version of DOS was largely based on CP/M-80 1.x and most of its architecture, function calls and file-naming conventions were copied directly from the older OS. The most significant difference was the fact that it introduced a different file system, FAT12. Unlike all later DOS versions, the DATE and TIME commands were separate executables rather than part of COMMAND.COM. Single-sided 160 kilobyte (kB) 5.25" floppies were the only disk format supported.


In late 1981 Paterson, now at Microsoft, began writing PC DOS 1.10. It debuted in May 1982 along with the Revision B IBM PC. Support for the new double-sided drives was added, allowing 320 kB per disk. A number of bugs were fixed, and error messages and prompts were made less cryptic. The DEBUG utility was now able to load files greater than 64k in size.

Copy and Xcopy
MS--DOS 5 has Copy and Xcopy commands. Copy is not new and copies files from one location to another. This command can also be used to combine files.
The manual say Xcopy copies files (except hidden and system files) and also directories and subdirectories.


Phillip Walter Katz Phil Kantz.jpg

Phillip Walter Katz (November 3, 1962 – April 14, 2000) was a computer programmer best known as the co-creator of the Zip file format for data compression, and the author of PKZIP, a program for creating zip files that ran under DOS. A copyright lawsuit between System Enhancement Associates (SEA) and Katz's company, PKWARE, Inc., was widely publicized in the BBS community in the late 1980s. Phil Katz's software business was very successful, but he struggled with social isolation and chronic alcoholism in the last years of his life.

PKARC and PKWARE

Katz left Allen-Bradley in 1986 to work for Graysoft, a Milwaukee-based software company. At the time, he had worked on an alternative to Thom Henderson's ARC, named PKARC. ARC was written in C, with the source code available on System Enhancement Associates' bulletin board system (BBS). PKARC, written partially in assembly language, was much faster. Katz had a special flair for optimizing code. Besides writing critical code in assembly language, he would write C code to perform the same task in several different ways and then examine the compiler output to see which produced the most efficient assembly code. He first publicly released only PKXARC, an extraction program, as freeware. Its much greater speed caused it to spread very quickly throughout the BBS community. Strong positive feedback and encouragement prompted Katz to release his compression program, PKARC, and eventually to make his software shareware. Katz founded PKWARE, Inc. (Phil Katz Software) in 1986, with the company's operations located in his home in Glendale, Wisconsin,[2] but he remained at Graysoft until 1987.
Steve Burg, a former Graysoft programmer, joined PKWARE in 1988.

Lawsuits

In the late 1980s, a dispute arose between System Enhancement Associates (SEA), maker of the ARC program, and PKWARE. SEA sued Katz for trademark and copyright infringement. The most substantial evidence at trial was from an independent software expert, John Navas, who was appointed by the court to compare the two programs. He stated that PKARC was a derivative work of ARC, pointing out that comments in both programs were often identical, including spelling errors.[3]

On August 2, 1988, the plaintiff and defendants announced a settlement of the lawsuit, which included a confidential cross-license agreement. Under the agreement, SEA licensed PKWARE for all the ARC-compatible programs published by PKWARE during the period beginning with the first release of PKXARC in late 1985 through July 31, 1988, in return for an undisclosed payment. PKWARE agreed to pay SEA to obtain a license that allowed the distribution of PKWARE's ARC-compatible programs until January 31, 1989, after which PKWARE would not license, publish or distribute any ARC compatible programs or utilities that process ARC compatible files. In exchange, PKWARE licensed SEA to use its source code for PKWARE's ARC-compatible programs. PKWARE also agreed to cease any use of SEA's trademark "ARC" and to change the names or marks used with PKWARE's programs to non-confusing designations. The remaining details of the agreement were sealed. In reaching the settlement, the defendants did not admit any fault or wrongdoing.[4] The Wisconsin court order showed the defendants were ordered to pay damages to the plaintiff for the defendants' acts. Namely, the defendants were found to be infringing the plaintiff's copyrights, infringing trademark, as well as performing acts of unfair trade practices and unfair competition.[5]








One possible explanation is the problem programmers (coders)) were having with the original 8088 series of IBM chips. If you go the Starman's web site


As you can see, Segment F000: is embedded inside this instruction, thus the reason its location is often referenced as F000:FFF0. Although the location of this far jump instruction is essentially 'set in stone' for all PC BIOS, it's not a requirement that where it jumps to next always be the same; yet every PC BIOS we've ever examined always jumps to "F000:E05B".

Of the twelve IBM engineers assigned to create the IBM Personal Computer (model 5150), David J. Bradley[7] developed the code for its BIOS. So he's the one who, among all its other details, decided where in Memory the BIOS would place and execute the code from the first sector of the IBM PC's first floppy diskette's Boot Record. The location he chose was 0x7C00 (or 0000:7C00 in Segment:Offset notation). Unlike the first 'jump address' mentioned above (to Offset 0xE05B), later BIOS authors could not have chosen a different location in Memory for loading the initial bootstrap routines without having their code become incompatible with existing boot diskettes! So IBM (and all the PC-clone companies which followed) continued to use that same location in Memory for their hard disk drive's Master Boot Records (MBRs).




 

Make a free website with Yola