THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL ************************************************************************ ************************************************************************ This copy of the manual is printed from the file ROMBAK.TXT which is distributed on disk through the user supported software distribution network. This manual is a copyrighted work, with permission granted for electronic media distribution ONLY; printed media distribution without the expressed consent of the copyright holder is prohibited. This electronic media distribution of this manual is an experiment in user-supported publishing. This is a specialty publication and the audience most interested in the subject matter is probably quite comfortable with the distribution and use of disks of user supported software. This file contains all of the text from the printed manual, as published by PC TECHNOTES. The figures and certain compresed-format tables from the printed manual are not reproduced in this file. The absence of this graphic material should not make a major reduction in the instructional value of this material, as most of the information could be assembled from other sources. The user supported part of the deal works the same as for software. IF YOU READ THIS VERSION OF THE MANUAL AND FIND IT TO BE USEFUL, PLEASE SHOW YOUR SUPPORT BY ORDERING THE PRINTED MANUAL. The price of $9.95 is nominal for a specialty publication like this, and you'll like having all of the figures and tables in one convenient place. A handy order form is contained in the file ORDER.TXT, which is included on the distribution disk. *********************************************************************** *********************************************************************** _____________________________________________________________________ PC TECHNOTES THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Copyright (C) 1986, 1987 by PC TECHNOTES All rights reserved. No part of this manual may be reproduced or transmitted in any form or by any means without the prior written permission of the copyright holder. PC TECHNOTES is an independent publisher, not affiliated in any way with International Business Machines Corp. As used in the title and text of this manual, "IBM PC" refers solely to a recognized industry standard for computer hardware design and operation, and not to any authorization or license from the International Business Machines Corp. Disclaimer PC TECHNOTES makes no warranties as to the contents of this manual or to the fitness of the information for any particular use. Although every effort has been made to insure that the information contained in this manual is reliable, PC TECHNOTES cannot be held responsible for any damage or loss suffered from, or any liability incurred as a consequence of the use of the information contained herein. Trademarks/Owners: IBM, IBM PC, PC-XT and PC-AT/ International Business Machines Corp. Intel/Intel Corporation. MS-DOS and GW-BASIC/Microsoft Corp. Hercules/Hercules Computer Technology. BYTE/McGraw-Hill Inc. PC TECHNOTES P.O. Box 1574 San Juan Capistrano, CA 92693 - i - THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL TABLE OF CONTENTS 1. Introduction .............................................. 1 2. PC Memory Organization .................................... 2 3. PC Memory Addressing ...................................... 5 4. PC ROM Software and Hardware .............................. 7 4.1 Software Addresses and Markers ........................ 7 ROM-BIOS ROM-BASIC 4.2 ROM Hardware on the System Board ...................... 8 5. The Making of a ROM Chip .................................. 11 5.1 EPROM Integrated Circuit Chips ........................ 11 5.2 EPROM Programmers ..................................... 12 6. Putting It All Together ................................... 14 7. So You Bought a PC-Clone .................................. 16 7.1 PC-Clone ROM Hardware ................................. 17 8. Helpful Hints ............................................. 21 Appendix A. Hexadecimal Arithmetic .......................... 22 Appendix B. ASCII Characters ................................ 25 Appendix C. Useful Software ................................. 27 Appendix D. EPROM Programmer Sources ........................ 29 - ii - THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 1 1. INTRODUCTION You are a cautious computer user. Should your important PC software be damaged, you know that you have backup copies of everything in a safe place. Everything, that is, except the most critical item of all .... the system software residing in the read-only-memory (ROM) chips installed on your IBM PC's motherboard. The built-in software in the IBM PC's ROM chips contains the primitive system startup and initialization routines, the Basic Input/Output System (ROM-BIOS) and the core of the BASIC and BASICA language interpreters (ROM-BASIC). Without the ROM-BASIC your IBM BASIC Interpreter disk files are inoperative. Without a functioning ROM-BIOS your applications software is useless. Without the system startup routines your PC turns into an expensive paperweight. So what? These ROM chips are standard IBM parts and you can always obtain replacements from your dealer. Right? Well, maybe ..... The IBM PC family of microcomputers is known for an open architecture built around commercially available components, but IBM has carefully guarded the ROM-based system software that distinguishes them from all of the compatibles and clones. Under the right circumstances, you may obtain a ROM chip replacement through an authorized IBM dealer, but you will probably have to deliver your IBM computer to such a dealer and experience a wait for the replacements to be installed. If your dealer is a mail order house in another state, or is local but uncooperative, a malfunctioning ROM chip could spell major inconvenience or loss of business. At worst, you could find yourself replacing the motherboard, or even the system unit itself, at a cost much greater than the price of a backup ROM chip. You can make a backup set of system software ROM chips for your IBM PC. Even if you have no prior computer circuitry or systems programming experience, you can readily master the few necessary technical concepts. This manual is intended to be a straightforward compilation of the key technical information, and the practical applications of such, that a PC owner should understand before attempting to backup his PC's ROM software. All of the technical details are in the public domain. The material is logically organized as a tutorial on the structure of the PC's RAM and ROM memory, the way that the PC addresses memory locations, the arrangement and variations of the ROM software and hardware, and the types of ROM chips and programming hardware that are on the market today. Also included is a guide to the all important subject of hexadecimal arithmetic (don't leave home without it), information about two very helpful pieces of public domain software, and notes on sources of ROM programming hardware for the PC owner. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 2 2. PC MEMORY ORGANIZATION This chapter describes the organization of random-access-memory (RAM) and read-only-memory (ROM) inside the PC and the predefined functions of various blocks of this memory. (If you are not familiar with hexadecimal arithmetic, please go to Appendix A. before reading any further, as you will need this to understand the notation for memory block references.) Note that this is a general structure discussion, and that the specifics of memory addressing will be covered in the next chapter. The memory organization in the PC is a result of the capability of the Intel 8088 CPU to address the memory. The 8088 can address up to 1,024K (or 1,048,576) bytes of memory. Each byte is referred to by a 20- bit address which may be expressed as an equivalent 5-digit hexadecimal number. With such an addressing scheme, the full 1,024K bytes may be covered by address values in the range from hex 00000 to hex FFFFF. By definition, the PC's addressable 1,024K bytes of memory are divided into 16 blocks of 64K bytes each. Each block is then identified by the first, or high order, hex digit of the hexadecimal addresses of all bytes in that block. For example, the first 64K byte block of memory at addresses hex 00000 through 0FFFF is called the 0 block. Similarly, the last of the 64K byte memory blocks at addresses F0000 through FFFFF is called the F block. In theory, there is no functional boundary between these 16 blocks of memory. The block convention is used partly due to the specifics of the addressing scheme (more on this in the next chapter) and partly because the overall memory usage scheme developed by IBM assigns distinctly different uses block by block. The outline of IBM's memory block assignments is shown in Figure 2-1. The first ten memory blocks (blocks 0 through 9) are defined as RAM in all of the PCs. This is ordinary working memory, up to 640K bytes. All PCs have memory installed in at least the first 64K block, or block 0, the lowest addresses of which are used by the operating system software and are not available for general user applications. Any additional RAM occupies a contiguous address space from block 1 up to the top of block 9. If the PC is not fully populated with RAM, the corresponding address blocks are left idle with no function. The last six memory blocks are reserved for various system and hardware support functions. The A and B blocks, physically located on the video controller circuit board, are used for video memory in the PC, PC-XT, and PC-AT models. The B block is divided into two 32K byte sub-blocks used by the conventional Monochrome Display Adapter and the Color/Graphics Adapter. The A block of memory is reserved for video memory expansions, such as those recently introduced as part of the THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 3 Enhanced Graphics Adapter and the Professional Graphics Adapter. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ figure goes here ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure 2-1. IBM PC Memory Block Assignments The C block of memory is set aside for any additions to the ROM system software that is permanently installed on the motherboard. These additions are usually BIOS extensions to support new types of peripheral devices. This memory block was first used for the ROM-BIOS routines supporting the hard disk drive that appeared with the PC-XT model. Similar to the A and B blocks' video memory, this C block memory is typically installed in the PC as part of an expansion circuit board. According to the IBM memory block outline, the D and E blocks are set aside for ROM memory in "plug-in" cartridge software, such as that used with the PCjr model. Cartridge software is not presently supported in the regular PC, PC-XT, and PC-AT models, although it could conceivably be added to any of these models. The F block of memory is set aside for the ROM software that is permanently installed on the PC's motherboard. This memory area is home to the system startup and diagnostics routines, the ROM-BIOS functions, and the ROM-BASIC (or "cassette" BASIC) routines. It is because of the contents of the F block of memory that this manual exists: this is where THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 4 the PC owner may seek to backup the most important software used by his computer. The organization and versions of the several software (actually "firmware", if you want to be particular) components housed in the F block ROM are detailed in Chapter 4. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 5 3. PC MEMORY ADDRESSING As mentioned in the previous chapter, the Intel 8088 microprocessor is capable of addressing up to 1,048,576 memory locations, which is the largest value representable by a 20-bit binary number (2 raised to the 20th power). The 8088, as a 16-bit processor that cannot work directly with binary numbers containing more than 16 bits, would not be able to address more than 65,536 (2 raised to the 16th power) memory locations if it were not for a clever scheme known as segmented addressing. Segmented addressing divides the total addressable memory into a number of segments containing 64K bytes each. Each segment begins at a memory location that is evenly divisible by 16 bytes. This beginning location is known as the segment address, or segment paragraph. Individual bytes within this memory segment are referenced by an additional address known as the offset address. The offset address, which is always measured relative to the beginning of a segment, points to an exact location within the 64K byte segment. Physical memory addresses are created by combining the 16-bit segment paragraph with the 16-bit offset address, as illustrated by the binary addition shown in Figure 3-1. In representing memory addresses that are multiples of 16 bytes, the segment paragraph is thus shifted four binary bits to the left. Adding the segment paragraph to the offset address gives a 20-bit address, which now can access the full 1,024K bytes of addressable memory in the PC. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ figure goes here ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure 3-1. Binary Addition of 16-Bit Segment Paragraph and Offset Address to Yield a 20-Bit Segmented Address THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 6 The previous chapter stated that 1,024K bytes of addressable memory may be referenced by means of a 5-digit hexadecimal number. Since the segment paragraph is always a multiple of 16 bytes, its hexadecimal value will always have a zero in the last place, such as hex FE6A0 or hex 34560. In use, the segment paragraph is expressed as a 4-digit hexadecimal number, with the units place zero dropped, in order to yield an equivalent 16-bit binary value for manipulation by the 8088 microprocessor. The offset address is likewise expressed as a 4-digit hexadecimal number, which also thoroughly covers the 64K bytes contained in the memory segment. As for notation, the segmented address is written as nnnn:nnnn, with the segment paragraph address on the left side of the colon and the offset address on the right. To put all of this together, consider the evaluation of a segmented address that is written as 1234:6789 12340 Segment Paragraph Address (hex), shifted left four bits + 6789 Offset Address (hex) ÄÄÄÄÄÄÄ 18AC9 Full 20-bit Segmented Address (hex) This expanded 20-bit address is for a byte physically located a little more than half-way into block 1 of the PC's addressable memory. Since a segment can begin as frequently as every 16 bytes, it is quite easy to express any particular memory location by means of a variety of segmented addresses, depending upon the choice of the segment paragraph. When discussing PC memory in terms of IBM's block outline, it is easiest to use segment paragraph addresses that correspond to the beginning addresses of the sixteen memory blocks. For the remainder of this manual, the F block ROM memory will be described using segmented addresses of the form F000:nnnn, where nnnn is the offset address within this 64K byte block. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 7 4. PC ROM SOFTWARE AND HARDWARE In this chapter we will describe the basic organization of the F block ROM software (firmware) in the PC, and note some of the typical software markers and IDs that will be useful to know about before you explore on your own. You will also learn about the typical ROM hardware configuration in the various PC models, and how this relates to the software organization. Beginning in this chapter, references will be made to the contents of specific memory locations in the F block ROM. You can scan these addresses using the DOS utility DEBUG or a simple BASIC program to display the value of each byte. Much more conveniently, you can zoom around the ROM contents by using a memory display utility such as the excellent public domain program CORELOOK. Appendix C describes the necessary DEBUG commands and BASIC program statements, as well as the features and use of CORELOOK. 4.1 ROM SOFTWARE ADDRESSES AND MARKERS The F block ROM software is arranged to occupy memory address ranges consistent with the start/end addresses of eight sequential 8K (2000 hex) byte sub-blocks. This is not totally arbitrary, as the ROM chips are made in various capacities that are compatible with this sub-block size. In the IBM PC ROM set, the separate functional sections of the ROM software (BIOS and ROM-BASIC) start at the beginning of an 8K byte sub-block and spread over one or more of these sub-blocks. There may be sections of empty memory addresses scattered throughout these sub-blocks. In the PC and PC-XT models, the system startup and ROM-BIOS routines are located in the highest address 8K byte sub-block, from address F000:E000 through F000:FFFF. If you display the character representations of the hex code, you can find some bits of code at the beginning of this memory segment that appear to identify IBM's handiwork. At the end of this sub-block, IBM has encoded a ROM version release date and a machine ID marker. The ROM version release date is located in an 8-byte memory area from F000:FFF5 through F000:FFFC. This date is in the common American date format with two digits apiece for the month, day, and year. As listed below, this date marker is useful for identifying the particular IBM new machine release and/or ROM update. Note that the ROM release date is essentially the ROM-BIOS version date since the ROM-BASIC code has remained unchanged at least since the 10/27/82 release. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 8 Release Date IBM Machine / Update ÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 04/24/81 Original PC 10/19/81 Revised PC (bug fixes) 08/16/82 Original PC-XT 10/27/82 Upgrade of PC to PC-XT BIOS level 11/08/82 Original Portable PC (used in later XTs) 01/10/84 Original PC-AT (6 MHz Model 068) 06/10/85 Upgraded PC-AT 11/15/85 Upgraded PC-AT (8 MHz Model 339, with 101-key enhanced keyboard) 01/10/86 Upgraded PC-XT ** 05/09/86 Upgraded PC-XT ** ** Revision for 101-key enhanced keyboard. See the note at the end of this Chapter. The machine ID is a single byte located at F000:FFFE. The published values for the IBM machine ID markers are listed below. Note that these ID: Dec Hex Machine ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 255 FF Original PC 254 FE PC-XT and Portable PC 252 FC PC-AT 251 FB Upgraded PC-XT ** machine ID markers are apparently not always consistent: there are reported instances of PC-XTs bearing the PC marker. In any event, you may want use this ID marker in the ROM-BIOS as a secondary means of identifying the code's vintage. Also in the PC and PC-XT models, the ROM-BASIC code resides within a 32K byte area of F block memory from addresses F000:6000 through F000:DFFF. As mentioned above, this code has been unchanged for quite some time. As of now, there is no particular BASIC release date marker to be concerned about as long as you deal with a ROM release date of 10/27/82 or later. In the PC-AT model, the ROM-BIOS routines have been expanded considerably to accommodate the additional capabilities of this machine. The primary BIOS routines and the ROM-BASIC are in the same locations as in the PC and PC-XT models, but the expanded BIOS routines have been "wrapped around" to occupy the lowest 24K bytes of F block memory from addresses F000:0000 through F000:5FFF. 4.2 ROM HARDWARE ON THE SYSTEM BOARD In keeping with the 8K byte sub-block convention described above, the system motherboard in the IBM PC and PC-XT models carries five 8K THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 9 byte ROM chips for a total of 40K bytes (32K bytes of ROM-BASIC and 8K bytes of BIOS) of system ROM. Components on the motherboard are indexed by means of alphanumeric codes printed on the circuit board. The ROM sockets on the IBM PC/XT motherboard are labeled with a code sequence such as U29 through U33, for a five ROM chip setup. The highest number socket typically corresponds to the highest F block memory addresses. Additional information on the location of the ROM sockets on the motherboard may be found in Chapter 7. The socket containing the PC/XT ROM-BIOS will be the highest address portion of memory in the F block. This BIOS is typically carried in an 8K byte ROM chip, using memory addresses F000:E000 through F000:FFFF, as described earlier. The full set of 8K byte ROM chips fill up the IBM PC/XT ROM sockets as shown below. Note that the eight possible 8K byte ROM chip/sockets are numbered 0 to 7, from lowest to highest memory address. ROM Socket No. Memory Addresses Function ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄ 7 (U33) F000:E000 - F000:FFFF ROM-BIOS 6 (U32) F000:C000 - F000:DFFF ROM-BASIC 5 (U31) F000:A000 - F000:BFFF " 4 (U30) F000:8000 - F000:9FFF " 3 (U29) F000:6000 - F000:7FFF " As shown above, additional ROM chips for the ROM-BASIC routines will be located below (address-wise) the ROM-BIOS in contiguous memory. The IBM PC-AT utilizes a quite different ROM hardware configuration to make optimal use of the 16-bit data bus on the PC-AT's 80286 microprocessor. The ROM chips are typically designed as "by 8" devices, meaning that they can be accessed 8 bits at a time. Since 16-bit data read accesses are faster if the system doesn't have to read the same ROM chip twice in sequence, IBM arranged the PC-AT ROMs as two 8-bit ROMs with their addresses interleaved. In other words, all of the even numbered bytes (at offsets 0,2,4,6,....) are on one chip and all of the odd numbered bytes (at offsets 1,3,5,7,....) are on the other chip. With this arrangement, each 16-bit data access can set a single segmented address and read one "slice" out of the pair of interleaved ROM chips. Even though the ROM chip hardware addresses are interleaved on the data bus in the PC-AT, the F-block ROM-BIOS and ROM-BASIC code is still located within the same memory address areas described in section 4.1. The original model IBM PC-AT motherboard used four 16K byte ROM chips to carry the full 64K bytes of ROM available in the F block. The four-chip ROM arrangement in this model IBM PC-AT is as follows; THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 10 ROM Socket No. Memory Addresses Function ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 3 F000:8001 - F000:FFFF ROM-BIOS, BASIC: Odd Bytes 2 F000:8000 - F000:FFFE ROM-BIOS, BASIC: Even Bytes 1 F000:0001 - F000:7FFF ROM-BIOS, BASIC: Odd Bytes 0 F000:0000 - F000:7FFE ROM-BIOS, BASIC: Even Bytes Although the current IBM PC-AT motherboard has four ROM sockets as in the original model, apparently only two of these sockets are mapped to the F block of memory. A pair of the newer 32K byte ROM chips are now used to carry the F block memory. This two-chip ROM arrangement in the IBM PC-AT is as follows; ROM Socket No. Memory Addresses Function ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 F000:0001 - F000:FFFF ROM-BIOS, BASIC: Odd Bytes 0 F000:0000 - F000:FFFE ROM-BIOS, BASIC: Even Bytes ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ NOTE: Upgraded PC-XT ROM-BIOS for Enhanced Keyboard The PC-XT ROM-BIOS versions dated after 01/10/86 and containing a machine ID marker of FB hex are upgrades to accommodate the new 101-key enhanced keyboard. The new features of this keyboard can be used only with systems that support it by means of a substantially enhanced interrupt 16H handler in the BIOS. This additional code now causes the PC-XT's BIOS to spill out of the previous F000:E000 to F000:FFFF memory space and into the 8K byte sub-block at F000:0000 to F000:1FFF. This is similar to the manner in which the PC-AT's expanded BIOS routines have been "wrapped around" to occupy the lowest F block memory addresses. Working with the ROM software from these latest model PC-XT's will require that extra steps be taken, similar in theory and technique to those described in this manual, to provide for the additional ROM-BIOS 8K byte sub-block at addresses F000:0000 to F000:1FFF. This may include using a different capacity ROM chip and a modified allocation of code among the chips than what is described elsewhere based on the earlier model PC-XT. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 11 5. THE MAKING OF A ROM CHIP This section describes the Erasable Programmable Read Only Memory (EPROM) chips used to backup the PC's ROM software, and the hardware used to burn the program code into these chips. 5.1 EPROM INTEGRATED CIRCUIT CHIPS The types of EPROM chips used to backup the PC, PC-XT and PC-AT ROM software are members of what is known as the 27xxx series. The chips in this series are similar in physical appearance, as shown in Figure 5.1, but vary in capacity, access speed, and programming characteristics. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ figure goes here ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure 5-1. Features of the 27xxx EPROM Family You will need to obtain and work with the correct capacity 27xxx EPROMs for your ROM backup. The "xxx" characters in the 27xxx chip number stand for the EPROM capacity in kilobits, or eight times the kilobyte capacity. The table below shows the capacities for several members of this series. Chip Capacity Chip Number bits bytes ÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄ 2764 65,536 8,182 (8K) 27128 131,072 16,384 (16K) 27256 262,144 32,768 (32K) 27512 524,288 65,536 (64K) Throughout this manual, the PC ROM software has been described in terms of kilobytes, so the capacities shown in parentheses are the ones that you need to work with. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 12 In addition to capacity, the 27xxx series EPROMs are available in different access speeds of 200, 250, or 450 nanoseconds. This access speed is typically designated by some form of suffix (usually 2 or 3 digits) to the basic chip number. For instance, a number 2764-25 would indicate an 8K byte capacity with a 250 nanosecond access time. You should use EPROMs with access speeds that at least meet your PC's original specifications, but faster chips will also work. Other letters may appear in the chip number, such as 27xxxA (a lower programming voltage) or 27Cxxx (low power consumption CMOS technology chips). Consult with your EPROM vendor for issues of chip compatibility. Also, some EPROM manufacturers may add characters to these basic chip numbers, and, again, your vendor can help in making sure that you obtain the functional type that you need. As the "E" in EPROM stands for erasable, a few words about the erasure window are definitely in order. If you look through the small circular window on the EPROM you can see the tiny semiconductor chip that constitutes the memory. While the 27xxx series EPROMs are programmed by applying varying voltages to the device's pins, they are erased by ultraviolet light shining through the erasure window onto the integrated circuit chip. This erasure technique typically involves exposing the unshielded EPROM for 10 to 20 minutes under a high intensity ultraviolet bulb in a specially built EPROM eraser. An EPROM's contents can, however, be lost by prolonged exposure to the low level of ultraviolet light present in common light sources. Before you burn your code onto an EPROM, permanently cover the erasure window with a piece of opaque tape or other such material. In addition to normal erasure, the EPROM's contents can be zapped by static charges developed during handling. Be cautious about grounding your equipment and yourself before handling these devices. Your vendor should place the EPROMs in a protective anti-static tube typically used for transporting integrated circuit chips. As far as EPROM sources and prices, a good place to start is with the advertisements in the back sections of major computer magazines such as BYTE or PC MAGAZINE where numerous vendors offer fairly low mail order prices. If you can find a local discount electronics supplier, you may well be able to beat the mail order houses' total cost. 5.2 EPROM PROGRAMMERS The programming hardware used to record code onto a blank EPROM chip is commonly referred to as a "blaster" or "burner". Originally, these devices were available as costly stand-alone professional equipment, usually designed to program a wide variety of ROM chips. If you have access to one of these commercial style EPROM burners and plan to use it for your ROM backup procedures, then you can probably skip the rest of this section. Continue reading if you need to obtain an EPROM programmer. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 13 Recently, a number of very specific and relatively inexpensive EPROM blasters have appeared that are obviously targeted for the PC hobbyist market. These new PC-based EPROM blasters are designed as plug-in circuit cards that fit into one of the PC's expansion slots and are typically capable of burning only the 27xxx series of EPROMs. These blasters come with software that runs on an IBM PC or compatible. While these blasters are pretty much "bare bones" hardware for one-at-a-time burning, the accompanying software usually offers the following convenient features; o Programs various 27xxx series EPROMs o Menu driven selection of EPROM type sets programming voltage o Read/write EPROM to/from buffer o Read/write buffer from/to disk file o Verify EPROM is blank o Compare EPROM and buffer o Variable buffer and EPROM offsets and read/write length o Copy PC memory into buffer o Edit buffer contents You should look for at least these features in a PC-based EPROM blaster that you would obtain to use to backup your PC's ROM. You can do without the last two features on this list if you make use of other available software. For example, you could use the public domain program PC-DUMP (see Appendix C.) to download PC memory to a disk file which could then be edited using the DOS utility DEBUG. With reasonable user documentation and good menu driven software, the process of burning an EPROM is actually quite simple. At the risk of appearing to stop short of giving out the really meaty information on the actual process of blasting the EPROMs, we can only advise you that using one of these PC-based menu driven EPROM programmers is a pretty uninspiring operation. Other than some of the helpful hints contained in Chapter 8, there is not much more that this manual can do to prepare you to use one of these devices. Appendix D. discusses some of the sources where you can find these low cost PC-based EPROM blasters for sale, as well as some typical prices at the time of this writing. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 14 6. PUTTING IT ALL TOGETHER Now that you have covered all of the background details related to backing up your ROM software, its time to develop a summary of the steps that you might typically go through. The first step, obviously, is to prepare your backup disk files of the ROM software and store these away for safekeeping. The whole point of this manual is protection against a failure of, or damage to, the ROM chips, so download your backup now. 1. Download specific portions of the ROM code to individual disk files. Depending on the capacity of the ROM chips used in your particular model of PC (Chapter 4), the code in these downloaded disk files should correspond exactly to the ROM memory addresses that would be occupied by the replacement EPROM chips. (You could download the entire F block contents to a single file and later break this up into the appropriate sub-blocks using the software provided with some EPROM programmers, but the specific file approach will assure flexibility and reduce the risk of errors down the road.) As an example, you might backup your PC-XT ROM using the following parameters with the PC-DUMP program (Appendix C). Segment Paragraph Bytes Written Address to Disk File Disk File Name ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ FE00 2000 (hex) FE00ROM.DAT FC00 " FC00ROM.DAT FA00 " FA00ROM.DAT F800 " F800ROM.DAT F600 " F600ROM.DAT The five backup files created in this example correspond to the five 8k byte type 2764 EPROM chips that could be programmed as replacements. In the event that you someday need to replace a damaged or faulty ROM chip(s) in your PC, the following steps are typical. 2. Determine, if possible, which of the original ROM chips is faulty. If this is not possible, plan on replacing the full set. If you replace the full set and your curiosity is high, you can return the individual original chips on a trial-and-error basis and isolate the culprit chip. 3. Purchase the type of blank EPROM chip(s) that are to be used with your PC's particular ROM hardware capacity and speed (Chapter 5). THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 15 For a full ROM set in a PC-XT, you would buy five type 2764 EPROMs with an access speed of 250 nanoseconds (or faster). 4. Using either a PC-based or a stand-alone EPROM programmer, burn the code from the backup disk file(s) onto the blank EPROM(s). If you have prepared your backup disk files as described in step (1) above, this operation will involve one EPROM per disk file. Label the programmed EPROM(s) with the corresponding ROM software memory address to assure matching with the proper ROM socket(s) during installation. 5. Open up your PC's case, locate the row of motherboard sockets holding the ROM chips, and look for the individual socket labels printed on the circuit board (Chapter 4). Determine the ROM sockets corresponding to high and low memory addresses, and make certain that you can identify the memory addresses of all involved sockets. Note the orientation of the casing notches on the existing ROM chips. 6. Remove the existing ROM chip(s) and insert the replacement EPROM(s), making certain that all of the EPROM's pins properly contact in the socket. If the two pin rows seem to be wider than the socket holes, tilt the chip and lightly insert one row then press the chip towards the inserted row until the other row can be inserted. Be sure that the replacement EPROM and the socket are properly matched according to the ROM memory addresses described in Chapter 4. 7. After installing the replacement EPROM(s) and successfully booting the PC, verify the contents of the replacement chip(s). In the same manner that the original ROM software backup disk file was made, download a disk file copy of the memory contents on the replacement EPROM(s). Check this validation disk file against the original backup disk file using the DOS file comparison utility program COMP.COM. The two files should compare with no reported mismatches. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ IMPORTANT NOTE The ROM chips used in some models of the IBM PC are not pin-compatible with the 27xxx series EPROM chips. If you encounter this situation, the EPROM usage described here will not allow you to install the backup read-only memory on your original IBM motherboard. Obtaining and installing an inexpensive clone motherboard to carry your 27xxx EPROM-based backup ROM set may be an attractive option in the event of an original ROM malfunction, depending upon the price of the IBM replacement ROMs and how you value inconvenience and/or loss of business due to delays. ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 16 7. SO YOU BOUGHT A PC-CLONE The personal computer marketplace has seen a proliferation of new machines that are often described as IBM "compatibles" or "clones". Some of these models, usually from major manufacturers of computer hardware and peripherals, are unique hardware designs offering IBM compatibility by running the MS-DOS operating system and the applications software originally written for the IBM PC. More common now are the PC-Clone computers that clearly attempt to duplicate the look, feel, and circuitry design of the real IBM models. Assembled from generic components, these low price PC-Clones are being sold by hundreds of vendors, from chain computer stores and large mail order outlets to the garage and swap meet crowd. These PC-Clones are available due to the fact that IBM chose to design its family of personal computers around readily available components and to openly disclose the details of the system architecture and operation. This open architecture cleared the way for the avalanche of third-party hardware and software enhancements that are on the market today. It also allowed a number of enterprising printed circuit board designers and manufacturers to provide the inexpensive IBM compatible motherboards for the PC-Clones. One part of the PC design, however, that IBM did not release into the public domain is the system software that is permanently recorded in read-only-memory (ROM) integrated circuit chips mounted on the motherboard. This built-in software contains the primitive system startup and initialization routines, the Basic Input/Output System (ROM-BIOS), and the core of the BASIC and BASICA programming languages (ROM-BASIC). By copyrighting the ROM software and declining to license its use in any computers but its own, IBM managed to retain control of the key to this otherwise open system. Over the years, PC systems programmers have been able to write legal functional equivalents of the system startup routines and the ROM-BIOS machine language routines that provide support services for the operation of the computer. Every PC-Clone comes equipped with a work-alike ROM-BIOS, some of which are reputed to be very good and some of which are homebrew hacks of unknown reliability and compatibility. The frequently seen PC-Clone advertising claim of "fully IBM compatible" may be a compromise: while the well behaved popular software may work fine, the more quirky and/or aggressive system utilities and applications programs may fail due to an unsupported or incomplete BIOS. The PC-Clones do not, as a rule, come with a hardware functional equivalent of the ROM-BASIC software, even though most of the PC-Clone motherboards are built with the appropriate sockets to hold these ROM chips. (This may be a measure of the degree to which clone components are carbon copies, when circuit board space is taken up by sockets that the merchants can not possibly fill with the intended chips.) Instead, THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 17 PC-Clone owners wishing to run interpreted IBM BASIC or BASICA programs must use an all-disk-based functional equivalent, such as Microsoft's GW-BASIC, which combines the disk and ROM routines of the original IBM BASIC and BASICA. Not all of the disk-based BASIC interpreters are fully compatible with the IBM BASIC interpreters, and disk versions will not usually support add-on language extensions, such as the Hercules HBASIC graphics extension, designed to look for and modify IBM BASICA. You do not, however, have to pass up the tremendous price advantage of a PC-Clone just because it does not come equipped with a True Blue set of ROM software. If you are willing to be a do-it-yourself computer experimenter, you can make a full set of 100% IBM compatible ROM chips and install them in your PC-Clone. You can begin by exploring the structure of ROM-based software on a PC using convenient public domain software. And your ROM programming experiment can be completed with fairly inexpensive and easy-to-use hardware advertised in the major computer magazines or available through local electronics suppliers (yes, and even at some swap meets). Since the marketplace in filled with clones of the IBM PC, PC-XT, and PC-AT models, this manual describes the differences in ROM software and hardware among these three original IBM computers. In keeping with the theme of this manual as an educational text, you will not find specific references or instructions for any particular brand or model of PC-Clone. In mastering this material, you should acquire an understanding of ROM software and hardware anatomy and learn what to look for to determine if your PC-Clone is a suitable candidate for surgery. It is up to you, however, to perform the operation to find out if the patient will be better than new. One final note. It should be perfectly clear that, in making your own experimental set of compatible ROM chips, you will be dealing with software copyrighted by IBM. YOU ARE RESPONSIBLE FOR ASSURING THAT YOUR USE DOES NOT VIOLATE THE COPYRIGHT LAWS PROTECTING IBM'S SOFTWARE. The PC-Clone vendors already know all that there is to learn from this manual, and they are not foolish enough to make illegal copies of ROM sets for sale or trade. Keep your activities educational and hobby oriented, and enjoy the experience of learning about ROM technology and the inner workings of your computer. 7.1 PC-CLONE ROM HARDWARE The PC/XT-Clone motherboards typically contain at least five sockets for Erasable Programmable Read Only Memory (EPROM) chips, only one of which will be used for the clone's BIOS. Figure 7-1 illustrates the general location of the ROM chips/sockets on an PC/XT-Clone motherboard. Although the position of the EPROM sockets is different on some of the clone motherboards, the row of sockets is easily identified by the presence of the EPROM chip that carries the ROM-BIOS. (The EPROM chips themselves are described in Chapter 5.) THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 18 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ figure goes here ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure 7-1. Typical XT-Clone Motherboard Component Layout Components on the motherboard are indexed by means of alphanumeric codes printed on the circuit board. Depending on the manufacturer, the EPROM sockets on the PC/XT-Clone motherboard will be labeled with a code sequence such as U30 through U34 (for a five-socket setup), or perhaps something a little more obvious like ROM3 through ROM 7. Look at the label for the socket that holds the ROM-BIOS, it should be the highest numbered socket. The socket containing the PC/XT-Clone ROM-BIOS will be the highest address portion of memory in the F block. This BIOS is typically carried in an 8K byte EPROM chip, using memory addresses F000:E000 through F000:FFFF, as described earlier. If you continue to use 8K byte EPROMs for your experiment, you would fill up your PC/XT-Clone's EPROM sockets as follows; THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 19 ROM Socket No. Memory Addresses Function ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄ 7 F000:E000 - F000:FFFF ROM-BIOS 6 F000:C000 - F000:DFFF ROM-BASIC 5 F000:A000 - F000:BFFF " 4 F000:8000 - F000:9FFF " 3 F000:6000 - F000:7FFF " 2 (not used) 1 " 0 " As shown above, additional EPROMs for the ROM-BASIC routines will be located below (address-wise) the ROM-BIOS in contiguous memory. Note also that if your PC/XT-Clone motherboard has more than five ROM sockets, these extras will not be used when installing a compatible ROM set. Although the new IBM PC-AT model uses two F block ROM sockets in what appears to be a bank of four sockets, many of the AT-Clones are built with only two EPROM sockets on the motherboard. For this reason, the AT-Clone ROM will be described for a two-chip two-socket setup. If you find that your AT-Clone has two EPROMs residing in a four-socket bank, you can adapt the following descriptions to the even and odd address sockets of the pair that are used. Since the PC-AT hardware design uses interlaced address ROMs to cover the entire F-block of memory addresses, your AT-Clone will have EPROMs in both of the available sockets. You will have to look at the printed component labels and/or consult your machine's documentation to determine which is the even or odd address socket. When you experiment with your compatible ROM set, you will fill up your AT-Clone's EPROM sockets as follows; ROM Socket No. Memory Addresses Function ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 1 F000:0001 - F000:FFFF ROM-BIOS, BASIC: Odd Bytes 0 F000:0000 - F000:FFFE ROM-BIOS, BASIC: Even Bytes Unused ROM sockets are not an issue in those AT-Clones designed to use a pair of 32K byte EPROMs. For those of you receiving your initial introduction to the 27xxx family of EPROM chips used on the PC-Clone motherboard, a good place to start is "under the hood" of your computer. Remove the case from your PC-Clone and look for the ROM sockets, as shown in Figure 7-1, and the ROM-BIOS chip(s). The ROM BIOS chip supplied with your PC/XT-Clone is typically a type 2764 EPROM. In an AT-Clone, the ROM-BIOS will typically be provided on a pair of type 27256 EPROMs. If you are "under the hood", note the chip number and speed THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 20 designation printed on the ROM-BIOS chip(s). The numbers may be covered up by a piece of tape or other opaque material placed over the erasure window. If so, you should CAREFULLY peel back enough of the tape so that you can read the chip number. If you have correctly located the ROM chip(s), and your PC-Clone is a candidate for the type of ROM software backup covered by this manual, then the chip designations should correspond to the descriptions in Chapter 5. You should obtain and use a uniform set of 27xxx series EPROMs with an access time equal to, or less than, that of the ROM-BIOS EPROM that was supplied with your PC-Clone. You should probably stay with the same type of 27xxx chip as provided for your PC-Clone's ROM-BIOS, or consult with your EPROM vendor for issues of chip compatibility. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 21 8. HELPFUL HINTS This section contains an assortment of additional helpful hints and practical ideas related to PC ROM backup procedures, based on the ROM programming experiences of others. A. First and foremost, there is NO CERTAINTY that either the IBM BIOS or ROM-BASIC will work on all PC motherboards - although it seems more likely that the ROM-BASIC should work in cases where system hardware incompatibility prevents a BIOS replacement. B. Compatibility of the ROM-BIOS can require a specific release date (See Chapter 4.). For example, a motherboard designed as an XT may not work with a BIOS associated with one of the original/updated IBM-PC release dates. C. Buy an extra EPROM chip or two. These devices are sensitive to static charges, and you can easily zap one during handling and installation. Having an extra one on hand may save a lot of frustration, especially if you buy them through the mail. D. Make a disk copy of the applicable memory contents before you attempt to remove any ROM chip from the motherboard of a PC. This is easy insurance in the event that you damage the original chip in removing it from its socket and later decide to use it again. With a backup disk copy on hand, you can always program a replacement. E. The variations in the 27xxx series EPROMs (27xxx, 27Cxxx, 27xxxA) require different programming voltages to be applied, either 21 or 12.5 volts. The EPROM programmer hardware or software should clearly allow you to either specify exactly which chip variation is to be programmed or allow you to specify which voltage level to use. Using too high of a programming voltage can damage a chip. If in doubt, ask your EPROM vendor about the proper voltage for the chips that you buy. F. Pulling EPROM chips from their sockets without damaging them can be a little tricky if you aren't using the proper tool. The fingers often aren't enough to do the job and you can easily mutilate the chip's pins or fracture the casing by extracting it with pliers large enough to span the chip. If you are going to do much reinstalling of EPROMs, you should consider obtaining a special chip puller tool. These are available at electronics suppliers for about the same price as two or three ruined EPROM chips. G. The EPROM chips must be oriented properly when installed in the sockets on the motherboard. Before removing your PC's ROM chips, note the location of the notched end of the chip casing. Any EPROMs that you install should be inserted into the sockets with the casing notches aligned in this same direction. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 22 APPENDIX A. HEXADECIMAL ARITHMETIC Every operation in a computer is based on binary numbers, which tend to become cumbersome to represent in print when the numerical values are large. Hexadecimal notation is a convenient way to represent large binary numbers. Hexadecimal numbers are base-16, just as the familiar decimal numbers are base-10. Since we still are limited to the ten digits (0 through 9) in our decimal system, we need to define an additional six characters to use to represent the sixteen digits (0 through 15) necessary for a base-16 numbering system. In hexadecimal notation, the characters A through F are used to represent the values 10 through 15, as shown below. Hex Decimal Hex Decimal ÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄ 0 0 8 8 1 1 9 9 2 2 A 10 3 3 B 11 4 4 C 12 5 5 D 13 6 6 E 14 7 7 F 15 Hexadecimal numbers are constructed from hex digits in the same manner that you build decimal numbers. For example, the decimal number 5500 would be expressed as 157C in hex notation, as follows; 1 times 4096 (16x256) = 4096 5 times 256 (16x16) = 1280 7 times 16 = 112 12 times 1 = 12 ÄÄÄÄÄ 5500 Just as each successive place in decimal notation represents the next higher power of ten, each successive place in hexadecimal notation represents the next higher power of sixteen. Hex numbers work so well as substitutes for binary numbers because each hex digit represents four binary bits. As shown in Figure A-1, a four bit binary number has sixteen possible combinations, requiring a base-16 system to cover all combinations with one character. The PC generally handles data as either eight bit bytes or two byte (16-bit) words requiring two or four digit hex representations, respectively. The decimal and hex values of the bit positions are shown in Figure A-2. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 23 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ reduced table goes here ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure A-1. Binary Bit Values and Hexadecimal Digits ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ reduced table goes here ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure A-2. Decimal and Hexadecimal Values of the Bit Positions in an 8-Bit Byte and a 2-Byte Word As described in Chapter 3, the segmented addressing scheme of the PC's 8088 microprocessor employs a pair of 16-bit binary numbers to construct a complete 20-bit memory address. Each of these 16-bit binary numbers can be represented by a four digit hex number from 0000 through FFFF. You can verify this range for yourself by adding up the decimal values listed in Figure A-2. As an aid in converting hexadecimal numbers to decimal numbers, and vice versa, the decimal equivalents of each hex digit in the first five places are shown in Figure A-3. To convert a hex value into a decimal value, you can work in either direction across the five places. To convert a decimal number to hex notation, start with the fifth (or left) position and work to the first place successively finding the largest hex digit that is less than, or equal to, the remaining decimal value. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 24 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ reduced table goes here ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure A-3. Decimal Equivalents of the Hexadecimal Digit Positions THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 25 APPENDIX B. ASCII CHARACTERS The 8-bit bytes of data stored and manipulated by the IBM PC family have values ranging from 0 through 255 (0 through FF hex), which also represent the numeric codes for the 256 distinct characters used by these computers. These characters and numeric codes are known as ASCII characters and codes. The first 128 characters (0-127 decimal, or 0-7F hex) are the standard or true ASCII characters, which date from the pre-PC days. These standard characters are handled consistently among many computers, except for variations in the first 32 characters which have uniform ASCII meanings as codes for printer and console control, but which IBM also uses for special display characters. The second 128 characters (128-255 decimal, or 80-FF hex) make up the extended ASCII character set that is unique to the IBM PC family and, of course, the PC-Clones. Memory display utility programs such as CORELOOK and DEBUG will display both the hex code and the standard ASCII character representing each byte of memory. As a ready reference for translation between these byte representations, the ASCII codes, in hex notation, and the screen display are shown for the full standard and extended IBM character set in Figure B-1. For quick reference, Figure B-2 translates hex notation to decimal values. In both of these figures, the most significant hex digits are at the top of the columns and the least significant hex digits are at the beginning of the rows. For example, the "?" character has the ASCII code 3F hex or 63 decimal. ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ figure goes here ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure B-1. Standard and IBM Extended Character ASCII Codes THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 26 ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ figure goes here ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Figure B-2. Hex-to-Decimal Conversion Chart Note that some of the special and extended characters will not always appear as a screen display when a program produces video output using a print function rather than poking the character code into the display memory. For instance, CORELOOK's ASCII display shows a blank and DEBUG substitutes a period for the special and extended characters. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 27 APPENDIX C. USEFUL SOFTWARE In order to easily browse through the contents of the PC's memory or download a portion of those contents to a disk file, you should consider collecting a minimum set of software tools. These tools range from the DOS utility DEBUG and a few lines of BASIC programming to some more powerful and convenient public domain programs such as CORELOOK and PC-DUMP. One simple way to look at the contents of the PC's memory is to use the DOS utility program DEBUG. For example, you can display the ROM-BIOS release date by means of the following commands from the DOS prompt; A>DEBUG - D F000:FFF5 L 8 This will list (the L) the ASCII codes and characters for the eight contiguous bytes (the 8) of memory beginning at the address F000:FFF5. Consult the DOS manual for descriptions of the other features of DEBUG that you can use to view the memory contents. You can also use a short BASIC program to display the ASCII characters representing the contents of specific memory locations. The following code will display the ROM-BIOS release date. 10 DEF SEG = &HF000 20 FOR I = 0 TO 7 30 PRINT CHR$(PEEK(&HFFF5 + I)); 40 NEXT I 50 END If, rather than the ASCII characters, you want to display the two-digit hex values of the memory locations, substitute HEX$ for the CHR$ in line 30. A much more convenient way to quickly scan through the memory contents is to use the public domain program CORELOOK, which is available on many computer bulletin boards. CORELOOK is a menu driven program that displays both the hex and ASCII representations of the contents of a block of memory. Using single keystrokes, you can literally fly through memory locations to any block that you desire. The display is formatted for a logical sixteen bytes per line, and you have full control in selecting the basis to be used for the segmented addresses. You don't have to do much scanning of PC memory to really appreciate the value of using this great little program. If you are an experienced BASIC programmer, you can see how the simple program listed above could be expanded to include the provision for writing the contents of a specific portion of PC memory to a disk file. You need not bother, however, as this function is already THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 28 available in the public domain program PC-DUMP, which is also available for downloading on some computer bulletin boards. PC-DUMP is a menu driven program that lets you select the segment paragraph address, the number of bytes to be written to the disk file and the disk file name. The program provides rigorous input formats and checking of the input data for allowable and/or expected values. The latest update (Rev. 2.0) of PC-DUMP also contains the option for downloading either the even numbered or the odd numbered bytes from a given block of memory addresses, as required for the PC-AT ROM hardware design. In the event that you do not obtain an EPROM blaster with software that includes a full featured download function that can be used without the blaster being installed, you may save a good deal of time and frustration by using PC-DUMP. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 29 APPENDIX D. EPROM PROGRAMMER SOURCES At the time of this writing (October 1986), the type of PC-based EPROM blasters described in Chapter 5 are available by mail order from several computer components suppliers and manufacturers that advertise in the major computer magazines. Two sources that currently offer models in the $130 price range are: Apparat, Inc. 4401 So. Tamarac Parkway Denver, Colorado 80237 (303) 741-1778 JDR Microdevices 110 Knowles Drive Los Gatos, California 95030 800-538-5000 Both of these models include software that provides the necessary functions described in Chapter 5. No-name versions of this type of PC-based EPROM blaster, some selling for around $100, are starting to appear at computer shows and swapmeets where vendors are selling various PC-Clone components. Apparently nothing is immune to the cloning phenomena. Since these devices are fairly new and are just catching on with the PC hobbyist crowd, future price reductions are sure to be seen. For you hobby purists, the perfect compliment to your ROM software experimentation is an EPROM programmer that you build yourself. An intelligent serial EPROM programmer is the topic of Steve Ciarcia's Circuit Cellar feature in the October 1986 issue of BYTE magazine. Like the stand-alone commercial programmers, this type of design interfaces via the PC's serial I/O port rather than through an expansion card connector. This arrangement is convenient if your PC has an available serial port and would even allow you to do your EPROM burning using computers other than the IBM/clone family. Ciarcia's project includes the menu-driven programming system software to make using the programmer a breeze. Typical of the exceptional quality of the Circuit Cellar build-it-yourself projects, this update of an earlier design is a real gem. The PC-based EPROM blasters may see limited use and it may be possible to pick up a used unit from another PC owner. You might check the specialized computer/electronics classified add publications, the posted notices at your local computer and electronics retailers, or the PC User's Group in your area. THE IBM PC READ-ONLY-MEMORY BACKUP MANUAL Page 30 NOTES