The Best Op-Amp in the World

Uncategorized No Comments

Ever wonder what the best op-amp in the world is? Wonder no more, it is the IC01 Ideal Operational Amplifier! Good luck buying one — they seem to be having some lead time issues.


Projects No Comments

Here’s another cloned card for your retro PC: may I present the MPU-IMC clone! (The what?)

It’s a clone of an old card that Roland made for interfacing PS/2 computers (MCA bus) with MIDI equipment like musical keyboards.

Files may be found at GitHub.

Don’t get too excited though because it’s not complete. Well, the board layout and schematic are fine, but there are two chips on the board that are special.

  • The HD6801VD855P (Roland part number 15179222) is a mask-ROM microcontroller that runs the entire card. I’m not aware of anyone who’s dumped the ROM, but maybe now there is an incentive to do so. 😉
  • The HG62E08R10FS (Roland part number 15239133) is a gate array device. Think of a CPLD but these were “programmed” by customizing the top layer of metal during the IC fabrication process. Roland calls it the “Handshake controller” but nothing is known about the internal logic. If someone sacrifices a card and decaps this chip, a simple image of the top metal should be enough to deduce the functionality. There are rumors this chip is used on other Roland cards, but I am hesitate to say they are identical. I suspect Roland had various versions of this chip with different logic depending on the card and the computer’s bus. More work needs to be done.

Anyway, I hope this is useful to someone out there!

IBM 5161 Expansion Chassis Extender and Receiver Cards

Projects 2 Comments

Today is an exciting day for people who collect vintage IBM PCs and XTs! IBM had a somewhat obscure add-on product called the 5161 expansion chassis, which looked exactly like an IBM PC but with a difference case badge. It allowed customers to add two additional full-height drives (typically 10MB MFM hard drives) and 7 usable expansion slots (excluding the one used for the MFM disk controller). And yes, with those full-height hard drives, it sounded like a jet engine.

Connecting the expansion chassis to the host PC were two expansion cards. One, the extender, was placed in the host PC. The other, the receiver, went into the expansion chassis. A 62-pin D-sub connector tethered the two together.

One small problem: with the few remaining 5161 units, the extender card was typically separated and lost. Often the connecting cable was as well. If you got lucky, you might find a PC with the extender card still in it. Regardless, people often own more expansion chassis than extender cards, making them useless. Until now.

Based on careful study of high resolution photos of the cards and the schematics published in the IBM technical reference manuals, I’ve been able to design duplicates of both the extender and receiver cards. Details are in my GitHub repository.

Even if you don’t own an IBM 5161 (and I don’t blame you, it’s a bit obscure!), you might still find the cards useful. The receiver card works fine in common passive ISA backplanes! One small caveat: The backplane in the 5161 provides the 14.318MHz OSC signal which many ISA cards need. Passive backplanes do not provides this signal. You can check edge contact B30 on the back of the card edge. If there’s a missing contact or a contact that doesn’t connect to a trace, the card should work.

This card also needs some initialization to function. The BIOS in the PC/XT take care of this automatically, but this may not be true for all BIOSes. I’ve only tested it in my IBM PC. Even so, it may be possible to get it working by poking at the card’s I/O ports.


A Vacuum Tube ROM?

Uncategorized 4 Comments

Is such a thing possible?

Turns out it is, and it’s called a Monoscope. I recently got a Raytheon CK1414 Monoscope with a good getter and a working filament–naturally, I decided to fire it up.

The Monoscope is essentially a CRT; it has an electron gun and deflection plates which create a thin electron beam and points it towards the screen. Unlike a CRT, there is no phosphorescent coating on the end of the glass envelope. Instead, there is a metal plate that has an alphanumeric character set printed on it (an 8×8 array for 64 possible characters). There is also a conductive band around the glass called the collector which has a slight positive charge compared to the target. When the electron beam hits the target, secondary electrons “splash” off and are attracted to the collector. Fewer secondary electrons come off when the beam passes over part of the printed character. There is a wire coming out of the front of the tube that is attached to the target, and by measuring the current in this wire while you scan the electron beam across the target, you can pick up an analog video signal corresponding to the printed characters.

My early experimental setup suffered from a few problems (how do you focus the electron beam when you can’t see a spot on a phosphor screen?) but eventually I got this fuzzy image on my Tek 465M in XY mode:

