Hex keyboard & LED display / ROM Monitor

884 views
Skip to first unread message

Spencer Owen

unread,
Mar 7, 2017, 7:37:49 AM3/7/17
to RC201...@googlegroups.com
Hi guys,

One of the things that I feel that the RC2014 is missing is a simple hex keyboard with 7 segment LED displays for that authentic retro experience.  Kind of like the MK14  the KIM-1 or other similar machines of their day.  Although I can't remember what machine it was, I remember writing out assembly code in college and punching it in hex digit by hex digit to get some LEDs to work as traffic lights.  it was slow and frustrating, but gave a real sense of achievement when it worked.

From my perspective, the hardware side is easy.  The monitor software, to be honest, would be really pushing my limits though.  However, I know a few people here have mentioned writing or adapting monitor software recently, so it would be daft of me to reinvent the wheel.  If anyone is happy to work with me in tailoring their ROM monitor with my hardware then I'd love to include it with the new keyboard/display.

However, before I can start on the hardware, I need to make a fundamental decision - How should it interface to the RC2014?  There are two approaches I've been looking at - A traditional 8255 Programmable Peripheral Interface that hooks directly in to the Z80 bus, or an ATMEGA328 connected to the serial port.

The 8255 option would be the 'pure' choice, and would alleviate the need for having a 68B50 ACIA.  However, it would need the keyboard scanning routines and display driving routines built in to the monitor code.  Both the hardware and software would be useless without the other, so developing it would be a chicken and egg type situation.

Using an ATMEGA328 to do the keyboard scanning and display driving seems to be a modern cop out and takes away some of the authenticity.  However, it is easy.  It also means that if the ROM Monitor is just talking through the serial port then it would work fine with the terminal software or Pi Zero interface that we currently use.

Personally, I think I'm inclined towards the serial option, because it is more universal.  However, using authentic hardware seems to be the right way to go.  What are your thoughts?  Is this even of any interest to you or is it ultimately an exercise in futility?

Cheers

Spencer

Mild Lee Interested

unread,
Mar 7, 2017, 9:06:56 AM3/7/17
to RC2014-Z80, RC201...@googlegroups.com
I remember writing out assembly code in college and punching it in hex digit by hex digit to get some LEDs to work as traffic lights.  it was slow and frustrating, but gave a real sense of achievement when it worked.

I had comparable experience to this writing, entering and fault finding industrial PLC code using hand held programmers way back when. It's awkward and frustrating, but very satisfying when a you get it to work  Image search "hand held plc programmer" to see what I'm talking about.
An obsolete method by the time I was doing it, some of the gear couldn't be programmed any other way. It certainly encourages carefully planned, thoughtfully implimented code.  

While I would usually push for the "authentic" method, I agree that using serial with a micro is a lot more practical and versitile.
 
I know it's scoffed at by many (and I don't have a feel for the attitude of this group), but perhaps you could consider the Arduino-and-shield route, since there are a heap of libraries available for the keypad, display and serial functions that could allow you to cludge something together pretty quickly.

Spencer Owen

unread,
Mar 7, 2017, 10:17:15 AM3/7/17
to rc201...@googlegroups.com
On 7 March 2017 at 14:06, Mild Lee Interested <comfortabl...@gmail.com> wrote:
I know it's scoffed at by many (and I don't have a feel for the attitude of this group), but perhaps you could consider the Arduino-and-shield route, since there are a heap of libraries available for the keypad, display and serial functions that could allow you to cludge something together pretty quickly.

 
The ATMEGA328 option is effectively an Arduino Uno, albeit a different shape PCB.  So all the libraries for the Arduino would work - and, indeed, be what I'd rely on.  The problem with Arduino shields, though, is that the keyboards are typically 4x4, so once you've got keys 0-F there's nothing left for Enter or Go etc.  It would be easy enough to build a 4x5 keyboard and just tell the library which pins to use.  Similarly with the display, I would use standard libraries but lay out the displays in the most appropriate format.

