I'm inclined to agree with BDD here.
There is a problem common to every microprocessor design: getting the code in there in the first place and making sure it stays there when you turn the power off. The traditional way to do this is with non-volatile memory - ROM, PROM, EPROM, EEPROM, FLASH, whatever - but there is always the problem of getting data into that memory.
So your workflow is something along the lines of
- write your software
- assemble it to a hex file of some flavour
- use an eprom programmer (or similar) to program your prom
- physically carry the prom from the programmer and put it in your 6502 board
- test
- repeat as necessary until the test passes
The huge advantage that single board microcontrollers have over microprocessors - up to and including 64-bit monsters - is that they have non-volatile memory on board that can be easily programmed from an laptop and a USB cable. That's basically what you're trying to emulate with the various techniques that have been discussed both in this thread and elsewhere on the forum.
The problem is that when it doesn't work - and first versions of anything non-trivial never work - you don't know whether it was because the software broke, or because your hardware design is faulty. The way to get around that is to use the simplest possible hardware design - I favour my own variant of Grant Searle's design[1] - with nothing fancy beyond the basic I/O.
When you have that working, you will have proved your workflow _and_ your basic design, and then your next stage design can improve on/add to your original as you discover more issues, but at the same time, better techniques.
Don't forget that when you see Ben Eater or Matt Regan or James Sharman show you a design on Youtube, you're seeing a finished version (with perhaps enough mistakes to give it a realistic flavour) and not the approaches that didn't work...
Neil
[1] It's six-chip design using a 6851 for serial IO to an FTDI USB/serial adaptor cable. The bottom half of the memory space is all ram, the top quarter - from 0xc000 - is eeprom, and an excessively large IO space in between the two (of which a whole two bytes are user!)
You may have seen my two threads on developing a Tiny Basic in the programming section. In the first section I developed the language in C on this host laptop to the stage that I have at least the obvious bugs out. Now I'm slowly converting that design into 65c02 code with a very similar program structure, to minimise the probable bugs I will introduce. But even with the simple processor design, my first bit of code was to prove I could get data out of the serial port, then that could get data in. Then a handful of helper routines which won't appear in the final code to provide some debugging help: output the accumulator as a hex pair, show the contents of the processor registers, show a block of memory etc... you see how it builds, a little at a time, with all the 'what did I do wrong _this_ time?' minimised.
And I've programmed this eeprom probably several hundred times so far... hint: to preserve the pins of the eeprom if you don't have a ZIF socket on both the programmer and the system board, put it in a normal dip socket and move it complete with the socket. If you bend a pin on that it's easy and cheap to replace.