Posts
TMS9918A and PS/2 Keyboard
- Get link
- X
- Other Apps

I've been away from my project, but this week I've made a few additions to the SBC. Instead of using an old TRS-80 keyboard, I decided a while back to use a PS/2 keyboard (interfaced through the VIA). Things worked relatively well, except that the SBC froze if no keyboard was present. Last week, I changed from the fully software-driven PS/2 interface, to an MCU-based interface. This offloads a lot of the work, and only sends characters (instead of scan codes) via an interrupt to a buffer. And today, I decided to add a video component to the SBC. A Texas Instruments TMS9918A VDP (Video Display Processor). It outputs a composite signal to a standard-definition television. Although hard to see in this picture, you can see a bit of text with lots of color fringing. I will need a good monitor to see if it's a problem with my cheapy LCD monitor, or the video signal itself. I did notice some jitter in the oscilloscope, so fixing this might not be so easy.
TRS80 Model III Keyboard on my 6502 SBC
- Get link
- X
- Other Apps

The time has come to add a keyboard. I scrounged up an old Radio Shack TRS-80 Model III last year. Alas, it arrived broken. The tube was completely smashed! Thanks, UPS! So I decided to repurpose the microcomputer to become my future casing for the 6502 SBC. Not sure what I'm going to do for the final display. I did get my hands on some TMS9918 chips and the Parallax Propeller. But that's another post for another time. For now, the keyboard circuit is all done. It's fairly simple and the 8x8 keyboard matrix is directly connected to port A and port B of a second VIA chip. It did take me a while to map out the keyboard matrix. What is need about this keyboard is the integrated reset button. TRS-80 Model III Keyboard Matrix 12KE010C (or is it I2KEOIOC ?) ALPS ELECTRIC CO., LTD. JAPAN 20 pin connector 9 10 11 12 13 14 15 16 1 @ A B C D E F G 2 H I J K L M N O 3 P Q R S T U V W 4 X Y Z 5 0 1 2 3 4 5 6 7 6 8 9 : * ; + , < - = . > / ? 7 Enter Clear Break Up Down Left Right S...
- Get link
- X
- Other Apps

So, it's decided. With the inspiration of Reddit, I will use the 40x4 display instead of the 20x4. For the last weeks, I've been working on my monitor program. Not everything is implemented, but a lot of the functionality is working. Some optimization is needed... eventually. Basic is yet to come. This feels like a big chore. Any suggestions? Convert converts between decimal, hexadecimal and binary (not yet implemented) Diagnose tests the RAM. (working) Execute a program in RAM (working) Fill a region of memory with a byte (working) Help... duh... (working) Load a program from the computer via XMODEM (not yet implemented) Memory map (working) Processor status (sort of working) Read, or memory dump of a region of memory (working) Save a portion of memory (not yet implemented) Time, set, or read time from RTC (working) Write a byte or series of bytes to memory (working)
Some news of the build
- Get link
- X
- Other Apps

I haven't been very active lately on the blog. You know, life! That and I was working on the monitor program for my build. Anyway, above is a picture of my build on this day. Getting the 40x4 display working was a pain, but I managed to figure it out. I'm still debating if I should use the single 40x4 display, or a 20x4 display AND a graphical display. The pros and cons: The 40x4 LCD actually operates as 2 independent LCDs and requires 2 enable pins for top and bottom portions. So this makes it harder to code for. You have to admit, it looks pretty spiffy. However, the 20x4 display is easier to code for. I am also considering a graphical display, possibly as a second display? Time and budget will tell... stay tuned.
New memory map, simple EEPLD programming
- Get link
- X
- Other Apps

And here I thought that WinCupl was a beast to comprehend. But it turns out I was missing some information. The magic happens with fields. All I had to do is specify addresses in my equations to let WinCupl work out the logic for me. My first try was to use pure logic gates. And this failed for me when I tried to address IO within the range of ROM and RAM. Live and learn, I am after all new at this. Behold the simplicity of WinCupl's power: Name Mainboard Logic Decode v2; PartNo ATF22V10C ; Date 2020-11-22 ; Revision 01 ; Designer The Micro Hobbyist ; Company Self ; Assembly 6502 mainboard logic ; Location U105 ; Device G22V10; /* *************** INPUT PINS *********************/ PIN 1 = CLK; /* Clock */ PIN 2 = A15; PIN 3 = A14; PIN 4 = A13; PIN...