Cheers

Spencer

Scott Lawrence

unread,
Mar 7, 2017, 10:25:03 AM3/7/17
to rc201...@googlegroups.com
When I was working on the KIM Uno stuff, I was trying out different formfactors of it while I waited for my kit to arrive.  It was difficult to find 24 key keypads.  As you mention, many are 4x4.  I ended up going with classic (and very cheap) calculators for their keypads and LED displays, plus also this monstrosity: http://www.wintergroundfairlands.com/2015/01/kim-uno.html

One thing that might be an interesting solution is to actually just get a KIM Uno.  $10 for the kit from Oscar Vermeullen, http://obsolescence.wixsite.com/obsolescence/kim-uno-summary-c1uuh

Then just interface it as a serial terminal, or hook it up through the Digital I/O interface of the RC2014...

Hmmm...

-s

On Tue, Mar 7, 2017 at 10:17 AM, Spencer Owen <spe...@sowen.com> wrote:

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+unsubscribe@googlegroups.com.
To post to this group, send email to rc201...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/rc2014-z80/CAO93PtffXH%3DiB-zrmn3zzhytWju5X%2B60RzC7PxNX3Wy11wjasw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.



--
Scott Lawrence
yor...@gmail.com

Paul Carbone

unread,
Mar 7, 2017, 2:39:27 PM3/7/17
to RC2014-Z80, RC201...@googlegroups.com

The 8255 option would be the 'pure' choice, and would alleviate the need for having a 68B50 ACIA.  However, it would need the keyboard scanning routines and display driving routines built in to the monitor code. 
 
I love this idea!  The other thing I've been playing around with a lot is the Heathkit MC6800 based ET-3200 trainer.  The monitor ROM on that is responsible for scanning the keyboard, and there's a few routines for displaying characters on the screen.  Viewing / altering memory & registers is fairly straightforward, and there's single-step functionality.  It's really a nice little monitor.

BTW, I just got my kit built this weekend and it worked with out a hitch.  Thanks for all of your hard work on this, it's very much appreciated!

cheers,
Paul

Chris Oswald

unread,
Mar 7, 2017, 3:11:41 PM3/7/17
to RC2014-Z80, RC201...@googlegroups.com
Hi,
I nearly have a monitor  working, its taken from "8080/Z80 Assembly Language" by Alan R Miller. I downloaded the code from jeff tranter at github. Modified it and it  works on a terminal. I have just added a hex uploader but am having problems with a hex downloader, everything else seems to work fine.
If I had a choice I would go down 8255 route, I will be building a board in the future.

Ben Chong

unread,
Mar 7, 2017, 7:37:32 PM3/7/17
to RC2014-Z80, RC201...@googlegroups.com
The Z80 Membership Card uses a 4x4 keyboard. Its monitor uses several LEDs to indicate the mode the keyboard is in e.g. waiting for HEX data vs command. Once you hit a command key, an LED will light up to indicate the HEX capture mode and it's valid for a number of seconds before timing out back to command mode.

I personally don't like this approach because the system always times out on me. And you have to read the manual to understand how it works ...!

I've other systems (e.g. SYM-1) with more keys and they always work better.

Another option is to use two 4x4 matrix keypads :)



Mild Lee Interested

unread,
Mar 8, 2017, 6:00:33 AM3/8/17
to RC2014-Z80
Granted, although building your own board seems like a lot of work when there are a number of cheap 4x5 keypads out there that will do the trick.  They even come with indicator LEDS (like these).  Also many membrane types.
Pairing this with a 2x8 LCD (like these) would get you better than basic functionality (yay verbose error messages!) at the cost of retro elegance.
"Shield" is sort of a generic term to me.  I mean anything that you plug arduino (of some type) GPIO headers into, whatever the size.  The "shield" can be bigger tha the Arduino, no problem.  Using an UNO clone gives you the advantage of not having to muck about with power supplies, etc, in your design, plus the whole bootloader thing they are famous for.
My approach would be a traditional UNO size Arduino shield to hold the LCD and connectors for the ribbon cables to the RC2014 and the keypad.
If you want to make it retro-pretty, mount 7segs and shift registers/drivers, etc on the shield instead of the LCD, but keep the keypad seperate - (cause cheap and available)

