          ************************************************
          *                                              *
          *  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)