You can see the round shape of the target along with some marks in the edges. The darker bit in the middle are characters, but things are just too fuzzy to see them. Part of the reason was that the video amplifier I used had a gain-bandwidth product of only 4.5MHz. In a non-inverting amplifier circuit with a gain of 100, the bandwidth was only about 45KHz! This just was not enough. There was also some distortion in the deflection amplifiers.

After adding another gain stage to the video amplifier and rearranging the circuit so that I could drive the deflection plates directly with some function generators, I saw this on my oscilloscope screen!

After a little research, I found out that the tube was used in some very early computer terminals including Raytheon’s DIDS-400 (c. 1967). To generate the display, the Monoscope was connected to a standard CRT. There were two sets of deflection circuits: one picked the character from the Monoscope while the other selected the location on the CRT. A pair of sine waves (really!) was fed to both sets of vertical and horizontal deflection plates, producing a raster scan which copied the character from one tube to another.

This worked quite well in the days before character generator ROMs. The tube acts essentially as an analog ROM.

Other companies combined both the Monoscope and the CRT into a single monster tube that had deflection plates, a mask with the character set, and a set of electromagnets that could rotate and position the character on the phosphor screen! Such a tube was called a Charactron(Convair) or Typotron(Hughes). A version of this tube was used in the computer terminals of the SAGE computer used in the US early warning radar system.

I decided to switch back to the higher-voltage deflection amplifiers to see if I could look at the entire character set at once. With the improved circuit, I got a better image:

It took a bit of tweaking to get the image. You can see alignment marks and other features on the metal target disk.

My setup looks like this:

In the middle there are three potentiometers which control brightness (really beam current), focus, and astigmatism.

As I was shutting off the high voltage supply, the image shrank on my oscilloscope screen since the deflection factor decreased, and I saw something interesting:

The target is in the middle, but there are odd shadows on the top, bottom, and sides. These are actually the deflection plates! The left and right plates are nearer to the electron gun so they block the view of the top and bottom plates which are closer to the target. When I saw this, I realized that this tube is essentially a miniature scanning electron microscope–only there’s just a single, permanent sample since the tube is sealed.

If you have one of these tubes and you want to experiment, the circuit I used looks like this (click for larger version):

You will need a 1000V power supply such as one designed for operating a photomultiplier tube. Needless to say, high voltages can kill you and should be treated with respect; please take proper precautions when experimenting with this stuff. Ground the metal cases of the potentiometers or use insulated knobs so you don’t shock yourself.

Connect the oscilloscope channels 1 and 2 (in XY mode) to the deflection plate inputs. Connect the oscilloscope’s Z-axis input to the video output from the amplifiers. I’ve only shown one stage, but you’ll need more gain to get a good signal. The function generators should be generating rising ramp sawtooth waveforms, but even sine waves will work. If you can synchronize the two, then you’ll get a more stable picture.

The vacuum tube’s filament needs 6.3VAC, so I’ve provided that with a transformer. Please check the transformer’s datasheet to make sure it can withstand the 1000V between the primary and secondary. Often this is called out as the maximum isolation voltage.

Well, there you have it–when ROM chips didn’t exist, people stored data in miniaturized scanning electron microscopes!

Simple Commodore PET Tape Interface

Projects No Comments

Before I put together a long term solution, I wanted a quick way to transfer software from my PC to my Commodore PET. There are other circuits, but I wanted something that used just one part.

The PET input is TTL level, so I needed something to go from audio level to TTL. Ideally a comparator circuit with plenty of gain. Well, I couldn’t find a decent comparator in my junk box, but I did find a CA3140 op-amp. This is way faster than I needed, but should work OK as a comparator. If you build this circuit, try to find a comparator or an op-amp with a rail-to-rail output.

Here is the circuit:

And here’s what it looks like:

It works quite well. The circuit is not very sensitive to the output audio level from the PC–I set mine halfway (line level) and it was fine.

New MOnSter6502 updates, with video!

Uncategorized 6 Comments

It’s been a while since we’ve had an update to the MOnSter6502 project–we’ve been very busy getting the second revision ready. At the same time, I’ve been designing a simple yet powerful 6502-based computer that can operate at the slow clock speeds required by the MOnSter6502.

But before I go into detail about that, take a look at this video update. It’s one thing to see photos of the MOnSter6502, but the video really brings out just how awesome this thing is in person! (Shameless plug for Maker Faire Bay Area 2017 where you should come visit us.)

The MOnSter6502 runs up to about 60KHz clock, which is quite a bit slower than the original. The computer I’ve designed for it uses another microcontroller to simulate hardware peripherals, inspired by capabilities of various ’80s computers and gaming consoles. The idea is to offload CPU-intensive video and sound tasks to the microcontroller, freeing up the 6502 so that it can be used in real time despite the slow clock.

