I am working on designing an 8 bit cpu as a personal project for no real reason. I am using mostly 74HC series chips and am generally focusing on ease of programming over performance.
I am using various projects on the internet as inspiration, and I feel I have a pretty good grasp on how the basics will work, including the alu, registers, and the basic memory path.
The one thing I don't have a clue about is Input and output. I am not really interested in anything super fancy, like tcp/ip or uarts, but I would like to have a keyboard and a basic text output to a monitor of some kind. I really have no idea what hardware to use, or what instructions to make to use it.
I could squeeze a few more specialized instructions out of my ISA to access specialized hardware, but if I could do it all with some kind of memory mapping scheme that could be even better. I am planning on using a 64K ram chip, but maybe certain addresses could get diverted to other hardware or something.
I don't really want to implement interrupts, but I don't want to lose keyboard data either. Does that means I need some kind of queuing buffer chip for my keyboard? I don't even know where to start looking for a video chip, or how I would interface with it.
Any tips would be greatly appreciated. Again, I don't need anything fancy, a simple getChar and putChar would suffice. Pixel level control of graphics could be cool, but not absolutely required. I think I just need to be pointed in the right direction.