PDA

View Full Version : Blinky light panel for PC



legalize
March 20th, 2017, 09:37 PM
Has anyone ever made one?

I was thinking:

64 LED bar/lights for PC
64 LED bar/lights for basic registers:

{{{{al, ah}, ax}, eax}, rax}
{{{{bl, bh}, bx}, ebx}, rbx}
{{{{cl, ch}, cx}, ecx}, rcx}
{{{{dl, dh}, dx}, edx}, rdx}
{{{{bpl}, bp}, ebp}, rbp}
{{{{sil}, si}, esi}, rsi}
{{{{dil}, di}, edi}, rdi}
{{{{spl}, sp}, esp}, rsp}

flags registers
segment registers?
bank of register displays with a rotary switch to select between MMX, XMM, YMM, ZMM
bank of switches to load a register


(See register diagram on wikipedia (https://en.wikipedia.org/wiki/X86#/media/File:Table_of_x86_Registers_svg.svg))

The idea is not that this would give you "run/halt" ability of your PC, but that while you were stepping through code in a debugger, you could examine and modify registers in the debug target while stopped. The panel would connect via USB, look like a COM port and there would have to be some sort of debugger extension to interact with the device through the COM port. It would be tedious to solder up, but not particularly difficult.

Thoughts?

Chuck(G)
March 20th, 2017, 10:08 PM
A keyboard and a monitor does the job quite well, don't you think?

Many classic computers lacked any sort of front panel. They did just fine.

glitch
March 21st, 2017, 05:05 AM
Never made one, no reason why you couldn't. Any number of microcontrollers would do the job. I would of course use a high pin count PIC :)

smbaker
March 21st, 2017, 10:34 AM
Having implemented a few monitoring boards for my Z80 computer, I find blinky LEDs aren't very practical and I get bored with them quickly. It's too much mental work for me to think in binary. I prefer hex displays. You can source some TIL311s on eBay, or use something like a serial vacuum fluorescent display to give a retro look. The VFD has the benefit that when you get bored with displaying CPU state on it, you could use it for other runtime information.

My current retro-PC case is designed to accommodate one of two acrylic front panels. One of them has eight IN-12 Nixie Tubes. The other has a footprint for a 4x40 VFD. The front panel will be interfaced to an 8255.

Chuck(G)
March 21st, 2017, 11:43 AM
What's wrong with a nice backlit LCD or OLED?

I"m having a lot of trouble with this--professionally, the last machine I worked with that had an honest to gosh gotta-use-it front panel was a S/360 Model 40. After that it was either an integrated CRT display or MCU or nothing--and that was more than 40 years ago.

For personal computing, I ditched my MITS 8800 for a blank front-panel Integrand box and PROM monitor and didn't miss the LEDs. Even if you look at the front panel of an Intel MDS 800, there's not much there--and that was Intel's professional development system.

Even debugging MCU code today for me usually involves a serial connection to a PC running terminal software. No blinky leds.

legalize
March 21st, 2017, 11:54 AM
Chuck, I think you're missing the point. It was proposed purely from a frob the knob (http://www.catb.org/jargon/html/F/frobnicate.html) perspective!

legalize
March 21st, 2017, 12:02 PM
Having implemented a few monitoring boards for my Z80 computer, I find blinky LEDs aren't very practical and I get bored with them quickly. It's too much mental work for me to think in binary. I prefer hex displays. You can source some TIL311s on eBay, or use something like a serial vacuum fluorescent display to give a retro look. The VFD has the benefit that when you get bored with displaying CPU state on it, you could use it for other runtime information.

Yeah, ok, single bit indicators get a little tedious with the >= 64 bit registers. I like hex displays. I like VFDs even more! I wouldn't want a flat screen, that's boring and not retro enough. If I'm going to do a flat screen, I might as well just use the existing monitor. I still like single LEDs for the bit flags in the PSW. A run/stop and single step toggle (gdb 'continue', gdb 'step') could also be nice. Perhaps even a VFD single line 40 character display showing disassembled current instruction near the stop/run/step switches.

So if there are hex displays for registers, that implies a hex keypad for setting the contents of the register as well.

For brains, you'd want a system-on-a-chip microcontroller with built-in USB and a sh'load of I/O pins. Still might need to do some muxing depending on pin count, but with hex digit displays it should be good enough. I imagine that there are daisy-chainable hex digit displays with I2C or some other low pin count serial interface, so they wouldn't gobble up too many pins.

legalize
March 21st, 2017, 12:24 PM
Here's a discontinued VFD 1x20 segmented character display (sans controller) for $2.80

http://www.newhavendisplay.com/d0116sy201601fb-p-730.html

smbaker
March 21st, 2017, 12:28 PM
I would suggest one of the Noritake modules. They're programmable via simple parallel or serial interface, just like a LCD module. Like this one: http://www.ebay.com/itm/Noritake-Itron-CU16025-UW6J-VFD-16-Character-x-2-Line-VFD-Display-Module-/201399115775

legalize
March 21st, 2017, 12:39 PM
Yeah, but notice that they are about 10x the cost :)

Chuck(G)
March 21st, 2017, 01:21 PM
Okay, I guess I get your point. How about a tiny monochrome CRT?

That VFD has characters that are less than 0.25" tall. Sort of what you might see on old credit-card terminals.

Maybe your best bet might be the 16-segment LED displays from AliExpress (https://www.aliexpress.com/item/Best-price-0-5-inch-digital-tube-RED-0-5-0-5in-Common-cathode-16-Segments/32628487832.html) $15 for 20 isn't such a a bad deal--and you can get them in green or red.

legalize
March 21st, 2017, 02:32 PM
Tiny CRT? Interesting idea, but feels like overkill and too close to the existing monitor.

Yeah, segmented LED displays for the digits of the registers. Rotary switch to change banked display for sets of extended register files. Individual LEDs for bits in the PSW. VFD for disassembled current instruction, run/stop switch, single step switch, hex keypad for data entry and register selection. Maybe I can mock something up in fritzing.

smbaker
March 21st, 2017, 05:07 PM
LEDs, VFDs, 7-segment (or 14 segment?) displays, rotary switches, hex keypad... I think you need to add a speech synthesizer too, to announce when the current program is breakpointed, stepped, or a significant fault occurs.

"Division by Zero Error.
CPU Halted"

Chuck(G)
March 21st, 2017, 05:31 PM
Reminds me a bit of the Nixie bar graph display (http://www.tubes-store.com/product_info.php?products_id=40) that I saw on a system under development at the Phoenix (used to be GE) Honeywell plant around 1973. The same console had all sorts of indicators on it, including 4 CRT displays. It was interesting to watch. This was a direct water-cooled computer--chilled water was circulated through the system with copper diaphragms serving as the interface between the water and electronics.

While you're at it, why not an analog meter displaying thousand operations per second?

KC9UDX
March 21st, 2017, 06:19 PM
I had ideas about building a console with a multitude of video camera viewfinder CRTs someday when they got cheap due to the switch to LCD/etc. , mind you not for a PC front panel. But the window of time when such CRTs and support circuitry were dirt cheap, I was in a spending freeze, and the window lasted much less than I expected. So it just wasn't meant to be.

legalize
March 21st, 2017, 11:06 PM
LEDs, VFDs, 7-segment (or 14 segment?) displays, rotary switches, hex keypad... I think you need to add a speech synthesizer too, to announce when the current program is breakpointed, stepped, or a significant fault occurs.

"Division by Zero Error.
CPU Halted"

You can probably wire that up through the debugger to the PC's audio device.

David_M
March 22nd, 2017, 04:31 AM
If you want to go the 7 segment LED route... 8 digits and only uses 3 IO ports on a microcontroller for a couple of bucks so you can afford to have one for every register. You can even choose red green or blue.

http://www.ebay.com.au/itm/8-Digit-LED-Display-MAX7219-7-Segment-Digital-Tube-For-Arduino-Raspberry-Pi-/262689975892?var=&hash=item3d298aee54:m:myGfc9Lo5iCOel-WT-gaYwQ

If you want more ports to drive single LEDs than the cheap microcontrollers offer just use i2c expander chips.

Chuck(G)
March 22nd, 2017, 07:25 AM
Hex numbers on a 7-segment display always looked pretty cheap to me. 14- or 16-segment displays will give you a much cleaner display.

legalize
March 22nd, 2017, 08:35 AM
If you want to go the 7 segment LED route... 8 digits and only uses 3 IO ports on a microcontroller for a couple of bucks so you can afford to have one for every register. You can even choose red green or blue.

http://www.ebay.com.au/itm/8-Digit-LED-Display-MAX7219-7-Segment-Digital-Tube-For-Arduino-Raspberry-Pi-/262689975892?var=&hash=item3d298aee54:m:myGfc9Lo5iCOel-WT-gaYwQ

If you want more ports to drive single LEDs than the cheap microcontrollers offer just use i2c expander chips.

That's a great idea. Unfortunately the MAX7219 doesn't display hex digits. However, the idea of using a controller IC with I2C (or similar) interface to the microcontroller for an entire register bank is a good one.

KC9UDX
March 22nd, 2017, 05:53 PM
While you're at it, why not an analog meter displaying thousand operations per second?

How about a Magic Eye?

KC9UDX
March 22nd, 2017, 05:57 PM
https://youtu.be/1AJ6B2_-nvo

bobba84
March 22nd, 2017, 06:07 PM
https://youtu.be/1AJ6B2_-nvo

I distinctly remember as a child my grandparents having a radio or phonograph or something with one of those on the front. I was always mesmerized by it! They also had one with a pair of very luminescent blue bars for volume.

legalize
March 22nd, 2017, 07:52 PM
Crappy 10 minute mockup not to scale.

http://user.xmission.com/~legalize/tmp/vintage/PC%20Blinky%20Panel.png

Chuck(G)
March 22nd, 2017, 10:40 PM
Yup, the 6E5 was the usual thing. The old WWII "Command Set" transmitters (BC458/459( used the 12V version as a tuning indicator.--a part of the back cover was hinged with a mirror so that the operator could see the tube below. I aslo recall a bit of RCA test equipment that used it.

Then there was the 6FG6 (http://www.radiomuseum.org/tubes/tube_6fg6.html) which was the "bar" indicator found on some FM receivers right into the 1960s--also used as volume indicators in tape recorders of the day.

There was also the 2-element 6AF7.

KC9UDX
March 23rd, 2017, 03:10 AM
6E5/6U5 was everywhere. I've had some test equipment with them, but cheaper stuff, not RCA, maybe Eico or something.

Lest we not forget the Gooneybird! :)

I do need to take a video of the 6AF7 I have. It's not as interesting to watch though.

After much thought, a bog standard D'Arsonval panel meter would probably look much better for a modern computer than a Magic Eye Tube.

David_M
March 23rd, 2017, 05:21 AM
It depends on the decode mode you set, they can be set to no decode, in that mode d0-d7 are mapped directly to the segments and the decimal point.

Table 6 shows the mapping for no decode mode.
https://www.sparkfun.com/datasheets/Components/General/COM-09622-MAX7219-MAX7221.pdf


That's a great idea. Unfortunately the MAX7219 doesn't display hex digits. However, the idea of using a controller IC with I2C (or similar) interface to the microcontroller for an entire register bank is a good one.

Chuck(G)
March 23rd, 2017, 08:59 AM
After much thought, a bog standard D'Arsonval panel meter would probably look much better for a modern computer than a Magic Eye Tube.

Back in the day, meters were expensive. Magic-eye tubes were cheap--and pretty rugged. Somewhere, I've got plans for a magic-eye VTVM--it uses the 6E5 as the null indicator in a bridge. Not exactly direct-read, but good enough for hobbyists.

legalize
March 23rd, 2017, 11:08 AM
It depends on the decode mode you set, they can be set to no decode, in that mode d0-d7 are mapped directly to the segments and the decimal point.

Table 6 shows the mapping for no decode mode.
https://www.sparkfun.com/datasheets/Components/General/COM-09622-MAX7219-MAX7221.pdf

Ah, I see. I skimmed the datasheet and only saw the table at first. What I don't like about these Chinese modules from ebay is that there's no data sheet in the listing, so it's hard to tell exactly what you're getting and how much control you have over the output.

Chuck(G)
March 23rd, 2017, 11:21 AM
It's quiet possible to drive a segmented display with a single line.

David_M
March 23rd, 2017, 09:56 PM
I've bought a lot of generic modules off ebay that are meant for arduino or pic use, its never a problem find libraries that support them.
These 7 segment modules are easier than most, being spi an interface you don't have to worry about its address like the i2c modules.


Ah, I see. I skimmed the datasheet and only saw the table at first. What I don't like about these Chinese modules from ebay is that there's no data sheet in the listing, so it's hard to tell exactly what you're getting and how much control you have over the output.

legalize
March 24th, 2017, 11:42 AM
Crappy 10 minute mockup not to scale.

http://user.xmission.com/~legalize/tmp/vintage/PC%20Blinky%20Panel.png

OK, this would be kinda crazy... using a digit display like this (https://www.digikey.com/product-detail/en/broadcom-limited/HDSP-C3E3/516-3177-5-ND/2347373) would result in a cost of $150 just for the LED displays and that's not even displaying all the register data. The problem is that modern x86 has a sh'load of registers, particularly when you include all the SIMD extension registers. It's about $100 for the main bank of 10 registers shown on the top of this mockup. That doesn't include any of the other items like the microcontroller, the circuit board, keypad, LED display drivers, enclosure, etc. While I still like this project as the ultimate blinky light project and I may build one, I suspect the parts cost alone is going to turn off most people.

So, what would a minimal panel look like? The minimal is: display the value in a single 64-bit register, have some indication of which register is displayed, halt/run switch, single step switch and keypad to select the register for display and enter data. That reduces the parts cost for the LED register displays to $15, assuming single digit LED modules. You can probably squish the price a little lower by using the cheapest 4 digit LED modules.

Oh, and the 4-digit modules from ebay on this thread are probably not what you want to use for this project because they are integrated with a circuit board and LED driver. While the driver chip is nice, the circuit board just complicates things. You're going to need your own board anyway, so you're better off mounting the LED module and driver chips on your own board, along with your microcontroller and whatever else you need. I'm going to order some parts and play around a bit.

Trixter
March 24th, 2017, 01:36 PM
So, the Periscope ICE line could do some of this; a physical hardware button coupled with some software that would let you stop any program (by stopping the timer!), single-step, examine registers on a secondary screen (like an MDA card and monitor), etc. Until the 80386, a hardware ICE was the only foolproof way to do this. I've always wanted one but have never been able to find one, except for the docs+software.

A 386+ can start programs in V86 mode and have full observability; you could write software that does this and then displays everything on a "panel" that showed up on an MDA card in the same machine. That's likely cheaper and easier than building a new display to frob, yes?

legalize
March 24th, 2017, 01:48 PM
A VGA display takes away the blinky light fun. I can already do what you're suggesting by simply opening the registers view in Visual Studio and sticking that on a monitor. (Maybe gdb has something equivalent, but since it's 1990s technology, it's probably a PITA to use.)

David_M
March 24th, 2017, 01:55 PM
I have an ISA bus "Trapper" card made by Pure Art. It worked in conjunction with Turbo Debugger to provide hardware breakpoints in systems with an ISA bus. It could work with the remote debugging capability of TD as well as in the dual display manner you describe or with a single monitor. From memory it cost me an arm and a leg to get one here in Australia but it was the cheapest of its kind available.


So, the Periscope ICE line could do some of this; a physical hardware button coupled with some software that would let you stop any program (by stopping the timer!), single-step, examine registers on a secondary screen (like an MDA card and monitor), etc. Until the 80386, a hardware ICE was the only foolproof way to do this. I've always wanted one but have never been able to find one, except for the docs+software.

A 386+ can start programs in V86 mode and have full observability; you could write software that does this and then displays everything on a "panel" that showed up on an MDA card in the same machine. That's likely cheaper and easier than building a new display to frob, yes?

Chuck(G)
March 24th, 2017, 03:11 PM
Admit it; when you see this, you get all sweaty:

https://matt.files.wordpress.com/2013/03/photo7.jpg

Trixter
March 24th, 2017, 06:37 PM
I have an ISA bus "Trapper" card made by Pure Art. It worked in conjunction with Turbo Debugger to provide hardware breakpoints in systems with an ISA bus. It could work with the remote debugging capability of TD as well as in the dual display manner you describe or with a single monitor. From memory it cost me an arm and a leg to get one here in Australia but it was the cheapest of its kind available.

Did some research; it was actually by "PURART" and worked by monitoring various memory and port accesses. Very neat.

legalize
March 27th, 2017, 09:24 AM
Admit it; when you see this, you get all sweaty [monstrous IBM 360 panel]

Now you've got the idea.

legalize
March 27th, 2017, 09:30 AM
The only ones more impressive are the maintenance and operation panels on the SAGE:

http://www.computerhistory.org/atchm//wp-content/uploads/2012/11/sage.maintenance.console.jpg
https://www.smecc.org/Simplex.jpghttp://www.starringthecomputer.com/snapshots/planet_of_the_apes_s1e5_sage_2.jpghttp://3.bp.blogspot.com/-zKiUIAAXCE0/URLw04SKBsI/AAAAAAAAGiE/BEftSX2LkV4/s1600/invasion-of-the-bee-girls-06.jpg

You gotta love that the whole complex is so huge that most stations include a telephone to talk to people at other parts of the computer.

Chuck(G)
March 27th, 2017, 09:46 AM
If you want to scale the project back a bit, why not go for a 16-bit or 32-bit system? That 64 bit-edness is going to cost you. An 8088, on the other hand, has comparatively few registers and an 8-bit data bus.

legalize
March 31st, 2017, 10:43 AM
If you want to scale the project back a bit, why not go for a 16-bit or 32-bit system? That 64 bit-edness is going to cost you. An 8088, on the other hand, has comparatively few registers and an 8-bit data bus.

Because I want it to be useful/used with a modern PC.

Chuck(G)
March 31st, 2017, 11:03 AM
Because I want it to be useful/used with a modern PC.

I think we're going in circles. Any blinky-light panel on a modern PC is going to be of very marginal use. Consider that "modern" PCs are multi-core, multi-threaded affairs. While the Christmas-tree effect may be entertaining, I don't see how a bunch of blinking lights will ever be more useful that a display and keyboard. Can you?

legalize
March 31st, 2017, 11:44 AM
Stop sucking the joy out of my project :)

Chuck(G)
March 31st, 2017, 12:35 PM
Oh, I'm not sucking the joy out of your project--just pointing out that this being a vintage computer forum and all, that a vintage computer might be a better (and cheaper) choice to hook this Christmas tree to. I want to see you succeed at this, but we all have to be pragmatic.

smbaker
March 31st, 2017, 02:45 PM
While the Christmas-tree effect may be entertaining, I don't see how a bunch of blinking lights will ever be more useful that a display and keyboard. Can you?

In my experience, even with something suitably vintage like an 8 Mhz Z80, unless you're single stepping, my attempts degenerate to a bunch of LEDs that to the human eye are lit all the time.

One thing I've considered implementing is something that watched a bus and computed io-read, io-write, mem-read, and mem-write per second and displayed it in a graphical manner (either nixie bar graphs, or analog panel meters, etc). Alternatively, I've thought of taking the lower 10 bits of an address bus and using it to drive a 32x32 matrix display. Either of these would produce a visual effect that would differ based on the program that was running and/or what it was doing.

MikeS
March 31st, 2017, 03:50 PM
...
Alternatively, I've thought of taking the lower 10 bits of an address bus and using it to drive a 32x32 matrix display. Either of these would produce a visual effect that would differ based on the program that was running and/or what it was doing.
I know of at least three versions of this kind of display, albeit for the Commodore C64; unfortunately I can't find anything on the web at the moment.

Interesting to watch though and even useful, especially with 8-bitters and memory-mapped I/O, letting you see where the program is spending its time and (with multi-colour LEDs) what it's doing there.

m

Chuck(G)
March 31st, 2017, 04:08 PM
...or you could get a cheap AM radio and bring it close the motherboard and listen for behavior. ..

MikeS
March 31st, 2017, 05:06 PM
...or you could get a cheap AM radio and bring it close the motherboard and listen for behavior. ..

I get enough of that as is, but must say that I haven't found it very helpful as a diagnostic tool. With computers and accessories, noisy CFL and LED lamps and motors etc. I find AM radio too irritating to listen to much of the time. Even in the car, which is where AM seems to be most popular, there are power lines and, here in Toronto, the streetcar overhead wires; one of the local AM stations has even set up a simulcasting FM station (which has its own issues ;-) ).

I've asked some of the folks with those memory matrix displays if there's any video available anywhere; definitely neat to watch.

m

gslick
March 31st, 2017, 05:30 PM
Oh, I'm not sucking the joy out of your project

Yes you are. Killjoy Chuck. Let him build a modern day Connection Machine if that is what he wants to do, regardless of whether or not it has any practical value.

https://upload.wikimedia.org/wikipedia/commons/6/61/Frostburg.jpg

krebizfan
March 31st, 2017, 05:38 PM
The Bebox style light bars that show load on each core might not be completely useless. I see a number of software displays that do the same thing but that takes a lot of screen real estate.

Chuck(G)
March 31st, 2017, 08:24 PM
Yes you are. Killjoy Chuck. Let him build a modern day Connection Machine if that is what he wants to do, regardless of whether or not it has any practical value.

Yeah, I'm too old to be in the "ooh, look at the pretty lights" camp, I guess. Computers are for doing something useful. :)

g4ugm
April 1st, 2017, 12:43 AM
Admit it; when you see this, you get all sweaty [monstrous IBM 360 panel]

Except that the 360 panel doesn't usually show the registers, its more about debugging the internal workings of the CPU and Microcode. Some of these panels are described in the CPU manuals on Bitsavers. all the operator ever did on them was set the IPL address and hit "Load", or occasionally "Restart" which usually resulted in a dump on the printer...

Chuck(G)
April 1st, 2017, 08:44 AM
...but that was my point. It's the "Christmas tree effect" and not the actual utility that has people excited. Once you got the machine IPLed and running, there really wasn't any useful program information that could be garnered. Even on the older machines, the lights didn't really help unless you stopped the CPU and ran it in single-step mode--and even then, figuring out what was gong on was quite laborious. They were quite valuable to the CEs, though.

http://www.swansea.ac.uk/library/archive-and-research-collections/hocc/computersandsoftware/earlycomputers/ibm1620/ibm1620-front-panel-cropped-2-540x238-q100.jpg

MikeS
April 1st, 2017, 10:30 AM
Unfortunately I can't find a picture of the Burroughs B260 console but it was handy in that each light was also a pushbutton that let you single-step and modify the various registers and memory locations displayed; did systems like the 1620 allow the same thing or were they strictly displays?

I scrapped a couple of Burroughs panels just for those buttons; really handy for some other things.

m

Chuck(G)
April 1st, 2017, 12:56 PM
The 1620 had a row of buttons with functions like "single step", "halt", etc. The 1620 Simulator (http://jowsey.com/java/sim1620/) has nice detail on the panel. Prety much, the left side of the panel had cryptic lamps (this was long before LEDs) that were mostly of use to the CEs. The right side allowed you to view various internal registers and see condition code flags, but even that wasn't complete. Note that the right-side blue panel displays 5 digits of address, as C8421, but, for some odd reason, includes the parity check bit (C) but not the flag bit (F). If you had the indirect addressing feature, that could matter a bunch. One drawback was that you couldn't directly inspect memory using the panel or change the contents of registers or memory. You could enter instructions and data through the typewriter--and that was perhaps the most useful for debugging.

legalize
April 5th, 2017, 11:19 AM
Update: Got a development board (https://www.digikey.com/product-detail/en/silicon-labs/SLSTK2000A/336-3156-ND/5115713) for another project that might be applicable to this one as well. Also ordered a single digit LED (https://www.digikey.com/product-detail/en/broadcom-limited/HDSP-C3E3/516-3177-5-ND/2347373) and a four-digit LED module (https://www.digikey.com/product-detail/en/lite-on-inc/LTC-5723HR/160-1879-ND/3198988) to play with. The controller is basically 8051 with a built-in USB interface and some I/O pins.

legalize
April 5th, 2017, 11:22 AM
In my experience, even with something suitably vintage like an 8 Mhz Z80, unless you're single stepping, my attempts degenerate to a bunch of LEDs that to the human eye are lit all the time.

That's why this project is intended to be a peripheral to the debugger like gdb or Visual Studio.