************************************************ * * * PROMENADE C1 PROFESSIONAL EPROM PROGRAMMER * * * * For the COMMODORE 64 and 128 * * * * With PROMOS 2.0 Operating System Software * * * ************************************************ Notes: This document is a copy of the manual that came with a product once made by the Jason-Ranheim company of Auburn, California, USA. Ward Shrake spoke to the head of said company on January 23, 1999 via telephone. Ward asked for permission to put the manual into electronically-readable form, and to be allowed to make it freely available on the Internet. Ward was given permission to do these things. The Jason-Ranheim company no longer sells or supports Commodore products. As such, they saw no harm in allowing their copyrighted materials be used in this way by people who still have access to the PROMENADE. (Their main concern was that I release the most recent software version; "PROMOS 2.0".) For the most part, this is a verbatim copy of the "PROMENADE C1 with PROMOS 2.0" user manual. The only significant changes (beyond simple reformatting of the text as appropriate) are noted here or in the body of the document. (For instance, the address of the Jason-Ranheim Company shown within is the one current as of 23 January 1999, and Ward added "Appendix C" to duplicate pinouts found in the original.) I kept my commentary to an absolute minimum, and when I did comment, marked it [like this]. Other than these minor alterations, Ward made every reasonable effort to closely reproduce the original manual in every way. Although he worked diligently to insure an accuracy copy was made, Ward disclaims any responsibility for anything that might happen as a result of the use of the information found in this document. (I transcribed this text for free simply as an act of kindness and to preserve some history, so PLEASE don't give me any hassle over it!?) Note that the Jason-Ranheim Company no longer supports this product in any way, other than to allow non-profit distribution of this text. Please do not pester them about this product or any other Commodore 8-bit product! (However, I bet they'd love to hear from folks who are interested in their current product line?) -- Ward Shrake February 4, 1999 [End of commentary, start of original document's text.] This manual and the PROMOS 2.0 software program are COPYRIGHT (C) 1988 by J. W. Ranheim. All rights are reserved. Neither this manual nor the PROMOS 2.0 program may be copied, reproduced, transferred, transmitted, disclosed or reduced to machine- readable form including magnetic or other storage media, without the prior written consent of the copyright owner, except that a reasonable number of archival copies of the PROMOS 2.0 software program may be made by the purchaser for his own exclusive personal use. PROMENADE, PROMENADE C1, PROMOS, and PROMOS 2.0 are trademarks of Jason-Ranheim Company. LIMITED WARRANTY JASON-RANHEIM COMPANY warrants to the ORIGINAL PURCHASER of these products that they are free from defects in materials and workmanship for a period of ninety (90) days from the date of purchase. These Jason-Ranheim Company products are sold 'AS IS' without express or implied warranty of any kind, and Jason- Ranheim Company is not liable for any losses or damages of any kind resulting from the use of these products. Jason-Ranheim Company agrees for a period of ninety (90) days to repair or replace, at its option, free of charge, any Jason-Ranheim Company product, postage paid, with proof of the date of purchase at its Factory Service Center. This warranty is not applicable to normal wear and tear. This warranty shall not be applicable and shall be void if the defect in the Jason-Ranheim Company product has arisen through abuse, unreasonable use, mistreatment or neglect. This warranty is in lieu of all other express warranties and no other representation or claims of any nature shall be binding on or obligate Jason-Ranheim Company. Any implied warranties applicable to these products including Warranties of merchantability and fitness for a particular purpose are limited to the ninety (90) day period described above. In no event will Jason-Ranheim Company, its officers, employees, agents, successors or assigns be liable for any special, incidental, or consequential damage resulting from the possession, use or malfunction of these Jason-Ranheim Company products. JASON-RANHEIM COMPANY 3105 Gayle Lane Auburn, Calif. 95602 (530) 878-0785 [Current info as of Jan 1999] TABLE OF CONTENTS INTRODUCTION GETTING STARTED HANDLING EPROM's HEXADECIMAL NOTATION EPROM'S ENTERING PROMOS 2.0 COMMANDS MULTIPLE COMMANDS ERRORS PROMOS 2.0 COMMANDS G COMMAND R COMMAND CHECKSUMS AND HASHTOTALS WHERE TO PUT THE DATA B COMMAND HON BIG A RANGE? M COMMAND CHANGING RAM DATA I COMMAND F COMMAND T COMMAND C COMMAND H COMMAND D COMMAND A COMMAND E COMMAND P COMMAND PROGRAMMING ERRORS V COMMAND COPYING EPROMS S COMMAND L COMMAND Q COMMAND Z COMMAND SPECIAL EPROM'S USING PROMOS COMMANDS IN A BASIC PROGRAM SIMPLE SAMPLE PROGRAM USING BASIC VARIABLES SETTING UP A RAM BUFFER ONE FURTHER POINT WHERE'S PROMOS? TROUBLESHOOTING APPENDIX A -- The Control Word APPENDIX B -- The Program Method Word APPENDIX C -- Pinout Diagrams for various EPROM chips APPENDIX D -- Table of Control and Program Method Words INTRODUCTION The acronym EPROM stands for Eraseable, Programmable, Read Only Memory. It refers to another of those electronic marvels that came out of INTEL Corp. in the mid seventies. A memory chip that the user can program to contain any sort of digital information whatsoever. And even better, a chip that can be erased by simple exposure to ultra-violet light and reused many times. With these abilities, it is no wonder that EPROM's are produced in such tremendous quantities. The dollar volume is exceeded only by that of dynamic RAM's. With the tremendous proliferation of types and sizes, programming an EPROM became a very complicated undertaking. Many EPROM programming devices were designed to handle just a single EPROM type; and those that could do more required setting a multitude of switches or plugging in a 'personality module'. Some even required a voltmeter to set up. Programming an EPROM could easlIy take an entire afternoon. That unhappy situation suddenly changed with the introduction of the PROMENADE C1. By combining some sophisticated hardware with the power of an inexpensive personal computer, the PROMENADE makes the job almost trivial. And with new programming techniques the PROMENADE cuts the time required to duplicate an EPROM from many minutes to just seconds. With all of its features and capabilities, the PROMENADE has set the standard for EPROM programmers all around the world. It has been widely imitated, even copied exactly; but its most important attribute has never been duplicated -- VALUE. But even the best products can be improved, and with the introduction of PROMOS 2.0 the PROMENADE is made even better. Simple, yet powerful commands for the manipulation of data in the computer and for moving that data to and from EPROM's, disk drives and the like give performance and ease of use that have never before been achieved. Even better, these commands can be incorporated into BASIC programs that let the user customize his system to any EPROM programming application. The user is strongly urged to read this manual carefully and to thoroughly familiarize himself with the material. An hour or two spent this way will be repaid many times over. JASON-RANHEIM COMPANY Auburn, California November, 1988 GETTING STARTED With the power OFF, plug your PROMENADE into the user port at the left rear of your COMMODORE 64 or 128. Install the PROMOS 2.0 diskette in your 1541, 1571 or 1581 disk drive. Turn ON your computer. If you are in 128 mode, the software will load automatically. If in 64 mode, type: LOAD "P*",8,1 (CR) The (CR) above means 'type a carriage return'. You will shortly see a brief sign-on message and copyright notice. At this point, your system is ready. HANDLING EPROMS EPROM's need to be handled with reasonable care if one is to avoid irretrievable damage to them. They are very susceptible to static electricity. This can be a problem in a cold, dry climate in the wintertime. Always discharge yourself by touching a grounded object before handling them. The aluminum case of the PROMENADE itself is convenient for this purpose. To install an EPROM in the PROMENADE socket, RAISE the operating lever, drop the EPROM into place and then close the socket by moving the lever down to the case as far as it will go. NOTE -- EPROM's having 24 pins (e.g. 2716, 2732) use the RIGHTMOST 24 socket positions. Twenty eight pin EPROM's occupy the entire socket. MAKE SURE the orientation notch points to the LEFT as the figure on the top of the cover indicates. NOW TO INSURE PROPER ELECTRICAL CONNECTION to all pins of the EPROM, move the EPROM from side to side slightly by forcing it with the thumbs. This may take quite a bit of force. Doing this becomes habitual after a while. The objective here is to have the contacts in the socket cut through any tarnish films which might otherwise prevent proper operation. HEXADECIMAL NOTATION If you are already familiar with HEX notation, skip this section. If not, you will need to spend a little effort at this point to aquaint yourself with a very useful idea. In the world of EPROM's and computers, information is conveyed in little units known as 'BITS'. A bit can have one of two values. The meaning we associate with these values can be anything capable of expression as a 'binary' or two-valued entity. For example, a statement can be either TRUE or FALSE. A light is either ON or OFF. In your computer, a bit is represented by the voltage on a wire: it is either HIGH (near 5 volts) or LOW (near 0 volts). The high value we associate with the symbol '1'. The low value we associate with the symbol '0'. In order to represent members of larger collections of objects -- letters of the alpha- bet, for example, or large numbers, binary digits must be grouped together. Four binary digits taken together can represent 16 different objects. (Two to the 4th power.) Eight binary digits taken together form a unit called a 'BYTE' in computerese. A byte can stand for any one of two to the 8th power (or 256) different objects. Your computer deals In 'BYTE' sized information units. Data flows from one part of your machine to another along eight wires called the data bus -- in bytes. In order to specify exactly what information is being accessed at a given instant, your computer sends out an 'ADDRESS'. This address is a 16 bit binary quantity that flows along 16 wires called the address bus. Since there are 16 address lines, two to the 16th power, or 65536 unique addresses can be specified by your machine. Now, instead of using binary numbers directly like your computer does, it is customary to consider binary digits in groups of four. Each possible value of this group is denoted by a symbol: the numbers from 0 to 9 plus the letters A through F. These are called 'HEXADECIMAL' numbers. Accordingly, we have the following: BINARY HEXADECIMAL DECIMAL ----------------------------------- 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 A 10 1011 B 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15 10000 10 16 And we can represent numbers of any size: 11110000 F0 240 11111111 FF 255 100000000 100 256 1111111111111 1FFF 8191 11101000101011010 1DI5A 119130 And so on. It is common to see a '$' sign affixed to a hexadecimal number so that the reader will not take it to be an ordinary decimal quantity. Or sometimes a following 'h' does the same thing. So $1234 or 2345h are to be considered hexadecimal numbers. In this manual, all numbers are in 'HEX' unless specifically stated otherwise. EPROM's Now, consider for a moment the diagrams in Appendix C. They show the "pinout" of several commonly used EPROM's. In use, the pins marked D0 through D7 are connected to the data bus. The EPROM, when enabled to do so, outputs data on these pins. Since there are eight output pins, the EPROM can output an entire byte at a time. An EPROM is a 'byte-wide' device. The pins marked A0 through A15 are address pins. The computer imposes a binary address on these pins to specify which location in the EPROM the data is to come from. The lowest address is, of course, $0000 -- all address lines low. The highest EPROM address depends on how many address pins there are. The capacity of an EPROM is usually specified as a certain number of 'KILOBYTES'. A kilobyte is two to the 10th power or $400 bytes. (1024 decimal). A "1k" EPROM like the 2758 must therefore have 10 address pins. The following table gives the maximum EPROM address for several common types. TYPE CAPACITY HIGHEST ADDRESS ----------------------------------- 2758 1k 3FF 2716 2k 7FF 2732 4k FFF 2764 8k 1FFF 27128 16k 3FFF 27256 32k 7FFF 27512 64k FFFF When the PROMENADE programs an EPROM, the desired EPROM address is applied to the address pins, the data to be programmed into the EPROM at that address is applied to the data pins, and various signals and voltages are applied to other pins as required. The user has to be concerned with only one of these other voltages. This is a relatively high value called the PROGRAMMING VOLTAGE. There are three standard programming voltages in general use: 12.5v., 21v, and 25 volts. As we shall see a little later, the user must specify this voltage for the particular EPROM he is dealing with. ENTERING PROMOS 2.0 COMMANDS All of the various tasks you will want to accomplish using the PROMENADE will be done by means of one or more PROMOS 2.0 commands. These commands consist of a key letter followed by up to nine hexadecimal numbers called parameters. To execute a PROMOS 2.0 command, simply type it on the screen. Edit it as required and then type a carriage return. Multiple parameters in your command may be separated by one or more spaces or by (at most) one comma. You do not need to supply a '$' sign nor are you required to supply leading zero's. The following examples of the PROMOS 'M' command will serve to illustrate. This command is used to display the contents of computer memory on the screens and it will be described in detail later. M0000 03FF M0000,03FF M0 3FF M0,3FF M 0 3FF M 00 , 03FF All of these forms are equivalent. PROMOS does not perversely require that you type in an exact form as long as your meaning is unambiguous. MULTIPLE COMMANDS You may enter two or more PROMOS commands separated by colons on the same command line. The commands will be executed sequentially in the order you typed them. For example: M 2000, 2040 : I 2000, 2040 results in a hex display of computer ram data from 2000 through 2040, followed by an ASCII display of the same data. MIXING BASIC AND PROMOS COMMANDS You may mix PROMOS and BASIC commands together on the same command line. They will executed in the order in which you typed them. For example: Print'ZERO PAGE RAM' : M 0, FF : Print"END OF ZERO PAGE' REMEMBER: ALL PROMOS 2.0 COMMAND PARAMETERS ARE ENTERED AS HEXADECIMAL NUMBERS. ERRORS If you make a mistake typing in a PROMOS command, chances are you'll be advised by the SYNTAX error message. If you fail to supply all the parameters required by a command, an UNDEFINED FUNCTION error will result. If you input incorrect hexadecimal numbers, an ILLEGAL QUANTITY error will be reported. Some PROMOS commands report other errors as may be necessary. PROMOS 2.0 COMMANDS THE G COMMAND -- Print command Glossary. This isn't really a command at all. Type a G and a carriage return and a list of the PROMOS commands and an example of each is printed on the screen. If you commit only one command to memory, make it this one. THE R COMMAND -- Read EPROM data into computer memory. By reading an EPROM, we mean transferring some or all of the information it contains into the computer's memory. The key letter can either be R or the English monetary symbol. Example: R 2000, 3FFF, 0, 6 The meaning of this command is: Fill computer ram from 2000 to 3FFF with data from this EPROM, beginning at EPROM address 0000. The '6' is a parameter called the CONTROL WORD. It is a number that tells the PROMENADE everything it needs to know about the particular EPROM you are dealing with. In the example, 6 is appropriate for the 2764A. A list of control words appears inside the back cover of this manual. A detailed discussion of control words and what they mean is presented in APPENDIX A. Another example: R 5000 BFFF 1000 E6 In this example, we are telling the PROMENADE to read a 27256 into computer ram from 5000 through BFFF, beginning at EPROM address 1000. E6 is the control word for a 27256 programming at 12.5 volts. [Editor's note: in the original manual, the english monetary symbol was used instead of "R". The READ and PROGRAM commands have alternate commands that are entirely optional. To reduce potential confusion, I am only showing the main form of these two commands in this document.] CHECKSUMS and HASHTOTALS When you execute the READ command as in the examples above, you will notice that a 'CHECKSUM' and a 'HASHTOTAL' is printed on the screen as soon as the operation is completed. The CHECKSUM is the low-order byte of the arithmetic sum of all the data bytes read from the EPROM. The HASHTOTAL is the result of exclusive-or'ing all bytes read with each other. These numbers can serve as a quick means of identification of an EPROM# or as a means of checking the validity of the data itself. WHERE TO PUT THE DATA Notice that the READ command gives you complete freedom: you can read as many bytes from the EPROM as you want, starting anywhere on the chip, and in principle you can put them anywhere in computer memory. As a practical matter, certain areas of computer ram are off-limits because your computer must use them for its own purposes. If your read command overwrites these areas, the computer will crash. Consider first the COMMODORE 64 or the 128 in 64 MODE: If you are not running a BASIC program, then you are free to use computer ram from 0800 through DFFF. A BASIC program ordinarily resides in ram starting at 0801. In a later section we discuss the matter of using PROMOS commands in a BASIC application program. In the case of the COMMODORE 128 in 128 MODE, we need to consider a special PROMOS command which pertains only to the 128, the bank select command. The B COMMAND -- Select PROMOS ram bank. (128 mode command.) This command selects the computer ram bank, O olL 1, which will be used for subsequent PROMOS operations. Example: B1 Execution of this command causes PROMOS to use bank 1 ram, PROVIDED the ram involved lies in the range 2000 through DFFF. Outside this range, bank 0 ram will be used. Using this command does not in any way affect the BASIC 7.0 'BANK' command. PROMOS bank 1 will remain in use until you switch back to PROMOS bank 0. To do this, execute either B0 or just B Example: B1 : R 2000, 5FFF, 0 , 6 : B0 Here, we combine the bank select commands and the read command. First we switch to bank 1 ram; then we read a 27128A into the range 2000 through 5FFF in bank 1; then we switch back to bank 0 ram. In 128 mode, BASIC starts at 1C01 in bank 0. If no BASIC program is being used, useable ram in bank 0 starts at 1300. HOW BIG A RANGE? The question arises: How large must the memory range in the read command be to insure that each and every byte on the EPROM is included? Earlier, we presented a table showing the largest EPROM address for EPROM's of various capacities. If we start at address 0 on the EPROM and read each address to and including the highest address, then we know we have read them all. A little reflection will show that all one has to do is add this highest EPROM address to the chosen computer ram start address to obtain the necessary computer ram end address. Some examples: We want to read all of a 2732 (4k) EPROM into ram starting at C000. Since the EPROM address runs from 0 to FFF, the required read command is: R C000, CFFF, 0, E0 A 27256 (32k) is to be read into ram starting at 4000: R 4000, BFFF, 0, E6 does the job. (4000 + 7FFF = BFFF) A 27128 (16k) is to be read into ram starting at 3840: R 3840, 783F, 0, 5 is what is needed. THE M COMMAND -- Display computer memory. This is the command to use to view and alter computer ram data. To illustrate its use we execute the following: M A000 And there appears: >A000 3E 41 00 A9 20 FE 84 D0 Execution of this M command causes the computer to display the specified address followed by eight hexadecimal byte values -- the data from locations A000 through A007. To display a memory range, from 2000 through DFFF, say, type: M 2000, DFFF The screen fills and then scrolls rapidly as the data is printed. To stop the display at any point, press the RUN/STOP key. To begin the display again at the point where you stopped, type M alone and a carriage return. Notice the 'M' command displays RAM data, not ROM or IO devices which may overlay a particular address. CHANGING RAM DATA Suppose you want to change the data in memory somewhere. Just use the M command to display that area, move the cursor into the display to the desired location, type in the new hex value(s) and press RETURN on each altered line. RAM data is changed accordingly. You can also change the address field. In this way you can quickly copy data from one area of ram to another. THE I COMMAND -- Display ASCII data. This command works the same way as the M command except that the display shows printable ASCII characters rather than hex data. Thirty two characters appear on each line. For example: I 6000, 7FFF Displays ASCII characters in the range 6000 through 7FFF. You canNOT alter an ASCII string by over-typing and pressing RETURN. THE F COMMAND -- Fill computer ram. This command fills a specified range of memory with a specified data byte. For example: F 2000, DFFF, FF This command fills memory from 2000 through DFFF with FF characters. THE T COMMAND -- Transfer ram data. This command copies data in a specified range from one area of computer ram to another. By way of example: T 2000, 2FFF, C000 This command transfers data from ram in the range 2000 through 2FFF to C000 through CFFF. Another example: T 4000, 40FF, 4001 This command moves data from 4000 through 40FF up one address location. THE C COMMAND -- Compare computer ram data. This command causes the computer to compare the data in one range of memory locations with that of another. The address of all locations where the data differs is printed out. For example: C 100, 1FF, 4000 This command compares ram data in the range 0100 through 01FF to data in the range 4000 through 40FF. The addresses of all discrepant locations appear on the screen. THE H COMMAND -- Hunt for byte data. This command causes the computer to hunt for occurrences of a group of specified data bytes. The address of each occurrence is printed on the screen. The sought for group may be up to seven bytes long. For example: H 2000, BFFF, 20, D2, FF This command examines ram from 2000 through BFFF for the byte sequence 20,D2,FF: 6502 code for JSR FFD2. Another example: H 1000, 7FFF, 52, 41, 4E, 47, 45, 49, 4D This command hunts for a group of seven ASCII characters. [In case you wondered, the seven bytes spell "RANGEIM".] THE D COMMAND -- Scan EPROM data. The D command reads data from an EPROM and prints it on the screen as hex data Just as the M command does. Computer ram is not affected. Example: D 0, 1FFF, 5 This command produces a screen display of all the data on a 2764. The first two parameters are the starting and ending EPROM ADDRESSES of the range to be displayed. The third parameter is the CONTROL WORD for the particular EPROM. Another example: D 6000, 7FFF, E6 This command scans the top 8k of a 27256. THE A COMMAND -- ASCII scan of EPROM data. The A command works just like the D command except that the display is of printable ASCII characters. For example: A 0, 7FF, 28 In this example, we do an ASCII scan on all bytes of a 2716. THE E COMMAND -- Check EPROM for erased condition. The data at all erased locations on an EPROM is FF; that is, all data bits are one's. To check for this condition, use the E command. An example: E 0, 3FFF, 6 This command checks for FF at all locations on a 27128A. The EPROM addresses of all un-erased locations are printed on the screen. Their total number is also printed. The first and last addresses on the 27128A are 0 and 3FFF. The control word is 6. Another example: E 800, FFF, E0 This command checks for the erased condition of the top half of a 2732. THE P COMMAND -- Program EPROM from computer memory. The key letter for this command can be either P or (the math symbol for Pi). The command works the same either way. There are five parameters needed for this command: the STARTING and ENDING computer MEMORY ADDRESSES defining where the information is to come from, the STARTING ADDRESS on the EPROM specifying where we want the data to go, the CONTROL WORD; and the last parameter is the PROGRAM METHOD WORD (PMW for short). The PMW is discussed at length in Appendix B. It tells PROMOS how you want the programming to be done. Some examples: P 2000, 3FFF, 0, 6, 7 This command fills a 2764A completely with data from computer ram in the range 2000 through 3FFF. The EPROM is programmed from beginning to end. The CONTROL WORD is 6; and we have used Intelligent programming method #1 as defined by the PMW of 7. Notice that the P command gives you complete freedom. You can take information from anywhere in computer ram and put it anywhere on the EPROM. Suppose you wanted to program just one byte on an EPROM: P 213A, 213A, 3456, 5, A In this case, the starting and ending ram addresses are the same, 213A. The EPROM address is 3456. The control word, 5 is for the 27128 and we have chosen A for the PMW. This command takes a single byte of data at 213A and programs it into EPROM location 3456 in the 27128. The considerations of RANGE size are exactly the same as with the R command. To be sure you are programming ALL of an EPROM, add the maximum EPROM address to the computer ram starting address to obtain the computer ram ending address. Some more examples: Suppose you wanted to take the data from two 2764's and put it on a single 27128A. Here's one way to do it. First let's choose to use computer ram from 2000 through 5FFF to contain the data. Read the first 2764: R 2000, 3FFF, 0, 5 Now read the second: R 4000, 5FFF, 0, 5 Now program the 27128A: P 2000, 5FFF, 0, 6, 6 That's all there is to it. Suppose you wanted to read a COMMODORE kernal ROM, make some changes, then put the altered data on a 2764A. Here's how to do it: The kernal ROM in the C64 is compatible with the 68764 (8k) EPROM. The control word is 30. Read it in: R 8000, 9FFF, 0, 30 Use the M command to change the data in ram as you wish it to be. [Editor's note: here are some interesting locations in the Commodore 64's Kernal ROM, for you to experiment with... if you used the commands shown here, the byte that controls the border color will be found at $8CD9. The byte that controls the background color will be found at $8CDA. The byte at $8535 sets the default color of the onscreen characters. To see the start-up message's text, see the range of addresses from $8440 to $84BF. Note that the default device number is also a one-byte change; if you change $81DA from a $01 to a $08 it will default to disk instead of to tape, which will be more convenient for most of the C64's users. The VIC-20 can also be modified in all these ways. You will have to adjust the memory addresses accordingly.] [Other modifications could include a change to the auto-start code sequence. Changing this code will allow a custom C64 or VIC-20 Kernal ROM to bank in an inserted cartridge without starting it. The VIC-20's auto-start sequence code is "A0CBM" while the auto-start code for the C64 is "CBM80". Use the HUNT command to find either code sequence. Even a one-byte change to these codes will stop ROM cartridges from auto-starting.] Now program the revised data into the 2764A: P 8000, 9FFF, 0, 6, 7 [Also not mentioned in the original text, is the unfortunate fact that the 2764A you just programmed, will not physically fit into the Commodore 64 you just removed the Kernal ROM from! You can program the information, sure, but problems quickly develop. This is because the original ROM has only 24 pins, while a 2764 EPROM has 28 pins per chip. If you have advanced electronics knowledge and skills, you may want to build an adapter, to plug the 28 pin chip into the 24 pin socket. A much easier method would be to simply use Motorola's MCM 68764 chip, which is fully compatible with the ROMs used in the VIC-20, C64, C128 and probably others. See Appendix C for pinout diagrams on these and other chips.] PROGRAMMING ERRORS While programming an EPROM, PROMOS checks to see that the job is being done correctly. If an error is detected, programming Is stopped and you are advised what happened by messages on the screen. For suggestions on determining the source of the trouble, see the section on troubleshooting. THE V COMMAND -- Verify EPROM data. The V command compares the data on an EPROM with data In computer memory. It has two forms: the long form, with parameters exactly the same as in the R command; and the short form which is just V alone with no parameters at all. The short form uses the parameters from the most recent R or P command. The EPROM addresses of all discrepant locations, the checksum and the hashtotal are printed on the screen. Some examples: V 2000, 3FFF, 0, 6 Here, we compare data from 2000 through 3FFF with the data on a 2764A. P 4000, BFFF, 0, E6, 6 : V Here, we have programmed a 27256 with data from 4000 through BFFF and have followed with the short form of the V command. COPYING EPROMS The PROMENADE is a very efficient piece of production equipment. One can quite easily program 250 2764's in an hour. The usual procedure is to read an EPROM MASTER into ram using the R command, then program the duplicates using the P command. It isn't necessary to type a new P command for each copy. Just move the cursor up to the P command line and press RETURN. Here's a simple example of a command that programs 2764A's, verifies the data, keeps track of the number of copies that have been made and prints it on the screen: R 2000, 3FFF, 0, 6 : N = 0 This reads the master and initializes the count. Now: P 2000, 3FFF, 0, 6 , 6 : V : N = N + 1 : PRINT : PRINT "TOTAL COPIES:" N THE S COMMAND -- Save computer' ram. This situation continually arises: You've read a ROM or an EPROM. Now you want to save the data on disk so that you can make a copy later. The S command is what you need. It causes a defined section of ram to be saved to disk as a PGM file. All example: S "EPROM DATA", 8, 4000, BFFF This command takes data from 4000 through BFFF and stores it on disk as the program file called EPROM DATA. Experienced users will recognize this as the same S command their monitor programs have provided them for years. But NOTE one important difference. Monitor S commands require that you specify a range one byte longer than what you really want to save. This is the case with the C128's built-in monitor. With the PROMOS S command, you specify the range exactly. There is one important restriction on the use of the S command in 64 mode: You cannot save from the address range D000 through DFFF. This restriction does not apply in 128 mode. One further note for 128 user's: If you want to save from bank 1, just use a prior B command to set bank 1 ram first. Another example: R 2000, 2FFF, 0, 18 : S "2532 DATA", 9, 2000, 2FFF Here, we read a 2532 and save the data to disk on drive 9 as a PGM file called "2532 DATA". THE L COMMAND -- Load program from disk. Now, you have the data on disk. How do you get that data back into the computer so an EPROM can be burned from it? The answer is the L command. An example: L "2532 DATA", 9 This command loads the program file "2532 DATA" back into the same locations in memory from where it was saved, namely 2000 through 2FFF, from device 9. On completicn of the load, PROMOS reports the load start address and the load end address so you know where in ram the data Is. Oftentimes, it's a good idea to jot these addresses down. As with the S command, you cannot load into the range D000 through DFFF from 64 mode. In 128 mode, if you want to load the file into bank one ram, first set bank 1 with the B command. There is one other important feature of the L command: you can specify your own load-start address. This is mandatory if you want to load a PGM file whose load-start address is unknown or if you want to load it someplace else. To specify your own load-start address, just add it to your L command: L "2532 DATA", 9, 6000 The load-start address of this file we know to be 2000. But we have forced the data to be loaded at 6000 by means of this command. This feature makes it very easy to merge separate PGM files into one. THE Q COMMAND -- Quit PROMOS. Should you wish to disengage PROMOS, use the Q command. Just execute: Q and PROMOS is gone. You can re-enable PROMOS by executing the following SYS: SYS 320 COMMODORE 128 user's can switch to 64 mode using the GO64 command, then re-enable PROMOS using SY5320 from 64 mode. After a RESET, you can use SYS320 to re-enable PROMOS in 128 mode without having to to reload the program. THE Z COMMAND -- Zero the PROMENADE programming socket. This command sets the voltage at all pins of the C1 socket to (nearly) 0 volts so EPROM's can be safely installed and removed. This is done automatically for the most part. C128 users will notice that after a 128 mode LOAD or SAVE, the red light is left on, indicating an energized condition. Here is where the Z command comes in. Execute this coBmand to reset the C1 socket. SPECIAL EPROM'S There are EPROM's the PROMENADE can read and program but which require special methods. Among these are the 27512, the 27513 and the 27011. We now consider each of these in turn. The 27512 is the standard 64k byte EPROM. It has 16 address pins as can be seen in Appendix C. The 16th address bit is applied to pin 1. The PROMENADE cannot use pin 1 as an ordinary address pin. Rather, it is normally pulled high by a pull-up resistor. Some other means must be used to bring this pin low for reading and programming the lower 32k of the 27512. A crude, but simple and effective way to do this is to take a short length of 22 gauge stranded hook-up wire and ground one end by securing it under one of the PROMENADE cover mounting screws. To access the low 32k addresses on the 27512, insert the free end of your grounding wire into the programming socket along with pin 1 of the 27512. (Pin 1 is the one closest to the operating lever.) To read or program the upper 32k, simply remove the grounding wire. Jason-Ranheim Company can install a switch to handle this more conveniently for a nominal charge. Contact our sales department. [Note that this service is no longer available.] The 27513 and the 27011 are 'page-addressed' EPROM's. They have an internal bank switching register which selects one 16k 'page' of the EPROM at a time. The 27513 looks to the outside world like four 27128A EPROM's; the 27011 looks like eight. To read or program the 27513, use the control word 4XE2 where you substitute for X the number from 0 to 3 of the page you wish to read or program. For example: R 2000, 5FFF, 0, 40E2 will read the lowest 16k page of the 27513 into ram. Another example: P 4000, 7FFF, 0, 43E2, 6 will program page 3 of the 27513. The 27011 works the same way. Use the control word 4X06, where X is the number from 0 to 7 of the page you wish to read or program. For example: P 8000, BFFF, 0, 4506, 6 This command programs page 5 of a 27011 with data from computer ram from 8000 through BFFF. Again: R A000, DFFF, 0, 4706 reads page 7 into the specified range. USING PROMOS COMMANDS IN A BASIC PROGRAN PROMOS commands can be used in a BASIC program just like any regular BASIC command. Of course, PROMOS must be loaded first and active or your BASIC program will not run. Some of the commands work a little differently from a running program as compared with direct mode: First, control messages such as 'SEARCHING FOR', 'PROGRAMMING', etc. are not printed unless you enable them by setting bit 7 at address 9D high. See the PROGRAMMERS REFERENCE GUIDE for details. Those commands which from direct mode report results on the screen, such as R, P, L, S, V, C, H and E, do not do so when executed from a running program. Rather, certain results are made available in low ram locations as detailed below. Your BASIC program can 'PEEK' these locations to make use of this information. In general, address A5 (165 decimal) reports errors. If an error is detected, A5 will contain FF, otherwise it will be 0. A6 and A7 will report an address in low-high order, with the significance described below. A8 and A9 report the appropriate checksum and hashtotal respectively of the data in the address range involved in the command. L command A5 -- 00 = Load ok. FF = load failed. A6,A7 -- Address of highest byte loaded. A8 -- Checksum for data loaded. A9 -- Nashtotal for data loaded. S command AS -- 00 = Save ok. FF = Save failed. A6,A7 -- Address of highest byte saved. A8 -- Checksum for data saved. A9 -- Hashtotal for data saved. R (or english monetary symbol) A6,A7 -- Address of highest EPROM byte read. A8 -- Checksum for data read. A9 -- Hashtotal for data read. P (or Pi mathematical symbol) A5 -- 00 = PGMing ok. FF = PGMing failed. A6,A7 -- EPROM address at failure. A8 -- Checksum for data programmed. A9 -- Hashtotal for data programmed. V command A5 -- 00 = verify ok. FF = verify failed. A6,A7 -- EPROM address at failure. C command A5 -- 00 = COMP ok. FF = COMP failed. A6,A7 -- Ram address at lowest failure. A8 -- Checksum of compared data. A9 -- Hashtotal of compared data. H command A5 -- 00 = No occurrence. FF = Bytes found. A6,A7 -- Ram address of first occurrence. E command A5 -- 00 = EPROM erased. FF = Not erased. A6,A7 -- EPROM address of lowest unerased byte. Note that the C command generates a checksum and a hashtotal. You can use a 'dummy' C command to generate these quantities for any range of ram data. For example: C 2000, DFFF, 2000 compares ram from 2000 through DFFF with itself. In the process, the checksum and hashtotal over that range are generated and reported. SIMPLE SAMPLE PROGRAM 10 PRINT "INSTALL 27256 IN PROMENADE SOCKET." 20 PRINT : PRINT "TYPE A CARRIAGE RETURN WHEN READY." 30 GET A$ : IF A$ <> CHR$(13) THEN 30 40 R 4000, BFFF, 0, E6 50 S "27256 DATA", 8, 4000, BFFF 60 REM ETC. USING BASIC VARIABLES PROMOS commands would be of little utility in a BASIC program if they could not make use of variable data. The PROMOS L and S commands accept a string variable for the file name. Any numeric parameters that you want to express as a variable -- addresses, control words, device numbers, etc. MUST USE the INTEGER variable form. These are numeric variables with a "%" sign suffix. Regular floating point variables will not work. REMEMBER, numeric BASIC variables are always DECIMAL quantties. Here's a simple example of the use of variable quantities in a program: 10 NM$ = "MY FILE" : REM FILE NAME 14 DN% = 8 : REM DEVICE NUMBER 16 LS% = 8192 : REM LOAD START ADDRESS 20 L NM$, DN%, LS% : REM LOAD 'MY FILE' STARTING AT $2000 FROM DEVICE 8. 30 ES% = 0 : CW% = 5 : PM% = 7 : REM DEFINE PARAMETERS FOR PROGRAMMING. 35 LE% = PEEK(166) + 256 * PEEK(167) : REM CALCULATE LOAD END ADDRESS. 40 P LS%, LE%, ES%, CW%, PM% : REM PROGRAM 2764 EPROM. 50 IF PEEK(165) = 255 THEN 4000 : REM GO TO SECTION WHICH HANDLES REPORTING PROGRAMMING ERRORS. 60 PRINT "PROGRAMMING OK." 70 V : REM VERIFY ONCE AGAIN. 80 IF PEEK(165) = 255 THEN 4020 : REM GO TO SECTION WHICH HANDLES REPORTING VERIFY ERRORS. 90 PRINT "VERIFY OK." 95 REM ETC, ETC .... SETTING UP A RAM BUFFER Let's say you're using a 64 mode BASIC application program and you want to set aside a large ram buffer for moving data to and from EPROM's and disk that you're sure BASIC will not intrude upon. Here's a suggestion. Early in your program, execute the following BASIC statement: 10 POKE 55, 0 : POKE 56, 64 : CLR This confines your BASIC program to the 14k from 0801 through 3FFF. Now, you have 32k from 4000 through BFFF for your ram buffer; and 8k from C000 through DFFF to use as a utility area for ML programs, etc. ONE FURTHER IMPORTANT POINT A decimal address of 32768 must become a negative number when expressed as a numeric variable. This number will decrease to -1 at 65535. This is of concern only for addresses above 7FFF. Examination of the following table will give you an idea of how to handle this. DESIRED DECIMAL VALUE NUMERIC HEX VALUE VARIABLE ADDRESS EQUIVALENT EQUILAVENT --------------------------------------- 1000 4096 4096 2000 8192 8192 4000 16384 16384 7FFF 32767 32767 8000 32768 -32768 8FFF 36863 -32673 9000 36864 -32672 9FFF 40959 -24577 A000 40960 -24576 AFFF 45055 -20481 B000 45056 -20480 BFFF 49151 -16385 C000 49152 -16384 CFFF 53247 -12289 D000 57248 -12288 DFFF 57343 -8193 Here's a BASIC statement that converts a DECIMAL address (DA) fron 0 to 65535 into the nesessary NUMERIC VARIABLE equivalent (NV%): 100 NV% = DA + 65536 * (DA > 32767) WHERE'S PROMOS? As you use the M command to browse through memory, you come across nothing resembling a sizeable machine language program. So where's PROMOS? It's tucked away in ram under the kernal at E000. Operating from there, it leaves everything else available to you. There are a few bytes of code well down on the stack which take care of switching things in and out. In 64 mode, PROMOS hooks in through IGONE. In 128 mode, ICRNCH is taken over as well. TROUBLESHOOTING The frustrations that can arise programming balky EPROM's can often be avoided by making sure of a few things: Make sure your EPROM is erased. Use the D, A or E commands for a quick check. Make sure your EPROM is seated properly in the socket and is making contact at all pins. Make sure your programming command is correct. Especially check the CONTROL WORD. If you use an incorrect one you can destroy your EPROM. Make sure your PROMENADE is making good contact with the user port connector. The board-edge surfaces may need cleaning. An easy way to do this is to go over them lightly with a pencil eraser. Make sure your power supply is in good shape. Commodore 64 power supplies have a tendency to get tired after a while. You may wish to try a modified programming method that turns off Vpp during read-back as discussed in Appendix B. APPENDIX A -- THE CONTROL WORD The control word determines the way the PROMENADE works in dealing with a particular EPROM. The PROMOS 2.0 CW is actually a 16 bit quantity. The low byte is particularly important. The low eight bits control things as follows: BITS 1, 0 00 -- Set Vpp to 25 volts. 01 -- Set Vpp to 21 volts. 10 -- Set Vpp to 12.5 volts. 11 -- Set Vpp to 5 volts. BITS 3, 2 00 -- Apply Vpp to pin 22. 01 -- Apply Vpp to pin 1. 10 -- Apply Vpp to pin 23. 11 -- Set pin 1 low when Vpp is on. BITS 5, 4 00 -- PGM pulse at pin 27. 01 -- PGM pulse at pin 22. 10 -- PGM pulse at pin 20. 11 -- No PGM pulse required. BIT 6 0 -- No action at pin 20 on read. 1 -- Invert pin 20 level on read. [Editor's note: the original manual does not mention this, but pin 20 is frequently the "chip enable". Most memory chips want to see a low state, to enable the chip; they are "active low". However, the memory used for video game cartridges for the Atari 2600 VCS system uses an "active high" system. Having this feature saves you from having to build a custom circuit to read these memory chips, or at least the smaller, earlier ones. While they all want to see this line inverted from "normal" electrically speaking, you will end up having other problems when the memory size goes over the 2k or 4k of the earliest games. Just one example of what this is useful for.] BIT 7 0 -- Set standby level on pin 20 low. 1 -- Set standby level on pin 20 high. The upper byte works as follows: BITS 5, 4, 3, 2, 1, 0 Select particular page of page mode EPROM. Up to sixty four 16k pages. BIT 6 0 -- Page mode indicator off. 1 -- Page mode indicator on. BIT 7 Not used. APPENDIX B -- THE PROGRAM METHOD WORD The program method word tells PROMOS how you want the programming done. You have some latitude. If you check the TABLE of RECOMMENDED CONTROL and PROGRAM METHOD WORDS inside the back cover, you'll see a 'standard method' and three "intelligent' methods. We examine these in greater detail here. STANDARD PROGRAMMING In standard programming, the programming pulse applied to the EPROM is of constant duration, usually about 50 mi]liseconds. This is always a time-consuming method. A 2764 takes about 7 minutes to program this way. For PMW's from 0 to 3, PROMOS uses Pulse durations as follows: PMW PULSE DURATION ------------------------- 0 6 ms. 1 12 ms. 2 24 ms. 3 48 ms. INTELLIGENT METHODS FOR PROGRAMMING Intelligent methods for programming EPROM's have been developed which can greatly reduce the time required. These methods in effect 'test' the EPROM as the process goes on. It works like this: the address and data are set up and a short duration pulse is applied. The EPROM is then read back and the data is compared. If the data doesn't 'verify', then another pulse is applied and so on. Programming time is accumulated. At some point the data 'sticks' and a positive verification is obtained. At this point, another longer 'margin' pulse is applied which is proportional in duration to the sum of the preceeding pulses. The data is verified once again, and the programmer then moves on to the next location. Intelligent #1 -- Developed by Jason-Ranheim, this method has been widely copied. It is the fastest way to program an EPROM. Programming starts with a short .1 ms pulse which doubles in duration with each failure to verify. The margin pulse is equal in length to the sum of all preceding pulses. Intelligent #2 -- In this method, short pulses of equal duration are applied. The margin pulse is 3 times the total accumulated pulse time. If after 25 ms of short pulses, a location still does not verify, programming stops and the failure is reported. Intelligent #3 -- In this method, the margin pulse is 4 times the preceding total accumulation. If after 15 ms of pulses verification has not been achieved, a 60 ms pulse is tried. If the location now verifies, programming moves on. If not the EPROM has failed. For any of the intelligent programming methods, the EPROM supply (Vcc) is set to 6 volts. PMW's from 4 to F have the meanings given in the following table: PMW INT TEST TOTAL METHOD PULSE ACCUMULATION * ----------------------------------------------- 4 1 variable 12 ms. 5 1 variable 25 ms. 6 1 variable 50 ms. 7 1 variable 100 ms. 8 2 0.25 ms. 75 ms. 9 2 0.50 ms. 75 ms. A 2 1.00 ms. 75 ms. B 2 2.00 ms. 75 ms. C 3 0.25 ms. 100 ms. D 3 0.50 ms. 100 ms. E 3 1.00 ms. 100 ms. F 3 2.00 ms. 100 ms. * = the maximum time that can be accumulated at a location before an error is reported. If you add $40 to the PMW, that is set bit 6 high, the programming is altered in this respect: The PROHENADE turns off Vpp before attempting to read back the EPROM. This slows down programming; but it is advisable in few cases. For example: P C000, C7FF, 0, 28, 47 This command programs a 27C16 with data from C000 through C7FF. Another example: P 4000, BFFF, 0, E6, 46 This programs an OKI 27256 with the specified data. APPENDIX C -- Pinout diagrams for various EPROM chips Notes from the person who typed this manual in.... this section of the manual did not exist, per se, in the original manual. What did exist was a diagram on page 5, which showed a single 28-pin chip; a 27513 to be precise. This diagram was combined with two charts; one on either side of the diagram. The charts listed pinout information for five other chips. (They were the 2732A, 2764A, 27128A, 27256, and 27512. I added a few; the 2716 and a non-standard 8K chip Commodore used.) The information in this Appendix is basically that same information, just reformatted. Trying to reproduce that diagram the way the original was drawn, would be less than optimal with plain ASCII (text) "art". Instead, I have reproduced single chip diagrams here, hoping they'd be somewhat less confusing? Please also be advised that there are places on the World Wide Web where one can look up the pinout diagrams of all sort of electronic devices. Besides places that act strictly as archives of pinout information, you may find that a company that once sold a particular chip may have pinouts online. Companies that sell blank EPROMs also frequently have diagrams. Using a "Search Engine," you may want to initially try key words such as "chip" and "pinout" and "electronics" to begin such a search of the resources on the Internet. Here are the diagrams of various EPROM memory chips... Pinout diagram: 2716 (2 kilobyte x 8 bit EPROM memory chip) .------. .------. | |__| | A7 | 1 24 | Vcc A6 | 2 23 | A8 A5 | 3 22 | A9 A4 | 4 21 | Vpp A3 | 5 20 | /OE A2 | 6 2716 19 | A10 A1 | 7 18 | /CE A0 | 8 17 | D7 D0 | 9 16 | D6 D1 | 10 15 | D5 D2 | 11 14 | D4 GND | 12 13 | D3 |________________| Pinout diagram: 2732 (4 kilobyte x 8 bit EPROM memory chip) .------. .------. | |__| | A7 | 1 24 | Vcc A6 | 2 23 | A8 A5 | 3 22 | A9 A4 | 4 21 | A11 A3 | 5 20 | /OE Vpp A2 | 6 2732 19 | A10 A1 | 7 18 | /CE A0 | 8 17 | D7 D0 | 9 16 | D6 D1 | 10 15 | D5 D2 | 11 14 | D4 GND | 12 13 | D3 |________________| Pinout diagram: 2764A (8 kilobyte x 8 bit EPROM memory chip) .------. .------. | |__| | Vpp | 1 28 | Vcc +5 Volts A12 | 2 27 | /PGM (Active low) A7 | 3 26 | N.C. No connection A6 | 4 25 | A8 A5 | 5 24 | A9 A4 | 6 23 | A11 A3 | 7 2764A 22 | /OE Output Enable A2 | 8 21 | A10 A1 | 9 20 | /CE Chip Enable A0 | 10 19 | D7 D0 | 11 18 | D6 D1 | 12 17 | D5 D2 | 13 16 | D4 GND | 14 15 | D3 |________________| Pinout diagram: MPS 2364 (8 kilobyte x 8 bit ROM chip.) Note that while most 8k x 8 bit EPROM chips have 28 pins, this ROM chip of the same memory size uses only 24 pins. This ROM chip is often used in Commodore 8-bit products, such as the C64 and VIC-20 computers, as well as in game cartridges for various home systems including the Bally Astrovision / Astrocade. Note that Motorola once made a pin-for-pin compatible EPROM replacement; the MCM 68764. .------. .------. | |__| | A7 | 1 24 | Vcc A6 | 2 23 | A8 A5 | 3 22 | A9 A4 | 4 21 | A12 A3 | 5 20 | /CS A2 | 6 2364 19 | A10 A1 | 7 18 | A11 A0 | 8 17 | D7 D0 | 9 16 | D6 D1 | 10 15 | D5 D2 | 11 14 | D4 GND | 12 13 | D3 |________________| Pinout diagram: 27128 (16 kilobyte x 8 bit EPROM memory chip) .------. .------. | |__| | Vpp | 1 28 | Vcc A12 | 2 27 | /PGM A7 | 3 26 | A13 A6 | 4 25 | A8 A5 | 5 24 | A9 A4 | 6 23 | A11 A3 | 7 27128 22 | /OE A2 | 8 21 | A10 A1 | 9 20 | /CE A0 | 10 19 | D7 D0 | 11 18 | D6 D1 | 12 17 | D5 D2 | 13 16 | D4 GND | 14 15 | D3 |________________| Pinout diagram: 27256 (32 kilobyte x 8 bit EPROM memory chip) .------. .------. | |__| | Vpp | 1 28 | Vcc A12 | 2 27 | A14 A7 | 3 26 | A13 A6 | 4 25 | A8 A5 | 5 24 | A9 A4 | 6 23 | A11 A3 | 7 27256 22 | /OE A2 | 8 21 | A10 A1 | 9 20 | /CE /PGM A0 | 10 19 | D7 D0 | 11 18 | D6 D1 | 12 17 | D5 D2 | 13 16 | D4 GND | 14 15 | D3 |________________| Pinout diagram: 27512 (64 kilobyte x 8 bit EPROM memory chip) .------. .------. | |__| | A15 | 1 28 | Vcc A12 | 2 27 | A14 A7 | 3 26 | A13 A6 | 4 25 | A8 A5 | 5 24 | A9 A4 | 6 23 | A11 A3 | 7 27512 22 | /OE Vpp A2 | 8 21 | A10 A1 | 9 20 | /CE A0 | 10 19 | D7 D0 | 11 18 | D6 D1 | 12 17 | D5 D2 | 13 16 | D4 GND | 14 15 | D3 |________________| Pinout diagram: 27513 (4 pages x 16 kilobytes each x 8 bits wide) .------. .------. | |__| | DU | 1 28 | Vcc A12 | 2 27 | /WE A7 | 3 26 | A13 A6 | 4 25 | A8 A5 | 5 24 | A9 A4 | 6 23 | A11 A3 | 7 27513 22 | /OE Vpp A2 | 8 21 | A10 A1 | 9 20 | /CE A0 | 10 19 | D7 P0 D0 | 11 18 | D6 P1 D1 | 12 17 | D5 D2 | 13 16 | D4 GND | 14 15 | D3 |________________| APPENDIX D -- TABLE of CONTROL and PROGRAM METHOD WORDS (Altered from the original only by sorting the list alphabetically by "EPROM type".) PROMENADE C1 with PROMOS 2.0 Operating System Software Programming Method Words (PMW) EPROM Program Control Standard Intelligent Methods Type Voltage Words Method #1 #2 #3 =============================================================== 2516 25 28 3 7 A E 2532 25 18 3 7 A E 2564 25 14 3 7 A E 27011 12.5 4X06 ** NR 6 NR NR 27128 21 5 3 7 A E 27128A 12.5 6 NR 6 A E 2716 25 28 3 7 A E 2716B 12.5 2A NR 46 4A 4E 27256 12.5, 21 E6, E5 * NR 6 A NR 2732 25 E0 3 7 A E 2732A 21 E1 3 7 A E 2732B 12.5 E2 NR 46 4A 4E 27512 12.5 E2 ** NR 6 NR NR 27513 12.5 4XE2 ** NR 6 NR NR 2758 25 28 3 7 A E 2764 21 5 3 7 A E 2764A 12.5 6 NR 6 A E 27C16 25 28 43 47 4A 4E 27C256 12.5, 21 E6, E5 * NR 6 A NR 27C512 12.5 E2 ** NR 6 NR NR 27C64 21 5 3 7 A E 2815 21 39 3 6 B F 2816 21 39 1 7 NR NR 48016 25 28 2 5 9 D 5133 21 5 3 NR NR NR 5143 21 5 3 NR NR NR 5213 21 39 2 4 9 D 52B13 5 7 NR 4 NR NR 52B23 5 7 NR 7 NR NR 68764 25 30 NR 46 4B 4F 68766 25 30 NR 46 4B 4F 68769 25 30 NR 46 4B 4F X2804A 21 39 1 NR NR NR X2816A 21 39 1 NR NR NR X2864A 21 7 1 NR NR NR NR = NOT RECOMMENDED. * = Be SURE to use the CORRECT Control Word corresponding to the programming voltage required by your particular EPROM. ** = Requires special programming. See manual for details. (End of document)