visrealm / vrcpu

Code, documentation, schematics, notes for my Ben Eater inspired breadboard computer and emulator
https://cpu.visualrealmsoftware.com/emu/?h=7e387e0f377e010716bd0c7d1042303915fcc22f0d6e48656c6c6f2c20576f726c642100
MIT License
118 stars 14 forks source link

LC-display and lcc documentation #1

Open noonscoomo opened 7 months ago

noonscoomo commented 7 months ago

I am interested to reproduce your design with my students to enhance our Ben Eaters SAP-1 we already built. Currently I struggle to understand how you integrated the LC-Display and how the initialisation works. The lcc command seems to do a lot but I can't find any documentation. Can you help with some hints on how you integrated the display and how lcc command works?

visrealm commented 7 months ago

Hi. The lcc and lcd commands are very similar to other commands which write to registers, except they manipulate two control lines on the character lcd. I don't support reading from the LCD, so R/W is hard-wired to write. I have EN and RS from the LCD connected to my microcode ROMS. These two lines are manipulated by the lcc and lcd commands. The only difference between the two commands is lcc holds RS low (command) and lcd holds RS high (data). You can gain some insignt into the microcode by examining https://github.com/visrealm/vrcpu/blob/master/Arduino/Microcode/Microcode.cpp Hope this helps Troy

noonscoomo commented 7 months ago

Thank you so much, that makes things much clearer. The code explains it beautifully but maybe it's easier to add them to the commands list.

noonscoomo commented 7 months ago

ah btw., do you have some schematics? This would help a lot. Most of the modules are obvious, but schematics would help. Couldn't find them on github.

visrealm commented 7 months ago

I don't. Most of my build is based on James Bates' build: https://github.com/jamesbates/jcpu . He does have schematics.

The core difference between his and mine (before adding the LCD, NES controller, program loader, etc.) is that all of my devices output-enables are driven through a single 74LS138. That allows me to drive 8 output-enables with 3 microcode ROM outputs. It also allows me to disable all device output-enables with a single CE signal to the 74LS138. I use this feature for the program loader to ensure all outputs are disabled so the ESP8266 can control the bus.