Right now, I’ve implemented several software-defined peripherals

  • VGA video output with 256 color graphics, tiles, and sprites
  • Multichannel stereo sound synthesizer
  • PS/2 keyboard interface
  • KIM-1 style front-panel debugging keypad and LED display
  • USB-CDC interface with a 6502-accessible UART for communications with a host PC

The computer can also run a full validation suite on the connected 6502, which has been quite useful troubleshooting the highly complex MOnSter6502 boards.

The computer is still a prototype, but you can see some shots of it in the video above.

You can find more updates and information at the project site.

Maker Faire 2017

Uncategorized 2 Comments

The MOnSter6502 will be at the Bay Area Maker Faire this year! If you’re around, come by and say hi.

A Reproduction AdLib Sound Card

Projects 16 Comments

Edit: Someone who goes by W9EO has recorded assembly videos on YouTube which you may find helpful for building this card. He is also selling completed cards if you don’t want to solder it yourself.

Growing up, I used to play some games on an AST 286 computer, including Commander Keen, Wing Commander, and a few others.

Sound in those days was primitive compared to modern machines, but I still have a soft spot for the bleeps and bloops of the OPL2 synthesizer cards (which includes the AdLib).

Recently I have been fixing up an IBM XT (with original CGA card!) and I needed a sound card. It turns out that early sound cards like the AdLib or the Sound Blaster are quite expensive on the used market, so I thought I’d make a clone of the AdLib sound card (1990 version). Being me, I couldn’t just make an electrical equivalent. It had to look as close as possible to the real thing.

Here it is.

Compare it with the original 1990 version of the AdLib sound card.

I started with Sergey’s OPL2 card and corrected some differences between it and the genuine AdLib card. Since I don’t own a physical card, I found photos on the net of the front and back of the card to use as a reference. To make sure everything matched up exactly, I figured out the design grid of the original and duplicated the traces and component placement as closely as possible. All the library footprints are custom designed to match!

The KiCad design files are available on GitHub. Mouser part numbers are embedded in the KiCad design but they are also included in the table below. The Yamaha OPL2 chipset, the YM3812 and YM3014B pair, can be found at various sources online. They were socketed on many older Sound Blaster cards, so I suspect quite a few were recovered by the scrappers.

Q Designator Description Mouser Part
1 J1 CONN_01X05 490-SJ1-3553NG
1 U6 YM3812
11 C4,C5,C24,C2,C25,C20,C19,C26,C1,C14,C16 0.1uF 581-AR215C104K4R
1 D1 D 512-1N4148
1 Q1 2N3904 512-2N3904BU
2 R1,R13 8.2K 291-8.2K-RC
6 R2,R3,R6,R7,R11,R12 2.2K 291-2.2K-RC
1 R4 12K 291-12K-RC
4 R5,R9,R10,R16 10K 291-10K-RC
1 R8 1.5K 291-1.5K-RC
1 R14 POT 652-91A1A-B24-D15L
3 R15,R18,R19 10 291-10-RC
1 U1 74LS109 595-SN74LS109AN
2 U2,U3 74LS138 595-SN74LS138N
1 U4 74LS245 595-SN74LS245N
1 U5 74LS04 595-SN74LS04N
1 U7 YM3014B
1 U8 RC4136 595-RC4136N
1 U9 LM386N 926-LM386N-4/NOPB
1 C18 220uF 647-TVX1C221MAD
4 C7,C6,C9,C8 4700pF 581-AR211C472K4R
1 C12 1000pF 581-AR211C102K4R
1 C17 0.047uF 581-AR215C473K4R
1 C13 270pF 594-S271K43SL0N6TK5R
6 C23,C21,C22,C11,C3,C15 10uF 581-TAP106M025CRW
1 C10 4.7uF 581-TAP475K016SCS
1 MNT1 CONN_01X01 534-9202

To install the card in a computer, you’ll need to get a Keystone 9202 bracket. The KiCad layout includes a drawing showing where the holes need to be punched in the bracket. I recommend using a hand-held sheet metal punch with a 7mm or 9/32 die. You could also drill it but the punch makes a much cleaner hole.

Here’s a bonus photo showing all the parts laid out before soldering. The components were chosen to match the colors on the original card.


A MOnSter Mystery, Solved

MOnSter 6502 5 Comments

I brought up an additional MOnSter6502 board today. At first it failed my basic validation routines, tripping up on the LDA nn,Y instruction ($B9).