Ben Chong

unread,
Mar 8, 2017, 1:03:30 PM3/8/17
to RC2014-Z80


On Wednesday, March 8, 2017 at 3:00:33 AM UTC-8, Mild Lee Interested wrote:
Granted, although building your own board seems like a lot of work when there are a number of cheap 4x5 keypads out there that will do the trick.  They even come with indicator LEDS (like these).  Also many membrane types.

Sweet. That solves the sourcing problem.
 
Pairing this with a 2x8 LCD (like these) would get you better than basic functionality (yay verbose error messages!) at the cost of retro elegance.


I have one of these (bought on Ebay): http://www.kswichit.com/8080kit/8080kit.htm

Very nice vintage-style keypad+LED user interface with a serial port option. This can be a good reference for folks who want to go authentically vintage. He uses simple TTL latches and buffers for the display and keyboard matrix. There are headers for a 16x2 LCD display. 

The monitor is smart enough to support a serial console as well. Source code for the monitor is available on this webpage. A similar Z80 board is available albeit without monitor source code.

The trick in designing something like this is the ability to very quickly type in hex data.

The modified serial monitor that I've been working on is great for that: once you get into the data entry mode (E <address>), you just continue typing in the hex values one after another, without having to hit a command key etc. Of course, all credit goes to the original creator of that monitor :)

Paul Carbone

unread,
Mar 8, 2017, 8:21:59 PM3/8/17
to RC2014-Z80

Granted, although building your own board seems like a lot of work when there are a number of cheap 4x5 keypads out there that will do the trick.  They even come with indicator LEDS (like these).  Also many membrane types.
Sweet. That solves the sourcing problem.

Yeah, good find, those look satisfyingly clicky.   

I have one of these (bought on Ebay): http://www.kswichit.com/8080kit/8080kit.htm

I've been spying that one for a bit, nice to hear someones experience with it.  My only minor peeve with some of these is the keyboard layout: Personally I'd prefer the standard, 3 wide number-pad, with Hex & command keys off to the top and/or side.  Do you just get used to the 4 wide number pad?

Spencer Owen

unread,
Mar 9, 2017, 7:17:04 AM3/9/17
to rc201...@googlegroups.com
Thanks for your thoughts on this.  Some interesting comments.

From a protocol perspective, I think serial is the way to go as it just offers much more options as to what hardware can be used.

I did a trial run at laying out a board yesterday.  I decided to try using Cherry MX key switches, partly because they'll give a lovely clicky input experience, partly because there's a big range of key caps colours, and partly because, well, I've wanted to do a Cherry keyboard thing for a while :-)  The ATMEGA328 (Arduino Uno) does the key scanning and talks over I2C to a Pimoroni Microdot Hat which gives 6 lovely LED digits.  So, all in all, it's a pretty neat board.  However, it won't come out to anywhere near the cost of those 4x5 keypads listed further up in this thread
Inline images 1
I'm sure it would be easy enough to build a low budget version though, maybe based on the 4x5 keypad from eBay, 7seg LED displays and an Arduino

What do you think?

Spencer

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+unsubscribe@googlegroups.com.
To post to this group, send email to rc201...@googlegroups.com.

phillip.stevens

unread,
Mar 9, 2017, 7:26:51 AM3/9/17
to RC2014-Z80
All for things with I2C interfaces. Would be good to see a custom hex keyboard.

There's a nice 5v compatible I2C device I've used. The PCA9665. Could be made into a interface board with minimal trouble, and opens Seeed Grove and Sparkfun sensor inputs and outputs.

