Thanks everyone! This wouldn't have been possible without all the help & support from this wonderful community.
Michael - that's a small DIP-28 to DIP-32 SRAM adapter, my AS6C1008 hasn't arrived yet, so I'm sticking to a 32Kx8 SRAM that I had.
I'm having a new problem now: the LCD.
I've added an additional 74HC00 on top of my RW1 so that I could convert LCD/EN into LCDEN and sync it with Ф2:

- "Oh God, please, take it off me"
I've then rewired a low-active LCD/EN to to through this NAND and become LCD/EN as described here:
http://www.6502.org/mini-projects/optrexlcd/lcd6502.gif
And this is where all the weird stuff started happening.
The screen is initialized, but I can only see the garbage being printed:
(The string I'm attempting to print is "ABCDEFGH01234567".)
No matter what I tried, I couldn't produce any actual characters. The screen initializes, the cursor advances, but the garbage is always there.
I've tried clocking my SBC at
2MHz, 1.8432MHz, 1MHz, 500KHz, 100KHz, 10KHz, 1KHz, and even 100Hz - it's still the same.
Writing to HD44780's control register still works fine, I can read the busy flag & the DDRAM address just fine.
Now, here's the weirdest part:
if I connect a wire longer than ~5 inches to Ф2, leaving the other way unconnected, the LCD initialization commands don't seem to have any effect, but writing to data register still advances the caret (although text is not visible), because if I read the control register, I can see that the DDRAM address has increased).
It happens whenever I connect a piece of wire, an oscilloscope probe, or a digital analyzer to either of the following places:
- Ф2;
- Between 2nd & 3rd quarters of NAND (
http://www.6502.org/mini-projects/optrexlcd/lcd6502.gif);
- Directly to LCD's Enable pin.
I thought there was some voltage drop or extra capacitance on Ф2, but my scope still shows sharp edges on it. Additionally, the CPU still works normally, and LCD even seems to properly clear the busy flag (because my CPU doesn't hang on LCDBUSY routine).
In all of the above cases,
I never saw any noise or voltage drop on Ф2 with my scope, and my digital analyzer always showed correct values of data bus at all times.
I've also tried adding filters on LCD's power terminals & Enable pin - no luck. Is there anything else I need to do to make the Enable pin work properly? It seems to be overly sensitive or something.
I also tried using 7805 instead of my TSR 1-2450.
Finally, I've tried adding a 20K pull-up (and pull-down) at Enable line.
Some more details:
- The ribbon cable between the board & the LCD is around 3-4" long.
- I also tried jumpers instead of the ribbon cable. I also tried connecting LCD directly to the main board without cables.
- The garbage pattern does not change when hitting "Reset", but DOES change when power-cycling the board. However, the first character is almost always lowercase "x". (The string I'm attempting to print is "ABCDEFGH01234567")
Any thoughts would be appreciated!
EDIT: I'm suspecting that the display itself might be faulty (unlikely, but still possible, especially with all the knock-off models)... Will try a different one just to be sure.