The bus diagnostic output showed that LDA nn,Y was trying to read nn+Y+1 instead of nn+Y (in my test, it accessed $0211 instead of $0210). The LEDs showed that the Y register contained the expected value, so I thought the ALU carry in signal may have been loading a ‘1’ instead of a ‘0’, thus causing the incremented value. I scoped it out and it was fine.

Then I noticed that LDA nn,X worked fine which is totally weird because those instructions are just about identical! So I physically inspected the Y register and saw this tomfoolery:
Those transistors are in bit zero of the Y register. The one on the left prevents anything but a ‘1’ from being in the LSB. The one on the right was supposed to drive the LED on so that I could tell the bit was stuck, but it decided to cover for its dead buddy. I don’t even know how this happened. It could have been shipping damage, or maybe I fat fingered a screwdriver.

After fixing it, the board worked fine. Two dead transistors and a lying LED. Gotta love transistor level debugging.

Bernoulli Box Fun

Restoration No Comments

I’ve got an old Bernoulli Box (Model A210H). In the early ’80s, it was a popular way to store 10 megabytes of data in a removable cartridge format. This was also a very common IBM PC hard drive capacity back in those days, so it was great for backups. The cartridge is quite large, and comes in a protective cardboard box:


It’s been 20 years since I last turned it on. After plugging it in and flipping the switch, I smelled smoke so I quickly shut it off. I opened it up (6 screws) and removed a drive (4 screws) and pulled the controller card off of it (4 more screws). Then I noticed a blown tantalum capacitor, so I replaced it. Then I put it all back together again and powered it up with a bench supply (tantalum capacitors nearly always fail in a short circuit which makes things a little too exciting, so at least a bench supply lets me limit the current). More smoke, and another blown tantalum capacitor. I fixed it and put it back together, and powered it up with the regular power supply.

Closing the drive door made the motor spin up very sluggishly, so I checked and noticed the supply voltages were low. So I took apart the power supply and noticed a voltage adjustment potentiometer, so I set it back to the correct voltages and put everything back together. Now the motors seemed to run OK.


I tried putting in a disk and closing the door, but the drive made horrible noises. The LED on the drive blinked and the drive spun down, essentially rejecting the disk. I figured out how to open the protective window on the disk cartridge, and noticed that there were bits of sticky crap on the disk, mostly near the hub in the center. Taking apart the drive, I noticed a rubber ring that is supposed to push down on the disk in order to create some friction to spin it up. The rubber had decomposed into sticky stuff that was getting everywhere.

Bernoulli drives work on the Bernoulli principle. The disk itself is basically a floppy disk and is made from thin flexible plastic. There is a metal plate (the Bernoulli plate) that the disk spins up against. As it spins, the air in between the disk and the plate also spins and flies out due to centrifugal force. This creates a vacuum that pulls the disk very close to the plate, stiffening it so much that it acts like a hard disk platter. The drive head floats on an air cushion above the disk surface just like in a hard drive.

Unlike in a hard drive, if any dust particles get pulled into the gap, then the disk drops away from the head and nothing is damaged. The metal plate and the head both need to be very, very clean for the drive to work correctly. They are actually mounted upside down so that dust will fall away and not settle. A large fan on the back of the drive (with an attached air filter) provides positive air pressure in the case to help keep dust out. Before it enters the gap between the plate and the disk, the air is filtered a second time by a very small filter located behind the drive head.

In my drive, the head was filthy, the Bernoulli plate had some dust on it, and had a little oxidation on the back. I removed the oxidation with a file, with the idea that any patches of oxidation could produce problematic dust particles. I cleaned the working surface of the plate and the drive head with special no-lint wipes and 91% isopropyl alcohol. It’s very important not to disturb or distort the working surface, otherwise the disks will not spin right and could be damaged.

I also fabricated a replacement rubber ring and glued it onto the top of the drive spindle. In the photo below you can see the spindle with the new rubber ring. The drive head is the white thing running in the slot on the upper left. The cartridge enters from the right, and you can see some angular protrusions on the plate that open the cartridge and slide back the protective cover.


Fortunately I still had the controller card and the cable, but I had no driver software. I managed to find the DOS driver on some random website, and it actually matched up and worked! I tried it with a different disk and I was able to read back data. A few data errors occurred, but they were mostly soft errors that a couple of retries could fix. I was also able to clean up the original disk using more wipes and isopropyl alcohol. It worked fine although it had some bad sectors.

« Previous Entries