http://www.digikey.com.au/product-detail/en/nxp-semiconductors/PCA9665N,112/568-4069-5-ND/1300992

Scott Lawrence

unread,
Mar 9, 2017, 10:12:24 AM3/9/17
to rc201...@googlegroups.com
Oh my.  Those micro dots are beautiful!  I'll have to have bitmap routines for them too!

Sent from my fancy-schmancy phone.

On Mar 9, 2017, at 7:17 AM, Spencer Owen <spe...@sowen.com> wrote:

Thanks for your thoughts on this.  Some interesting comments.

From a protocol perspective, I think serial is the way to go as it just offers much more options as to what hardware can be used.

I did a trial run at laying out a board yesterday.  I decided to try using Cherry MX key switches, partly because they'll give a lovely clicky input experience, partly because there's a big range of key caps colours, and partly because, well, I've wanted to do a Cherry keyboard thing for a while :-)  The ATMEGA328 (Arduino Uno) does the key scanning and talks over I2C to a Pimoroni Microdot Hat which gives 6 lovely LED digits.  So, all in all, it's a pretty neat board.  However, it won't come out to anywhere near the cost of those 4x5 keypads listed further up in this thread
<Hex Keyboard.png>
I'm sure it would be easy enough to build a low budget version though, maybe based on the 4x5 keypad from eBay, 7seg LED displays and an Arduino

What do you think?

Spencer

On 9 March 2017 at 01:21, Paul Carbone <pa...@paulcarbone.com> wrote:

Granted, although building your own board seems like a lot of work when there are a number of cheap 4x5 keypads out there that will do the trick.  They even come with indicator LEDS (like these).  Also many membrane types.
Sweet. That solves the sourcing problem.

Yeah, good find, those look satisfyingly clicky.   

I have one of these (bought on Ebay): http://www.kswichit.com/8080kit/8080kit.htm

I've been spying that one for a bit, nice to hear someones experience with it.  My only minor peeve with some of these is the keyboard layout: Personally I'd prefer the standard, 3 wide number-pad, with Hex & command keys off to the top and/or side.  Do you just get used to the 4 wide number pad?

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+unsubscribe@googlegroups.com.
To post to this group, send email to rc201...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/rc2014-z80/ac471e7f-f915-4c3d-bed0-26d03118074a%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+...@googlegroups.com.

To post to this group, send email to rc201...@googlegroups.com.

Scott Lawrence

unread,
Mar 9, 2017, 10:12:59 AM3/9/17
to rc201...@googlegroups.com
I2c interface board for the 'RC? Yes, please!

Sent from my fancy-schmancy phone.

> --
> You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+...@googlegroups.com.
> To post to this group, send an email to rc201...@googlegroups.com.
> To view this discussion on the web, visit https://groups.google.com/d/msgid/rc2014-z80/4ae908b2-d62c-409c-a303-6e38270511fd%40googlegroups.com.

Kipper Klank

unread,
Mar 9, 2017, 10:54:41 AM3/9/17
to RC2014-Z80
I love you...

Sir Isaac

unread,
Mar 9, 2017, 2:47:17 PM3/9/17
to RC2014-Z80
This looks great. I'd love to add this to MY RC2014 build. I'll be watching Tindie for when these go on sale. Do you have any (ballpark) ETA? 

Mild Lee Interested

unread,
Mar 9, 2017, 6:36:21 PM3/9/17
to RC2014-Z80
That looks very pretty!  Cherry keys and matrix display makes for unfortunate $$$ though.
You've given me an idea for a bunch of SGG2016 4 digit dot matrix displays that I picked up ages ago and been looking for a worthy project...

Ben Chong

unread,
Mar 10, 2017, 10:53:04 AM3/10/17
to RC2014-Z80


On Thursday, March 9, 2017 at 4:17:04 AM UTC-8, Spencer Owen wrote:

What do you think?

