MegaMax Programmer

BK Precision Model 846 - MegaMax-OEMed

The EETools MegaMax universal device/chip programmer goes by a few other names from other OEMs.

Mine's actually a BK/B&K Precision Model 846. There's also the MOD-UP from Modular Circuit Technology(?).

(Note that we're talking about the MOD-UP, not the MOD-UP-CMII, MOD-UP-80, etc. which are different devices based on USB!!!)

Regardless of the branding/model-number, the programmer has the same housing, etc. and comes in two forms: MegaMax (for programming a single chip at a time) and MegaMax-4G (for programming up to four devices at a time). The 4-gang model MegaMax-4G is also known as the BK Precision Model 847, and allegedly MOD-LP. (Interestingly, my BK-846 has the holes on the PCB for the other sockets, and is clearly marked EETools... so the 1-gang and 4-gang models may be otherwise-identical. They do use the same software).

Software/Documentation

EE Tools has declared the MegaMax "End-of-life," But, as of 12/15/2016, still makes its software and manuals available.

(Maybe Archive.org will be helpful, if they change this in the future?)

The manual (1996) is available from EETools' Manuals And Documents page.

Brent has done a lot of work to reformat the scanned manual so it's much easier to read.

You rock, Brent!

(TODO: BK846's paper manual has a few extra pages which could be handy. Scan 'em!)

The latest software, version 2.5x, from 12/12/2000(?) is still available from EETools' Software Downloads page.

(Hah, what's this other downloads page with different dates?)

YES: My BK Precision Model 846 works with the latest software from EETools, despite having come with its own software relabelled "BK8467." I imagine the same is true for the MOD-UP/LP. So, be sure to try out the latest version, and gain support for additional chips, etc.

If for some odd-reason you find you'd rather use the latest BK8467.exe (v2.5e), here you go.

Here's some info from an old Jameco catalog:

Versatile, Production Quality Universal Programmer

Parallel Port Interface

    • 5000+ device types supported

    • Supports EPROM, Flash, microcontroller, Serial (E)EPROM, EPLD, PALCE, GAL, PEEL

    • Auto search device select function

    • Fast programming speed with IC vendor approved algorithms

    • Built-in editor for both buffer date and test vectors

    • Supports JEDEC, Intel Hex, Motorola S Records, Binary and ASCII file formats with File LOAD/SAVE command

    • Built-in macro commands for programming

Includes: 01/02/03 personality modules, parallel cable, wall adapter, disk & manual

System requirements: IBM PC, XT, AT, 386, 486, Pentium, hard disk, 512k RAM, standard parallel port, MS-DOS 2.11 or higher

Device Support:

Jameco seems to be the only source I can find for the "MegaMax(-4G) Device List" (V2.4v)

That's a *really* handy chart of all the devices supported, as of version 2.4v of the software. I imagine more devices were added as-of the latest version (2.5x)...

We're talking everything from PROMs, EPROMs, EEPROMs, FLASH, to PALs, GALs, PEELs, CPLDs, I think there's even some FPGAs in there. Microcontroller-wise, we've got 8051-series, AVRs, PICs, 68HC11, 68705, etc...

BUT...

All that support requires...

Family Modules:

(And this is why this page/endeavor started)

Without the right "family module" aka "personality module" aka "SIM" aka "card", to route the signals, power, and programming-voltages to the right pins, you're outta luck. (I suppose a someone more clever than I could work something out?)

Personally, I find the 01-A/B module to be the most-versatile. It works for lots of standard-memories, as well as some microcontrollers.

And, of course, it was the first one I lost.

If you're patient and clever with your search-terms, you might find distributors whose sites claim to sell them. I found one distributor which claimed to have darn-near the entire selection, including the weird ones that support only a handful of special-purpose devices. I contacted a couple of these reputable-looking distributors, and was met with nada. And in the higher pages of search-results, most just started looking like robot-results. (Hey! Distributors! If you've got these things stocked up in your warehouses, Lemme Know, I'll throw up a link here!). But, being met with nada isn't particularly surprising, considering the last software-update was 16 years ago and the product's been EOLed.

(TODO: Link the site where I found all those?)

The interesting thing was, I think I found the most information about these "family modules" when looking for the BK Precision part-numbers, rather than the eeTools numbers. Maybe it was dumb-luck. So, if you're looking for info/parts, knowing its other brandings may help. See below, regarding "elcodis".

Now here's the deal... I'm definitely not trying to short any distributors of sales, here... but it seems (and please correct me if I'm wrong) we're at the point where just keeping these machines running at all is going to require sharing some "inside" information... (And, if you saw the price of this programmer from nearly 20 years ago, and consider inflation, you know these things were a hefty-investment for some, justifiably wanting to keep them running as long as possible).

So, without further ado:

Here we have modules 02A, 02B, 03A, 03B, 11A, and 11B. Sorry for the poor quality scans.

If it weren't for an awesome stroke of luck, or coincidence, or something, leading me to a really helpful fellow going by "Brent," my BK846 might well've become darn-near useless to me without that 01-A/B card... the card that covers the broadest range of parts from PROMs, to FLASH, to microcontrollers, and more.

Brent actually had his modules scanned and ready to be emailed to a desperate me. (!)

Note that there are some differences between our Modules 11A/B and 03A/B.

If you look at the Device-list, you'll note that programming the PIC12C508 and PIC12C509 require Module "11A-1." As I understand, 11A-1 is a user-modified 11A, and documentation used to exist for how to do that conversion.

(TODO find!)

Brent generously looked through his old emails to try to locate details he used for the modification, but was unable to find the instructions. He says the modification "I'm pretty sure relates to PIC programming, and was apparently as simple as one cut and one link."

Thankfully, the photos and device-listing should be enough to get you going.

Here's another image of a modified 11A-1 module, allegedly once available for purchase through "electronic components distributor" elcodis.com showing part of [one side of] the modification:

(Original here)

(FYI: elcodis.com lists module part-numbers as "MODULE <number>-<n>-8467" where <number> is e.g. 05 and <n> is 0 for module 05A/B or e.g. "MODULE 11-1-8467" for the modified 11A-1. This may be a standard part-number scheme searchable elsewhere.)

I don't know why Brent's and my 03A/B modules differ, mine having 100ohm resistors installed, Brent's's not. (I have not used my 03 module).

That experience, meeting Brent, was uncanny! Turnaround time was less than two hours! I had darn-near *zero* expectation of my email sent to an address found in a forum-message written 17 years ago to even reach a human, let alone one so helpful, nevermind someone who actually had the files ready and waiting to be sent. Might be a Miracle, even. So, then, it's reasonable to assume that others in similar situations to mine might, as well, think similarly, and never even *try* to "fix" their otherwise completely functional machines once they've lost their modules. (or their marbles?). So, here it is. Now Googlable. (Can yah think of any other key-words I should throw around in here?)

If you have *other* modules, please email me some scans or close-up photos for the betterment of MegaMax-users worldwide!

Random Module Notes:

PCB Thickness: 0.031in bare, 0.033in with copper (measured).

This is *THIN* compared to most copper-clad in my collection!

Thicker material may damage the connector...

The modules' edge-connectors are quite-similar to PCI connectors. They both have the same pin-spacing, and the "slot" is in the same position. So one might think to chop-up an old PCI card and do some point-to-point soldering. (I'm certainly tempted).

However, note that PCI cards are on thicker PCB material. One PCI card I measured was 0.06in thick. Nearly twice as thick. The PCI card's thickness does seem to fit in the socket, but watching the springy terminals displace, it seems they reach the "end" long before the card is fully-inserted. With a module, the springy-terminals only displace about half-way through the guides they travel within. The concern may be that the spring-terminals are initially rounded ) and that by shoving a thicker board in there, it might deform those terminals such that they'll make looser/poor contact with normal modules.

Here are some similar notes from Brent:

I had a quick look at the module design, thought it would be good to know what the convention is for pin numbering. I felt for sure it would be a standard connector that is used elsewhere, eg. PC card or memory module, even if it's obsolete now. Spent half an hour or so searching the web but didn't find a match, do you know what it is?

From the physical module I can measure that it is 0.8mm thick PCB (half the standard thickness), pins are 1.27mm pitch (0.050"), group of 11 pins then notch (takes up space of 2 pins) then another 29 pins, x 2 sides = 80 pins total. Close to PCI Express in that the 11 pins and key notch line up but total length doesn't match. https://en.wikipedia.org/wiki/PCI_Express

Interesting... I have yet to have any experience with PCI-Express, interesting that it's similar in design to the old-style PCI. Apparently that type of connector is common-enough that it comes in many pin-counts... Here's a couple others that look similar in design, but with a different number of pins: Audio/Modem Riser, and Communications/Networking Riser.

And here's one from Digikey that looks to match those specs. except that its' designed, like the others, for a 0.6in PCB. It's plausible the one in the MegaMax was designed for 0.6in, as well, and they just found that the smaller PCB was easier to [re]insert regularly...?

To find this, I did a general part-search for "Edge Connector" and selected the result with the most parts. From there, a table allowed me to select them by pin-count/spacing, and a few other options. There appear to be several that match, but, no indication of it's being a "standard" connector used-regularly (like PCI, PCIe, AMR, etc.), it just says "Card Type: Non Specified - Dual Edge."

Get some PCBs!

Brent comes through again!

Here we have renders of a PCB design for the 01A/01B module, which would only take minor modification in, e.g. gimp, to prep for toner-transfers at home.

And here's schematics:

Or download the pdf, here.

Homebrew Module Replacement

Since my 01-module was lost, I had to replace it, somehow. A million thanks, again, to Brent for many things, including sending me scans of his 01-module (shown above).

In the interest of getting my project going, I opted to make the replacement with parts on hand... This included bare copper-clad board, PCB-etchant. I wouldn't recommend this route, if you're more patient than I, for several reasons:

    • Bare copper will oxidize... will any of that corrosion wind up on my BK846's edge-connector socket, making it less conductive?

    • Normal PCB material is much thicker than the original modules

But, without further ado, here are my results:

(Oy, should've probably taken some alcohol to my programmer before showing the world!)

So, the key-factor is that I routed the signals straight-through to the other edge. First of all, it was *much* easier to do this way, than to try to draw traces by hand amidst the difficult edge-connector. But also, this way I can make new "modules" by merely point-to-point wiring. The white "socket" is a PCI socket from an old (fried) motherboard, removed with a heat-gun. It's definitely too long, but the slot in the PCB-material aligns with that in the PCI socket, so it aligns well.

To etch the copper-clad, I covered the entire thing in etch-resist ink. I used a breadboard with 0.1in spacing and a row of 0.1in header-pins (not soldered in) as a guide/jig. I used a scribe along the edge of the breadboard to remove the etch-resist ink for the spaces between the "traces"/pins. Then moved the row of header-pins to the next row of breadboard-holes, and repeated the process. In this process, I slid the copper-clad up against the the plastic header-pin holder.

For half-spacing, I lucked-out. The holes on the breadboard were a bit larger than the 0.1in-spaced header-pins such that pulling the header-pins away from the breadboard and aligning the copper-clad against the bare pins (rather than the plastic) was *almost* perfectly half-spaced. I eyeballed the difference, and tilted my scribe a little to add a few more mils for this process. It can easily be seen in the photos that my "traces" aren't perfectly straight, nor perfectly-spaced. But pretty darn close. And, if you zoom in on those images, you can see the "wear-marks" of where the BK846's socket-pins have met with the copper-clad. I filed the slot conservatively, in several steps, trying to make it as tight as possible, such that the wonky edge-connect pins would align properly with each insertion.

(Yes, insertion into the BK846 socket is *tight* and makes me cringe every time... use thinner copper-clad if you have it!)

Obviously, if you're familiar with the "toner-transfer" method and have a laser-printer, then you'd have much better results than these by-hand.

And, obviously, if you're patient enough, designing/ordering a PCB from a fab-house is probably the best way to go... gold-plating would reduce corrosion/oxidization. And could probably order the right thickness, as well.

-----

Note that, initially, I fought hard to try to use a premade edge-connector from an old PCI card... I'd planned on just cutting one's connector off, desoldering all the components, maybe cutting a few traces, and wiring point-to-point. I checked through boxes of PCI cards, with nothing ideal popping up... So, some caveats of doing-so, which prevented me from doing-so...

    • PCI-Cards don't always populate every pin

    • PCI-Cards usually don't use *every* pin, even if they are populated, so they may be hard to solder to

    • PCI-Cards' edge-connector pins are usually much shorter than the original BK846/MegaMax "family-modules", making them hard to point-to-point solder to, without interfering with their insertion into the socket.

-------

On the plus-side, if I need that 01-B module, or any other, all I have to do is desolder another PCI slot, and point-to-point wire it, no PCB-etching/design/wait-time necessary.

Adapters

The device-list mentions that some devices require adapters.

This makes sense for some devices which come in both DIP packages and PLCC. And making an adapter between the two shouldn't be too difficult... (Check the pinouts in the device data-sheet).

But there are also some supported devices which only come in non-DIP packages. And some have *way more* than 48 pins.

I have no idea whether there's a standard DIP adapter for programming these things; can one use an adapter designed to connect one of these devices to another universal-programmer with this programmer? I don't know.

If you have adapters you use with with the MegaMax (or its OEMs) and feel like sharing that info here, feel free to email me!

Running under DOS or Windowses through 98SE

This is what it was designed for... DOS... So it should work as-intended, by the designers.

And the DOS in Windows is fully-compatible up until Win98SE (Maybe WinME? If that's "compatible" with anything...?)

In Windows, make sure you don't have a fancy printer-driver, ZIP-drive driver, Scanner-Driver, etc. pointing at the associated parallel-port.

Despite the "minimum system requirements" claiming a need for 32MB hard-disk-space, I have, as I recall, run this off a bootable floppy disk. (You have to extract the files by running the self-extracting executable first, that might be bigger than a floppy). And, you might need two floppy-drives (or a RAM drive?) to both execute the program *and* store the device binaries.

Running under Windows NT/2000/XP/etc.

The MegaMax software is DOS-based, and communicates through a Parallel-Port, by accessing the Port-registers directly. Though you can run DOS programs under Windows (at least until XP, I can't vouch for later versions), Windowses based on NT (basically anything from Windows NT4, 2000, XP, and onward) don't allow programs to access port-registers directly. (It's considered a security/stability-risk).

The trick, then, is to find a utility to release Windows' hold on the LPT-port.

EETools' software-page also supplies an "NT driver" for the MegaMax. But, as I recall, this only works under Windows NT4, possibly also Windows 2000. BUT, as I recall, I was unable to get "NT driver" to work under XP, and haven't tried with later versions.

Under XP, I *was* able to find a utility to release the parallel-port that worked with the MegaMax, but it took quite a few tries with various different utilities before finding *the one*. That machine is long-defunct, but I've set up another, and tried again, unfruitfully.

(TODO: Try again! Surely I've a backup, amongst all those utilities, of *the one*!)

Update 3/31/21: digging through some old emails I came across this attachment, which should contain all the software. If I recall, loaddrv is what I used to get it working under XP. But, I haven't the means to verify, so if you have luck, lemme know!

Running under VMware

I've never touched VMware, so I can't vouch for any of this. But, allegedly, several people have gotten this working in newer versions of Windows (I've heard of Vista through 10) by running a Windows 98 Virtual Machine.

Here's the word from Brent:

The virtual machine I use is in fact Win98 SE ... running with

VMware player on my main Win10 home machine. I decided to use a VM about 5

years ago when my trusty old Win95 box died and decided it was in some ways a

better path to take (less PC's sitting around collecting dust and using up power etc).

I use the free for non commercial use version, and the MegaMax programmer is in

fact the only thing I use it for so I'm not an expert. I do remember having trouble

getting the parallel port to be recognized in VMware, but ultimately there was a

plug-in for it and it seems to work reliably.

Sounds like a great option. I looked into it, and will probably use it in the future.

VMware does come in both Windows and Linux variants.

Note that VMware apparently requires a 64-bit x86. (Maybe older versions don't?).

Using USB-to-Parallel Adapters

Nope... Sorry...

Simply, the software expects to communicate with the parallel-port registers, directly... And even if some magical USB-to-parallel adapter exists that can emulate those registers, there may still be timing-problems, since USB is packet-based. Yah's Gotsta Have a "real" Parallel Port on your motherboard, on an ISA card, or *maybe* on a PCI card.

See this explanation from BK Precision.

Sources for "Real" parallel-ports

Most older motherboards have them built-in. ATX motherboards usually have them broken-out to the rectangular "face-plate" on the back, near the keyboard/mouse connectors. AT-style motherboards usually have a 26-pin IDC-connector on-board, which can be broken-out to a DB-25 and mounted to a bracket, or the case may have a special cutout for the purpose.

Older AT-style and XT PCs will have a separate (usually ISA) card for the parallel-port. This card may be multi-function, including Serial ports, Floppy connectors, etc. Some older video cards (e.g. CGA) also contain parallel-ports.

If you try to add one of these mult-function cards to a machine which already has some of these other functions on-board, you'll have to make sure to disable them on the card (usually with jumpers). If you're trying to add a second parallel port, you'll probably have to change the jumpers to select a different address.

(Here's a hack for yah... if you're trying to use a 16-bit ISA Multi-Function card which also supplies IDE, on a system with only 8-bit ISA slots, you might get away with inserting the 16-bit card in an 8-bit slot, if you disable the IDE controller. My PC/XT detects the parallel port, though I haven't tried to use the card for anything but floppy-support yet).

The idea that PCI or PCIe could give access to these low memory/register-ranges boggles my mind (actually, are these Memory addresses or I/O addresses? Hmm), but am glad to hear that they might've taken it into consideration! So, you might be able to find/use a PCI or PCIe parallel-port card. I've no idea how you'd set the address, and you need to know that (or use trial-and-error) to use the MegaMax software.

Brent notes: "Pretty sure my parallel port is on a PCI or PCIe card"

Other notes...

I figure if you're reading this, then you probably have reason to... But do keep in mind that most microcontrollers, programmable-logic, and non-volatile memories, these days, can be programmed "in-system" via a cheap/home-made USB programming-dongle. Many microcontrollers can be programmed over e.g. USB or a serial-port via a bootloader. I definitely wouldn't recommend investing in parallel-programmable-only uCs, eproms, or PALs/GALs, and going the route of using a parallel-programmer like the MegaMax, unless you've specific reason to.

OTOH, if you need to replace an EPROM in an existing system, you're probably on the right path. Though, you can probably tell from the amount of info on this page, using one of these older parallel-interfaced programmers may be a bit more difficult than the newer USB-based systems. OTOH, consider that over 20 years after this MegaMax programmer was current-tech, it's still usable, and even well over a decade of being EOL'd, the company still exists and still supplies information/software for this product. Could the same be said for today's $50 no-name-brand USB-based units? I'd consider this a worthwhile investment.

TODOs:

    • (See those interspersed, above)

    • Make note of increasing Parallel Port Latency for faster computers

    • Discuss fixing of blown-transistors, "pin-test" oddities, and the above

    • Scan/Upload BK846 manual, which has a little bit more detail in a few sections (including the troubleshooting section)