Copyright 1984 by ABComputing May 15, 1984 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Is It IBM-PC Compatible? º º º º by º º º º Don Buresh º ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Introduction ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ A year ago I was on a development team creating a PC- compatible microcomputer. I was responsible for assuring that the firmware was functionally equivalent to the IBM-PC. I came into the contract with no pre-conceptions on what constitutes a clone. During the nine months that I stayed with the company, I learned that a compatible must have the following features: ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ System Architecture ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ The microcomputer must have an IBM-PC bus with an open architecture. This means that the computer can use memory and peripheral boards manufactured by companies other than IBM. Furthermore, it means that the system unit must be physically large enough to contain these boards. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Chips ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ The major chips in the microcomputer should be in the i8088 family. This includes the i8088, i8086, i8186 and the i8286 processor chips. The computer should also use the i8272 or NEC 765 disk controller chip, the i8250A asynchronous or the i8251A synchronous/asynchronous chip, the i8259A interrupt controller chip, the Motorola 6845 CRT controller chip, and the i8237 DMA controller chip. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Numeric Processing ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ The mother board should contain a socket for the i8087 numeric processor chip or the equivalent chip that works with the other members of the i8088 family of processors. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Addressing ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ The addresses of all of the I/O ports should be the same as in the IBM-PC. Although this may not be possible, depending upon the selection of the peripheral processors, it is extremely important that the address of the Motorola 6845 be the same, regardless of whether the compatible has a monochrome or graphics monitor. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Firmware ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ The numbering of the interrupts should match the IBM-PC exactly. This issue may not seem worthy to be mentioned; however, the software engineers for the original DEC Rainbow started the firmware interrupts at 21H rather than at 01H. Since the PC-DOS interrupts also begin at 21H, you can quickly see why the Rainbow ran CP/M exclusively. The later versions of the hardware corrected this problem, with a hardware switch. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Data Segment ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ The data segment for the firmware should contain the same data items, in the same order, as in the IBM-PC. Although not a critical issue, software engineers should make every effort to ensure that the number of bytes in the compatible's data segment is equal to the number of bytes in the IBM-PC's data segment. If so, the clone can then run PC-DOS as well as MS-DOS. I do recommend that PC-compatible manufacturers add a Cursor_Address variable to their firmware. If they include this variable, they can take advantage of the linearity of Video RAM and improve the speed of the Write Character, Write Character and Attribute, and Write Teletype functions of INT 10H. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Video Ram Segment Address ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ The IBM-PC uses two Motorola 6845s, one for a monochrome display and another for a graphics display. The segment address of the monochrome adapter is 0B000H, while 0B800H is the address of the graphics adapter. IBM designated only one alpha page of video RAM for a monochrome adapter and eight alpha pages for a graphics adapter. Furthermore, the IBM-PC has only one graphics plane. I recommend that a PC manufacturer maintain these features if at all possible. A small compatibility issue is the number of graphics planes; more than one graphics plane is entirely acceptable. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Interlacing ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ In graphics mode, the IBM-PC uses the following interlacing scheme to store the scan lines. The even scan lines begin at relative address 0000H and end at 1F3FH, and the odd scan lines start at 2000H and end at 3F3FH. Pictorially, ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ 0000H ³ ³ ³ even scan ³ ³ lines ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ 1F3FH ³ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ 2000H ³ ³ ³ odd scan ³ ³ lines ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 3F3FH Although interlacing the scan lines in graphics is essential for compatibility, it is unfortunate that IBM chose this scheme in the first place. The European Common Market does not permit hardware manufacturers to sell computers with interlaced scan lines, as interlacing causes some eye strain. Some compatibles, such as the Tandy 2000, do not interlace scan lines at all. I, for one want IBM to remove this hardware feature. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ Conclusion ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ These are some of the issues that make a clone a clone. I probably left out an issue here or there. If so, please write and tell me. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ File Name: ÛÛ dos2.txt ÛÛ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