Is the idea that this will talk to the RC2014 as a serial terminal? So a serial monitor like the one I'm working on will work (with some mods obviously)?

If so one suggestion is for the Arduino to send on start-up an ID string to the RC2014 to identify itself and the monitor can switch modes from regular 80x25 (or whatever) to 1x6 and also reduce the verbosity. 


Spencer Owen

unread,
Mar 10, 2017, 1:04:32 PM3/10/17
to rc201...@googlegroups.com
Cheers guys,

Just to clarify the I2C stuff - I was thinking that the Arduino/ATMEGA328 would effectively do an ASCII to I2C conversion to drive the Microdot displays, not to be a general I2C interface for the RC2014 (Although that idea could be explored separately at a later date).  

Yes, sadly using decent keys and a nice display will cost $$$.  Just needing a big PCB alone will add to the cost (I based it on the size of a Backplane 8, because it just wouldn't fit on a Backplane 5 size board).  So, yes, it looks like there will have to be a low budget version that's smaller with regular tact switches.  But the beauty of doing it over serial is that almost anything can be used (including terminal software, Raspberry Pi etc) without needing the specific hardware.  My concern, though, is that if it's not easy and comfortable to use then it will be used less and not give value in the satisfaction department.

Ben, that's a good idea about sending an ID string, and very easy to do too.

Sir Isaac, The timescale depends how many revisions are needed before it's released.  Typically the design, PCB manufacture, shipping, testing is around 3-4 weeks.  Sometimes I get it right (or right enough!) the first time, but things like the SD Module took several months before I was happy with it.

Spencer

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+unsubscribe@googlegroups.com.
To post to this group, send email to rc201...@googlegroups.com.

Ben Chong

unread,
Mar 10, 2017, 7:37:11 PM3/10/17
to RC2014-Z80
Spencer, I was thinking that if you want to go Cherry switches, why not go all the way NASCOM or even OSI Superboard? 

It'll be mucho $$$ but also very nicely vintage :)

And then use the Propeller chip for video ...!!!

Sorry, it's late Friday over here and I need a drink...

shadow 338

unread,
Feb 27, 2022, 11:31:01 PM2/27/22
to RC2014-Z80
Hello all, trying to revive this thread.

I'm wondering what happened since 2017 and what people are doing on the rc2014 to get it programmed via hex keypad or even toggle switches :)

Somewhat related, I just came across this project that is a TEC-1 on a rc2014 bus.


Cheers.

H.

Alan Cox

unread,
Feb 28, 2022, 8:38:36 AM2/28/22
to rc201...@googlegroups.com
On Mon, 28 Feb 2022 at 04:31, shadow 338 <henrique...@gmail.com> wrote:
Hello all, trying to revive this thread.

I'm wondering what happened since 2017 and what people are doing on the rc2014 to get it programmed via hex keypad or even toggle switches :)

All the hardware pieces exist. The Zxkey matrix keyboard interface I did can handle up to 8x8 matrix keypads so the 99cent Chinese hex pads work fine and the MG001 board is a 4 x 7 segment LED driver board for the other half.

Alan
 

Tomislav Canic

unread,
Mar 29, 2022, 8:25:48 PM3/29/22
to RC2014-Z80
Somehow using a modern microcontroller for this project doesn't feel good to me (not that anything is wrong with that approach). 
I think it would be more appropriate to use 80C31 or 80C32 (micro + 74LS/HCT574 + E(E)PROM) instead of ATMEGA328.
I'll have enough time in a month or two to try this out, gotta dig out the chips from the dusty boxes in the corner.

Tomislav

shadow 338

unread,
Mar 31, 2022, 9:16:39 AM3/31/22
to RC2014-Z80
Maybe some discrete logic chip could be used (e.i quad 3-STATE Buffer) and then the keyboard scan routine handled by software.

simon christo

unread,
Apr 6, 2022, 3:17:55 AM4/6/22
to RC2014-Z80
Hi all!! The Texas Instruments TIL311, actually has a HEX to 7 Segment Converter in the Display itself!! You were probally aware of this anyway, but maybe for future products, it may be viable, instead of using a Microcontroller?

Thanks Simon, See ya!!!

Phil G

unread,
Apr 6, 2022, 5:09:25 AM4/6/22
to RC2014-Z80
>> The Texas Instruments TIL311, actually has a HEX to 7 Segment Converter in the Display itself!!
I think you're doing the TIL311/DIS1417 a disservice describing it as 7-seg, its much nicer than that, with its 4x7 dots the characters are much easier to read than 7-segs, and crucially it has a latch so is write-and-forget  :-)    Genuine pulls are readily available on ebay for £2.50 ish.
Cheers :-)
Phil

