It works! After some time, and with second attempt. First one was classical "I want everything there", which failed.
After soldering most part I found two data lines shorted, and one wire desoldered while I was fixing first bug. After that it was executing the code from ROM; well, this is FLASH chip, but it's read-only here. While accessing the RAM chip it wasn't very happy. I didn't understand it: on the bus I saw (using oscilloscope ofc.) ROM still holding data, and suddenly RAM started talking (RAM's HIGH level is a bit lower). No matter what I did, access to RAM was causing two things to talk at once, showing all kinds of trapezoid lines, and causing CPU to reset after a few cycles. Interrupts were redirected to RESET, 'cause I tested it with ROM only and didn't have RAM to save return address into. It looked very weird. Surprisingly, at higher speeds (5MHz) things were going fine, lower speeds were causing RAM and CPU to to drive the data bus at once, also I/O didn't work.
My Φ2 is generated by 74HC74, and it's going to both CPU and logic, so I connected logic to CPU's Φ2 output. Suddenly everything started working perfectly. I found the error soon: CPU was getting clock shifted by 180°. I guess it was mind eclipse, I do not know how and why did I do it this way. By the way I found that my old MOS6502AD can run at 5.33MHz, until it warms up (5MHz limit then). Not so bad.
Next thing: I had to replace 74HC688 with 74AC521, above 6MHz it didn't work. I have only SMD ones, with 0.65mm leads pitch, so I made this funny looking franken-chip, that fits in a DIP socket. It works.
Some schematics:
Address decoder
Address decoder:Previous idea was to put only 32K of RAM, 16K of ROM, and to drive all I/Os from address lines. I changed my mind, though, it still could be done that way without much trouble. Also there is easy option to copy ROM to RAM, and switch the RAM in, so I'd have 64KB - 256B of RAM, and 256B for I/O. ROM is selected for reads, RAM for writes, select line is pulled up for now. Maybe I'll change it someday.
What next? I have 640x480 black-and-white LCD (without a driver yet, but there is an idea how to make one), I'll also connect UART to have a serial console. There is a small RS232 text printer laying around, which might be useful too.
Surprisingly ringing isn't an issue, there is some light overshoot and undershoot, but nothing too serious. I guess diodes at inputs of chips clamp that.
Clock generator:It was designed to divide input clock by any four-bit binary number having at most two bits set, and then by two again (74HC74): 2, 4, 6, 8, 10, 12, 16, 18, 20, 24. 74HC chips used here have trouble getting things right at higher frequencies, and from somewhere between 16MHz and 30MHz they start losing one pulse. By setting divider to 4 with 32MHz input I get 5.33MHz, not 8MHz as it should, so it in fact divides by 6. Higher-speed dividers are: 4, 6, 8, 10, 12, 14, 18, 20, 22 and 26.
Finally, a photo of the machine running some CPU tests. It displays whether CPU is 6502 or 65C02 on TIL311, then continues counting up from 0 to F. Original 74HC688 fitted in:
You might notice that CPU looks funky: Rockwell part with date code 1426. That's another subject.
Credits:Thank you Garth Wilson for primer and valuable input, BigDumbDinosaur for some ideas, and others. I hope that this is only beginning.