I'm still playing with many ideas, such as these diode ROM arrays. For example, the LED decoder uses classic diodes but I'm annoyed by the number of '138 decoding circuits. Could there be less, can it take less space ?
I'm looking at transistors to perform the decoding. For example, instead of two '138, a single '139 contains two independent 2->4 decoders. When combined, the outputs create 4×4=16 combinations, which is exactly what we need.
At each row-line crossing, PNP transistors get connected by their emitter and base. This can pull a line (or more) low when the transistor is present at the crossing. With the low drop voltage of a passing transistor (hopefully less thand 0.8V), the changed logic level is better detected by HC gates.
The same principle applies to the keyboard. There are currently 4×'138 and that's quite much to wire. A matrix system with two '138 and one transistor ("dust") per key would be easier to wire. The logic can be reversed with NPN transistors and a couple of 74HC238. Up to 64 keys can be scanned.
64 is also the number of opcodes of the YASEP. I think about the "hardware assembler/disassembler" and the opcode zone would be a 8×8 matrix with the opcode names written on the PCB, and one LED to light the currently selected opcode.
To change the opcode, the user presses one of the corresponding keys. This creates the new problem of simultaneously lighting a single LED out of 64 (easy with one 138 and one 238) while simultaneously scanning the keys. Another function of the 8×8 array (apart from key scanning and opcode display) is to provide some additional "flags" about the selected opcode (does it update the Carry flag ? ) with another layer of transistors at each crossing.
Now, if a transistor pulls some wire low (or high), additional data can be decoded with our usual suspects (Schottky diodes) tied to other sense signals...