Phillip Stevens

unread,
Apr 6, 2022, 5:16:54 AM4/6/22
to RC2014-Z80
Phil wrote:
>> The Texas Instruments TIL311, actually has a HEX to 7 Segment Converter in the Display itself!!
I think you're doing the TIL311/DIS1417 a disservice describing it as 7-seg, its much nicer than that, with its 4x7 dots the characters are much easier to read than 7-segs, and crucially it has a latch so is write-and-forget  :-)    Genuine pulls are readily available on ebay for £2.50 ish.
Cheers :-)
Phil

Yes. +1 on the "its no 7-seg display". They're way better.

You actually get proper HEX letter representation for A, B, C, D, E, and F, as well as properly shaped decimals too.
Their data latch works properly at 36MHz, and they can be driven directly off the address lines of a Z80/Z180.

Video of them in action below.

Still made in Korea, I believe, so you can find them new if needed.

Cheers, P

Phil G

unread,
Apr 6, 2022, 6:33:58 AM4/6/22
to RC2014-Z80
>>Video of them in action below.
That video is private unfortunately but here's my Elf with its TIL311 display: https://www.youtube.com/watch?v=5NCWL_Ra7As

Mike, K8LH

unread,
Apr 7, 2022, 7:02:12 AM4/7/22
to RC2014-Z80
How about one of these 44-key IR remotes (and the IR receiver IC that comes with them) and some type of I2C display (LED, LCD, OLED, etc.).  The remotes cost about $1.69, including shipping, a few years ago.  Add a plastic coated paper keypad overlay and connect the IR receiver IC and display to an 8-pin PIC or Atmel chip.  

Stay safe.  Cheerful regards, Mike, K8LH

44 Key NEC Codes.png44 Key NEC Protocol.png

Bill Shen

unread,
Apr 7, 2022, 7:14:27 PM4/7/22
to RC2014-Z80
How about program a CPLD to read regular PS2 keyboard as the input device and drive six 7-segment display (4 addresses, 2 data)?  CPLD can place Z80 in reset state, read & display RAM content, accept PS2 input to update RAM, and release Z80 program to run program.  Should be quite do-able with FPGA but the challenge is fitting the design in a limited resource CPLD.
  Bill

Bill Shen

unread,
Apr 9, 2022, 11:10:09 PM4/9/22
to RC2014-Z80
Something that looks like this picture.  It is a RC2014 prototype board with PS2 mini-DIN added.  The four 7-seg display on the left are addresses field while the two 7-seg display on the right are data field.  The picture shows address location 0x0023 has value of 0x3d.  The functions are implemented in hardware, i.e. EPM7128 CPLD.  The CPLD shifts in the PS2 scan code and converts it to hex values to drive the data field.  The address field is not directly modifiable but can be reset to 0x0 with "space", increment with "Enter" or decrement with "Backspace".  The "Enter" key writes the data content to current address, increment address, and read/display data of next address.  The "Esc" key toggles the system reset line and eithe taking or releasing the control of Z80 bus.  
  Bill
User Interface with PS2.jpg
Reply all
Reply to author
Forward
0 new messages