I just wanted to say a quick thanks for the reponses so far, i'm new to
all this and am full of questions.

I was wanting to make some changes to the ROM of a Commodore 64 as I am
quite comfortable with assembly language, All the sites which give
guides on this mention 2764 & 27256 chips which are EPROMs only, I was
wanting to use EEPROMs insted.

I am able to get myself a smallish supply of Winbond W27C512-45 chips
which look ok for what I want to try and do. I just have a couple of
questions.. Looking at the datasheets for these chips they state that
they have 16 address lines (A0-A15), but other 27Cxxx have lines marked
A0-A13. Will these Windbond chips work in place in a system that only
uses A0-A13? I'm not quite clear on what the lines do.

Just tie the unused address lines to ground. Otherwise connect them to
a 2-way header and jumper them high or low. The two extra bits will
allow you to partition your EEPROM/EPROM into four sections, each with
different code, effectively giving you four C64 machines in one. Note
that the C64 uses ROMs (23xx) so you will need to make an adapter
socket. I've actually replaced all three (?) ROMs in a Commodore FDD
with a single EPROM in this way.

BTW, how can you be "comfortable" with assembly language if you don't
understand addressing?

I am comfortable in the software side i.e, I can code in assembly, but
I have no idea what address lines do on an EPROM having never touched
the hardware side before. BTW, I should mention that the only assembly
I have done is on finished products such as a C64 an a PC, I have not
done any low level stuff such as prototype boards and the like since
uni.

The purpose of the address and data lines is pretty simple:
the CPU sends an address (binary value) to the EPROM using the address
lines, and then the ROM sends back the number on the data lines. The
number sent back by the EPROM is whatever you have programmed into the
address which is being specified on the address lines. There is some time
delay involved, but modern chips will normally be faster than the old ones
whichwere used in a C64, and almost always it is OK to use a faster chip
instead of a slower one. Normally there are also one or more chip-select
or output-enable pins on the chip, and if the chip is not selected then it
will not drive the data lines, so that another chip can use the data lines
(e.g. if RAM is being accessed at the time instead of EPROM.)

The newer chips have more memory, so they have more address lines. You
don't need the extra space, so as long as you ground (or pullup) the
unneeded lines (A14-A15 or whatever), it'll work correctly. Just make
sure that you program your code into the part of the ROM that matches
however you hadwire the extra address lines.
Alternatively, you could replace two 27256s or eight 2764s with one of
your 512s, which would be a lot more elegant.