EW-901/904/908 logo

Download software for EW-901:

MS-DOS Version 5.5 - July 1986 - EW901.EXE - 30391 bytes
Here is, thanks to a great guy on Internet, software for the eprom programmers EW-901. EW-901 is different from EW-901B both in hardware and software. EW-901 has the fixed I/O address 3C0h!!!! This is not very good because that is the address of VGA-cards which can cause you problems.
FILE: The file EW901.EXE can be unpacked in a directory of your own choice and the software will be ready for use. There is NOT included any utilitys in this file.
PROBLEMS USING THE EW-900 SERIE: Please look further down.

Download software for EW-901B and EW-904B Eprom programmer:

MS-DOS Version 6.1 - September 1987 - EW904B.EXE - 75821 bytes
After some requests here is, according to my information, the latest version of software for the eprom programmer EW-901B and EW-904B. I think this is the oldest eprom programmer from Sunshine so the software will not be updated further. The replacement for EW-90xB is called EW-70x serie, where x = 1, 4 or 8.
FILE: The file EW904B.EXE can be unpacked in a directory of your own choice and the software will be ready for use.
INFORMATION: I have a problem using the software for EW-901B on my Pentium 133 (overclocked to P166 and 83MHz on the bus). The software run in some kind of a WHILE loop until it crash my computer so I have to restart it. I have no problem with the software for EW-904B. I know from other people, that the software for EW-901B actually works.
PROBLEMS USING THE EW-900 SERIE: Please look further down.

Download software for EW-910B Eprom programmer:

MS-DOS Version 5.7 - September 1986 - EW910B.EXE - 45113 bytes (EW-910B)
After some requests here is the software to the eprom programmer EW-910B. This is NOT the latest software version. I think that it is version 6.1 which I lost in a harddisk crash a few years ago.
FILE: The file EW910B.EXE can be unpacked in a directory of your own choice and the software will be ready for use.
PROBLEMS USING THE EW-900 SERIE: Please look further down.

Download software for EW-901BN and EW-904BN Eprom programmer:

MS-DOS Version 7.0 - September 1989 - EW904BN.EXE - 109116 bytes
MS-DOS Version 7.1 - October 1993 - EW90XBN.EXE - 109075 bytes
Here is, thanks to a great guy on Internet, software for the eprom programmers EW-901BN and EW-904BN. EW-904BN is different from EW-904B both in hardware and software. EW-904BN has the fixed I/O address 2A0h.
FILE: The file EW904BN.EXE can be unpacked in a directory of your own choice and the software will be ready for use.
PROBLEMS USING THE EW-900 SERIE: Please look further down.

            SUNSHINE EPROM PROGRAMMER CARD : EW-904BN(new model)

1.0 REVISION OF EW-904 series :
    MODEL EW-904,904A: have been faded out at 1986,servicing only.
                       I/O BASE ADDRESS is 3C0.
                       Software V1.0 to V5.7 is old style menu.
                       Software V6.0 or greater is new style menu.
                       More powerful than old software.

    MODEL EW-904B    : have been faded out,servicing only.
                       I/O BASE ADDRESS is 390.
                       Software V1.0 to V5.7 is old style menu.
                       Software V6.0 or greater is new style menu.
                       More powerful than old software.

    MODEL EW-904BN   : available at end of FEB 1989(new model).
                       I/O BASE ADDRESS is 2A0.
                       Software V7.0 is almost the same as V6.0.
                       We add a built in screen editor that is more friendly
                       than DOS DEBUG.COM.
                       Because we apply some filter circuit on test socket
                       BOX and interface card,  the CMOS EPROM problems
                       are solved on this model.
                       CMOS EPROM can be programmed by general NMOS EPROM
                       programming algo., except that the NS CMOS EPROM
                       has to be programmed by its own algo.

     EW-904BN is not compatible with EW-904B on software and hardware.

Problems using the EW-900 serie:It can be a problem programming on a fast PC like the 486+ because the EW-900 serie is very critical about the AT-bus (ISA) speed which is running approx. 8MHz and if it is too high there can be a problem. The AT-bus speed have to run below 8MHz (or as slow as possible) but even that is not always enough. I don't know why, but sometimes it simply won't run!
If you have a 486 PC you could try to turn OFF the turbo speed and see if it helps before changing the BIOS.
You can change the AT-bus speed in the BIOS. If it is an AMI BIOS then you change the 'BUS CLOCK SELECTION: CLKIN/3' to 'CLKIN/5' or some high number to slow it down. If it is an AWARD BIOS then you have to change the '8-bit I/O Recovery Time'. Remember that it is only the speed of the ISA-bus that you have to change. If it doesn't solve your problem, then there is nothing else you can do than use a 386 or older machine to run the programmer. (I have never heard of problems on a 386)

Comprehensive information on EW-904B

(Download the below text and pictures as a ZIP file)

Here is some comprehensive and very impressing information I have received via E-mail. This great guy want to share his information with all the people who has an EW-904B programmer. I will let him introduce himself:

I'm using a EW904B too, for more than 12 years! I'm a hardware freak, otherwise you don't need a programmer!!! Many years ago I had enormous problems with the I/O adress of 390H and the range it uses. There were conflicts with my soundblaster, overlapping of the I/O range, caused by a very stupid adressing in the SB16. Someone has forgotten to include some lower adress bits, by adressing the MIDI channel it adresses 32 bytes at the same time. 380H - 39FH.

I changed my EW904B, put an inverter in one of the adress lines, I/O start point from 390H to 290H. very quit over there!!! After some headache and disassembling it appeared to be very simple to patch the software: only changing 1 (ONE) byte , the I/O vector, at the start of the program. I don't know wich version I have, while typing this email. I also changed the hardware on pin 26 (Vcc with 2716/2732) to make it work better and faster as a adress line. Had to many killed chips....... before no problems in a 386SX, but they came in a 486DX2 in the early ninety's, that was tricky. Needed a change.


Hereby you receive a sign of life after my mail to attend you on lots and lots of info I have about the 904 series Sunshine programmers. After many measuring sessions and testing I have some simple information TXT files. Probably they will change and in the future you will receive an update. The info is very, very informative for those just like me: the solder/ hardware enthousiasts.

Paperwork from the past is "rebuild" (the last weeks). In total 9 sheets. 4 for the 904B, 1 for an update for A13 - the hex 1000 error, and 4 for the 904BN. I have completely reverse engineered both programmers. And analysed their problems an how to cope with them.

I also designed programming adapters for the 904 series (in multibank method) for "bigger" eproms, one for:
271000, 1001, 2000 and 2001 eproms in Jedec as well as in ROM mode, programmed in 27C128 mode. And one adapter for 27C4000 eproms in programmed in 27C256 mode. I made some photographs.

Walter Geeraert The Netherlands


A quick view to a EW904BN board that I got in hands showed that it is working properly, no ground loop related problems in the TL497 circuit like in the EW904B version. Thanks to the redesign of the ground traces no instabili-ty. See the EW904B TXT file for more explanation and info for this part of the programmer. Advised reading... But........ The safety by-pass diode of the power transistor TIP31C is a small signal one: 1N4148. That is not the way it should be: I replaced it by a safer one: the BYD33G. Replacing C16 - 100nF with a tantalum cap of 4.7 or 10uF is anot-her good idea: more local buffering. One more hint: replacing the 1N4002 (ugh) with a RGP10M : again reduced the ringing pulses during switch-off remarkably. You could finalise the TL497 part with a tiny damping network across the L's: 4.7 nF in series with 150 Ohm is splendid. See a picture taken from a memory scope.

Other problems found in the 904BN card:

Diode D5, one of the protection diodes on the PIO (8255) databus (bit-d2) to the EPROM socket is NOT connected to +5V like the other diodes, but to EPROM-Vcc (5 - 6.5V). This diode should protect the PIO against too high Vcc (>5V) and should be connected to +5V to limit spikes. During test mode you could measure on all but one data channel 0V or +5V, only one (databit d2) is only 2.5 - 2.8V high. It looks like this PIO channel is blown, but it is NOT. The current is only leaking away because the circuit is wrong. This is corrected. I disconnected the + side of the diode and lifted it. I soldered a piece (1.5 x 3 mm) of double clad board on top of the original connection point. The diode is soldered on top, it is now fixed in position and isolated from the former connection point. A piece of PTFE wirewrap to normal Vcc: problem solved. Replacing all the diodes by schottky BAT41 types (0.3V drop) gives even better protection.

After rebuilding the A13 circuit (among others) in the former 904B programmer (solving the 1000H, 2000H errors in a 486DX-2 PC, A13 timing now being much less than 1 usec), I checked the performance of the A13 circuit in the 904BN version. I did this using my ZIF socket adapter from the 904B version (I only have the board, it was sold second hand as it was for $5,-- A must have for me!!). This socket module is not suited to program EPROM's, some /CE and /OE pins are different. But I presume that the Vcc2 -A13 capaci-tors are almost identical on this line to pin 26. Going down/ fall-time is OK (< 5usec) but a very wrong dU/dt curve going up / risetime about 300usec. That looks incredible. Are the capacitors really the same (4x 10nF)? Are the 1000H, 2000H errors therefore also in this pro-gram-mer ..-...??? This part doesn't look full of promise.

Due to the already improved circuit design only an extra pull-up resistor (470 to 220 Ohm) on the right spot solved this risetime problem for a great deal. Risetime is now about 15 to 10 usec, which is accepta-ble for a slow machine only. The R is connected between pin 10 and pin 14 of U3 = 7407. In the 386DX40 the A13 rise time is only stabilised AFTER the /OE (not /CE) read pulse, so this is still NOT OK. Modified with a Maxim driver MAX 627 or MAX 628 (non inverting part) in place of the last 7407 buffer (glued on top of it), would make risetimes << 1 usec. I haven't tested this yet. Due to a lack of the proper (diffe-rent) MAXIM buffers. Will be continued.

I also changed the Vcc to Vpp clamp diode by a schottky version: BAT41. Normal Vcc without Vpp went up from 4.3 to 4.6 volts, looks much better. Vpp to Vcc timings were tricky but OK, smaller than 10 usec. In some programming algorithms Vpp stayed on!

The Vpp pots were hard to adjust. They appeared to have the wrong value for proper smooth adjustment: 2Kohm. Calculated setting for all 4 pots is about 500 ohms, so a value of 1K is more appropriate. I drilled an extra hole between the top and bottom hole and placed 1K multiturn trimpots. Smooth adjustment as a re-sult ....-.... Also changed the setting R's by metalfilm types: more stable and less temperature dependant voltage. The changed setting R's are: R3 - 10K, R34 - 100, R35 - 470, R36 - 22, R37 - 470.

Success with the rebuild of your EW904BN programmer.

Walter Geeraert Vlissingen
The Netherlands

I/O port address change in EW904B

The I/O port vector or the I/O port usage range start address of the EW904B is 390 Hex. Usage is from 390 Hex to 397 Hex. This didn't appear to be a handy place after I obtained a Sound-blaster Pro sound card (in the early nineties). The programmer didn't work anymore..... After I created a simple I/O address usage show utility (in Quick-Ba-sic ! My PortDump program), it appeared that there was an over-lap in I/O address usage due to a dummy addressing mechanism in the SB card. They didn't use all the needed lower address bits to point exactly (and only) at the midi channel near I/O 388-389. No, they killed all the possible use between 380 to 39F, 32 I/O ad-dresses were made unusa-ble. It was too complicated to solder on the (at that time: brand-new) soundcard, so I patched my EPROM program-mer and the EPROM4 software. After some playing around with one's and zero's I found out that only ONE inverter in addressbit A8 would change the I/O vector from 390H to 290H: an ideal location. Making that modification was no problem at all for me, but how would the software be aware that something has changed?? After disassembling the software, which gave so much (listing) information, that there was hard to cope with. There was NO direct I/O port addressing, they used indirect pointers to a flag. That made it easy/ flexible for the programmers to change at a last moment. So I tried another approach. I looked with the Norton utils for a "90 03", the computer notation for the Hex 390 vector. I found a location somewhere at 781AH and 781BH that looked hopeful and patched it to "90 02". After program start: I looked for the I/O address reply: 290Hex, bingo!!!! Software problem solved (no internal CRC check!), now soldering...

I soldered a 74LS04 on top of U3, connecting only pins 7 and 14. Cutting off all the other pins, only leaving a small piece to solder on. I only used pins 1 and 2, leave the rest floating. I also placed a jumper to choose between 290H and 390H. A photograp-hic view is available of the change. Also see my schematic dia-grams for more info how to do it.

After changing both software and hardware: a testrun. OK, all worked well.

Epilogue: With a few simple changes in both hardware and software it is possible to use the EW904B on the new address 290H. And make it easy switchable between 390H and 290H. No problem what so ever. Patched software for (only!) 290H probably available on this location. I also removed a typo error in one of the on screen menus. (Devive ---> Device)

Walter Geeraert Vlissingen
The Netherlands

904b-3a.gif Circuit diagram


First: I've completely reverse engineered both the EW904B as well as the EW904BN programmer cards. Complete circuit diagrams are by now available. Try to obtain them and place them next to this story and in your work-shop. So you know what you are doing. The following improvements are also indicated on them.

EW904B problems.....

The TL497 circuit is susceptible for instability due to unideal ground connections or layout. The circuit as a whole (with power stage) produces by its nature most of the noise that causes insta-bility. It interferes with itself!! If unwanted feedback occurs swit-ching is unstable: i.e. not completely on or off of Q4. The drive at the base of Q4 doesn't get low all the time it should be. Or switching at a too high frequency: a normal on-off cycle is interrupted a few times. This produces a lot of unnecessary heat in 21 or 25 volt mode. Q4 must be driven in saturation in ON mode (and no glitches) and be complete-ly off in OFF mode. Switching should also be not too slow, that causes even more heat.

If you find yourself capable of modifying this circuit place your oscilloscope beside the PC and watch for yourself the peculiari-ties on this board. Use a test PC with sufficient "open space". If you don't have a scope available to check, don't do anything!

Testing takes place at 25V Vpp mode. Tapping an "X" after program start takes you to test mode, you'll see the rest for yourself. We will use 2 scope channels simultaneously. To start set time/divi-si-on on 50usec. Both probe's are connected to the L's, one on each side. That's on top of the board and the most easiest to reach. It is unsafe to connect ground to the board, it could slip off and ruin your PC!! Safest is to put a solder tag/lug (?) under the board connection screw with a piece of wire soldered to it for ground. Hopefully there is not to much hum/noise between case and ground. One probe gives voltage indica-tion, that's the one connec-ted to the side of the C of Q4: set-up 10V per division in DC mode. The second probe is placed between the cur-rent limit-R and the L: 1V / div in AC mode. This will give an indication of the current spikes. If voltage triggering stays unstable, try current trigge-ring, negative going. If the circuit is working properly the current indication gives a triangular current dip downwards, some 100 - 200 usec pause, and again a similar dip. If the dip goes rapidly steeper near the top: that's saturation caused by a bit to high current and a rapid reduction of the L value. This getting steeper shouldn't become too high: getting hot coils!! Current level about 0.5 to 1 Vpp; 1Vpp = 1 square. Going down is Q4 on (saturated), voltage at the collector = 0, now loading di/dt. Current curve going up again is Q4 off, di-scharging coil di/dt via the rectifier in the elec-trolyt. And char-ging this capacitor. Voltage pulse on Q4-c is now depen-dant from the output voltage = 25V. If the charging by di/dt stops, ringing or oscilla-tion may occur, or more serious: a bit bumping up and down before it stops, current could flow through the by-pass diode if already placed. If not you have undesired undershoot. This again is a cause of insta-bili-ty. During the pause be-tween pulses the voltage at Q4-c is equal to the input voltage = 12V. If you measure a nearly continuous square wave at Q4-c the circuit is wrong and Q4 gets hot rapidly. But: nothing has to be defective to be in this mode!!! Only the layout and the component values are causing this error mode!! The circuit could possibly burn out if you leave it in this situation for a longer period of time. See my digital scope printouts (Tektronix 2232 with PC software) for an indication of the problems.

What to do about it?? First be very, very careful and very cautious: mind static (put your boots off (NO joke), don't wear static clothing, I've a metal strip at the table edge that is grounded via 1 meg-ohm. So on purpose grounding is safe for me (too). Don't forget to switch the PC off to insert, or to remove the card. Wait a moment to let voltage drop. Don't spill solder on your SMD compo-nents. Cover parts of the inside from your PC with card-board if you plan to be incautious. And so on.........

Making some R's in the 904B equal to the values in the 904BN is a good idea to start with, but wait a moment. First reduce ground related problems and switching noise.

Noise on the +12V: increase the value of C5 from 100nF to 4.7 or 10uF tantalum. This gives excellent buffering. You could also solder some electrolytes in the empty places at the card edge, 2 for +5 (C21 and C6) and 1 for +12 (C20). 4.7 or 10uF is OK. Mind plus and minus....

Reduce ground related unstability: solder a short (isolated) wire (about 3 cm) and not too thin (0.3 to 0.5 Qmm) at the back between the ground of Q4 (emitter) to the ground of (the increased) C5. Measure before that the points you are connecting are already connected and grounded. Indicate point with a marker pencil! More ground wires could be needed to other poi-nts, but this is not tested. Only one appea-red sufficient in most cases. (I've tested 3 cards and changed 2 cards EW904B, the other is a 904BN) Test it now already. Watch on the scope for the difference/ impro-vement for only ONE extra wire from ground to ground .......-.... (and a buffer cap)

Going on with soldering..... To protect Q4 from the negative pulses during switch-off and ringing: place a real switch diode in parallel to Q4 to give those currents a by-pass. No undershoot allowed. I took a BYD33G diode, relative fast (250 nsec) and max 400V reverse voltage. BYVxx series or RGPxx series are also OK. I soldered it to test underneath, later I drilled two holes near the emitter and put the diode over there. Connected between e and c of Q4. If available see photographic view (in a file). As I also service TV sets and (PC-)switch supply's for my hobby I have suitable components available. A TV-service shop could supply equivalent devices for a few pennies.

To reduce switch-off times it is necessary to reduce the R-be of Q4. R20 = 18K is much to high. A resistor in the range of 330 Ohm to 1K ohm is more appropriate. In the 904BN series 1K is chosen, so I also did.

A standard rectifier is placed for D2: a 1N4002 diode. This is by no means a switch rectifier, it's more a mains rectifier. Because the power is low and the frequency not very high, it doesn't burn out or even become hot. But if you increase one or both, it could burn. I've tested it. So D2 must be replaced by a better diode, one that is more suited for this task. I've again chosen a TV equivalent: RGP10M. The ringing / oscillations are also damped a lot by this improvement.

The circuit also gets unstable due to the high frequency of the ringing. It is more stable if the wild oscillations are a bit reduced. Texas Instruments (the builder of the TL497) suggests a 1 Kohm parallel R to the coils. Indeed this helps but consumes too much power. I tested a few combinations and found a series circuit of a 4.7nF cap. and a 150 Ohm R excellent. No waste of power and a nice (slower) sinusoidal switch off.

It is remarkable that the minor above changes have a dramatic stabilising effect on the circuit. Measure it again.

If you are not satisfied yet with the result (that ought to be improved a lot already!!!) you could finally give the current limit circuit a bit more "headroom" by reducing the current limit-R. Making it the same as in the 904BN series couldn't be a problem so you could reduce it from 1 Ohm to 0.5 ohm. The same is valid for the drive limit R: reducing this R from 100 to 56 ohm works some-times OK to reduce false spikes in the Q4 ON period. For testing purposes solder a resistor with the same value on the back in parallel. If you're not satisfied or if it doesn't help you can remove it without any further damage. Those false spikes could also be caused by stray capacitance that disturbs the timing circuit around the timing cap. of 1nF or the circuit traces that are connected to the voltage pot's. I tried to reduce / compensate them by adding a small cap (47pF) from pin 2 to ground or to Vpp, but that didn't work. A second EW904B board didn't need those R reducing, that board worked already perfectly with the other improvements. Probably a TL497 change could help...?

Also a TXT file added with info about the timings and problems (a.o. the A13) related to it. See a separate TXT file for the possible rebuild of the circuit part for the A13-Vcc switch. (1000H, 2000H, a.s.o. errors) This part is working much too slow. The I/O vector could also be changed: 390Hex is NOT the only address an EW904B could work on. Only after some soldering and patchwork.

Also see a TXT file with some remarks related to the newer EW904BN programmer and improvements.

Success with the rebuild of your programmer, hopefully nothing gets blown....... Soldering is at your own risk, you know...... ??

Walter Geeraert Vlissingen
The Netherlands


I remember another peculiar thing about the 904B series: the copper conductor trace on the board underneath the top of the PC connec-tion bracket is connected to +5 volt. If the paint cracks you have a short circuit in your PC!!!!!!! PC power supply's are strong.... I noticed. I've seen (in other occasions) more than once fumes coming out of the floppy ope-ning (shit, shit, shit ......-!!!!) So I've placed a small piece of photo film (0.1 mm) between the copper trace and the bracket, that's a lot sa-fer......

{ Some fire examples, not always everything goes well: In some cases an electrolyt was blown which was connected reverse: once a Discove-ry modem card was to blame. Aluminium foil all over the machine..... I once cracked a +5 V wire myself: it was a very thin wire for a LED: plastic isola-tion molten away everywhere: firework...... Once a tantalum cap exploded, bluegray fumes out of the floppy dri-ve: what a smell........... A switch supply power FET in a PC monitor became "un-well" due to a circuit error: it exploded (300V DC), pieces of it were in the ceil-ing.... ow!, ow! }


A13 - Pin 26 related problems of the EW904B programmer card.

A13 circuit modification description and picturesClick here

A13 Problem in detail:

The original circuit has much too slow dU/dt on A13, ZIF pin 26. Going on (risetime) = 40 usec, going off (falltime) = > 60 usec. That's why the 1000H 2000H 3000H 4000H a.s.o. errors occurred. The A13 change is only stabilized after a second succesive read, at the second address!!! The previous address is lost........ There is also a too heavy DC load: max. U-A13 = 2.75V. Lowering R12 to give a voltage rise doesn't help much. Cause is a parasitic current path through the 7805 and the ballast R! A design flaw!! Adding series diodes as in this update to the 7805 and only changing the Q7 circuit to a PNP driver from +5V (with a BC640) gives indeed some minor improvements, a faster rise and higher A13 values, but still the discharge / fall times are wrong. See for yourself if you have an oscilloscope nearby and perform a read master test. Trigger on A13 (pin 26) on one channel, put A0 (pin 10) on the other as a reference. Connect to the ZIF unit with small pieces of isolated wire in it; keep it save. Do this twice: one time for positive and one time for negative going triggering. If you have a scope with memory available: even much better. Or look over here for a scope snapshot.

So a complete rebuild around this pin 26 appeared necessary: Due to the fact that a high capacitive load will remain (the Vcc decouple C's), I've chosen a power MOSFET driver from MAXIM, a MAX 626 (= improved TSC 426), intended to drive a capacitive load with high currents without problems. MAX 626 has two inverting buffers, I used them in parallel, that's allowed. The MAX628 (= TSC428) has one inverting and one NON-inverting buffer, if used: ground the unused buffer. (The MAX 627 (TSC 427) has two NON-inverting buffers: good for the 904BN version) To reduce +5V Vcc dropout spikes: charging is done via the 22 Ohm R and the BAV21 diode. Also: supply bypassing is extremely important: extra 4.7uF tantalum + 100nF ceramic. To avoid a parasitic ballast R on Vcc with a series diode and not without. Discharge via the 180 Ohm R and a speedup C of 180 nF. The 180 Ohm R is no problem in the event the 5 V remains on. The 180 nF parallel C gives capacitive compensation just like the C's in an oscilloscope probe. With the proper value it compensates the Vcc capacitors in the ZIF socket completely. Giving a nice rectangular square wave despite a heavy capacitive loading. To avoid undershoot pulses on the A13 line (if not 100% in balance) a schottky diode, BAT41, is added in the ZIF socket unit, in an open space for a ballast R. First I used a too high compensation C (1uF), giving a small undershoot pulse of 0.4V but a bit faster falltime. A value of 150 nF (rectangular) to 330 nF (a small undershoot dip) should be chosen. Tests were done with 150 nF, later 180 nF was chosen.

This circuit change is in use for many years on a 486DX-2 without any problem. No 1000H 2000H a.s.o. error has ever occurred after the change. The delays are now smaller than 1 usec!! Occasionally there are misprogrammings (probably after a bad erasure?, who has none??) , but a dummy blank check before a real one sets all the internal settings OK.

Besides the above improvements on A13 there are also some changes made in the Vpp output circuits. The fall time from Vpp to Vcc is a bit too slow (delays should be halved), /CE comes too quick. This Vpp to Vcc jump is repeated every program pulse : program, verify, program verify, a.s.o., also checked with an oscilloscope. The slow fall time (with /CE nearby) could "kill" an EPROM on a 486 PC, maybe killing is not the right term: unwished programming a not wanted 00H. More ballast with a reduced R in place of the existing ones improves these Vpp delays to half of them: < 10 usec. The address fall times went down from 15 usec to about 5 usec by placing lower Vpp ballast R's. (3x 2K2 and 1x 2K7 were they were 4x 6K8) The series diodes in some output lines are replaced by schottky types, this gives 0.3 to 0.4 V more margin. Also two pull-up R's were added. Address voltage dropped from near 5 to 4 Volts, with the schottky diodes added. See schematic for details. With the standard diodes the voltage drop is a bit more...

The TL 497 (U1) circuit has had many minor changes. See a separate TXT file for those improvements. Due to the lower ballast R's there is more power drain from the Vpp supply. This was no problem after the TL497 circuit changes.

Success with the rebuild of your programmer....

Walter Geeraert Vlissingen
The Netherlands

General program timings and hardware requirements.
The adaptation of some I/O circuits to faster demands.

Hardware requirements?? The slower, the better..........

On a very slow machine in "read master" mode the /CE (chip select or "read") pulse for a EW904B comes at 50 to up to more than 100 usec after an address change. This is the /OE read pulse for a EW904BN. On a 386SX-16 this is already decreased to 14 to 30 usec. On a 386SX-33 this is about 7 to 15 usec. On a 386DX-40 delays are getting smaller than 5 to 10 u-sec, and on a 486 ... 2 to 5 usec. A0 timings smaller than 15 to 20 usec: not all goes well. You see we have a problem. Real timings via timer interrupts (the pro-gramming pulses) are always OK, but as normal program execution goes high with newer machines, the "normal" delays necessary for (address) voltage changes to stabilise before the next action takes place (read!) are getting a problem. Those "address cycles" are probably NOT programmed timer interrupts or fixed programmed delays in the main program loop, but only runtime delays. A lack of only a few statements in the software. This is to my opinion the problem with the cards I got in hand. At 1000H the A13 line comes "alive"; a typical address that causes serious problems. Not only A13 has much to high delay (40 - 60 usec), also the Vpp to Vcc switching is just too slow on the 904B, 20 usec or even more. See the "rebuild" story for pin 26 - the A13 line. With the reduction of the settling delays the programmer may work on much faster machines as original was possible, but even an old pentium still looks too fast. See the measured timings further down.

I was testing some timings on a 386DX-40 and used an old AMI-bios trick to switch to old PC/XT speed (4.77 MHz). Use ALT+CTRL+(grey minus key) utter right. To my astonishment speed dropped more than 10 times on the oscilloscope. Switch back = ALT+CTRL+(grey plus key). All timing problems were solved in PC speed mode .......... Only hit a key to come out of turbo speed and your programmer works!! Or use the turbo button at your desktop. So: if your 486 has no turbo (off) button, probably the keyboard trick works. Or: a slow motion program (TSR) for an old game could be a solution to slow things down a bit.

Real world timings:

A lot of old scrap machines from the shed have come alive again for the following tests (luckily I still had them!!). Below is the timing table for address bit A0 in "read master" mode. It is the total time duration for a "0" or a "1" during successive address increments. During programming timings are much longer, much more action takes place. Somewhere in this A0 window is the /CE or /OE pulse for a data fetch. See the next table following the first.

ALL values are in microseconds (usec).
A0 cycle 8088 XT-8MHz 386DX40 in XT-mode 286-16 386SX-16 386SX-33 386DX-40 486DX2-66

The next following table is the start of /CE (904B) or /OE (904BN) after the A0 change for a data fetch. In the 904B there are two /CE pulses, a narrow one as a start (false??) and a wider one (real??) a bit later. The false (?) /CE can overlap Vpp to Vcc switching delays during programming (to be exactly: at verify between programming pulses). A cause for errors I think??

ALL values are in microseconds (usec).
/CE or /OE after A0 8088 XT 8MHz
1st --- 2nd
386DX40 in XT mode
1st --- 2nd
1st --- 2nd
1st --- 2nd
1st --- 2nd
1st --- 2nd
1st --- 2nd
904B 78 --- 116 65 --- 100 17.5 --- 27 18 --- 28 12 --- 18 6 --- 10.5 5 --- 8
904BN 58 50 14 14 7.5 5.5 2

If you look at the decrease in possible settling time for address changes you see why things are getting tricky on a 486DX2 or even a 386DX machine. Even more if you would know what the delays really are for pin 26 - A13 and other points. At my place a EW904B is working OK in a 486DX2-66 ...... How did I do that???

I rebuild/ adapted all the I/O points with a too high delay. They were: 1) Address pins combined with Vpp: rise: < 2 usec (=OK) , fall 15 - 20 usec. (NOT OK, discharge problem)

2) The circuit for A13 - Vcc2 on pin 26 was the greatest problem: rise : 40 usec, fall 60 (to 80) usec!! compare this with the A0 cycle time!! 1000H errors on a bit faster machine than an XT are due to a design imperfection!!

This A13 problem needed the most attention, but it was not easy to cope with. I had to place a special buffer chip to solve that problem: a powermosfet driver. See a separate story with more explanation. Also in the redesigned 904BN the A13 circuit is NOT perfect at all. (If you take into account that there are decouple C's connected to it in the ZIF unit). Fall = OK: 5 usec, rise 300 usec!! (measured NOT with the original ZIF unit). This ZIF unit (from the 904B) has 4x 10nF decouple C's on Vcc-2 / A13. I don't know how it was on the original unit, probably not much different.

After changing my EW904B with lower (Vpp) discharge R's: address delays on Vpp pins now: rise time 2 usec or smaller, fall 5 usec or smaller. A13 - pin 26 with extra chip: rise and fall both now smaller than 1 usec!! My A13 idea could also be used for the 904BN. With a different buffer chip.

Vpp to Vcc (25 to 5 Volt) switching falltime during repetitive program/ verify pulses has to be completed before a /CE takes place. You could ruin your eproms.... I reduced those delays to more than half of it. At the same pins are address bits, so they are much faster too now. If voltage was to much reduced to the heavier loading, a pull-up was added on the right place. After the rebuild of the TL497 circuit the extra load on Vpp was no problem.

See the diagrams for where some resistors were changed or added in the Vpp circuit. See all the other stories for much more info....

Walter Geeraert Vlissingen
The Netherlands

A collection of eprom programmer related images.

foto14.jpg Miniature view of the MAX626 circuit with wires and capacitors attached to it
foto15.jpg Larger view of the MAX626 circuit, other side, with wires attached.
foto16.jpg PLCC adapters, with side view of the sandwich construction
foto17.jpg EW904B total component side view, all modifications: I/O290, earth loop correction, TL497 circuit, some pull-up R's, Vpp pull down R's and the A13 modification. A mess, but works great.
foto18.jpg EW904B view zoomed in on the component side, all modifications: I/O290, earth loop correction, TL497 circuit, and A13 modification are visible.
foto19.jpg EW904B view zoomed in on the solder side, all modifications: I/O290, earth loop correction, TL497 circuit, and A13 modification
foto20.jpg Top (component) side of the 27C1000/2000 adapter
foto21.jpg Only earth loop modification wire TL 497 circuit, emitter Q4 to common earth point C5
foto22.jpg Top (component) side of the 27C4000 adapter
foto23.jpg Top (component) side angle view of the 274000 adapter
foto24.jpg 27C4000 adapter solder side view. The 27C1000/2000 version looks allmost the same. Mounting construction of the sockets and pin-pin adapter
foto25.jpg PLCC adapter on top of the ZIF unit
foto26.jpg Component side EW904BN board, notice: yellow wire databus diode near mounting bracket, diode changes Vpp, coil oscillation damp components, multiturn pots in place of original pots, and the A13 pull-up R.
foto28.jpg PLCC adapters
foto30.jpg 2708 read only construction / adapter with power supply / transformer
foto31.jpg TTL prom readout adapters plus construction example (a reverse engineering aid). DIL plug as mounting base, wire-wrap socket (pins partly cut) placed inside, wiring with wirwrap wire and solder. Some epoxy resin to stabilise.

Information about the scope pictures /screendumps.

Scope used for test location one (home) is a Tektronix 2232 analog + digital storage combiscope, with PC software "docuwave".

All voltages on the scope / screendumps should be multiplied by 10 (ten) Cheaper scope probes were used without divide by ten marker pins. If you know, that's no problem. max. 0.5 Volt Vcc and max. 2.5 V Vpp (programming voltage) looks strange otherwise.

904B-TEW904B TL497 Vpp = 25 volt out, also for all other related curves. Original start situation, circuit is in error. Timing wrong mainly due to parasitic feedback. TIP31C becomes hot.
904B-UEW904B TL497 Parasitic feedback problems solved. ONE ground wire added and an extra buffer electrolyte. No RC or by-pass D yet added, no D's changed. Lots of "bumping". If the bump hits zero, current becomes negative. See positive dips in current curve.
EW904B TL497 Almost finished. RC damping added and a by-pass switch diode. Normal 1N4002 rectifier still in place.
904B-VEW904B TL497 Difference with -S is switch rectifier RGP10M in place of 1N4002. See the difference in switch off ringing. Doesn't it look nice now?? Like in datasheet books? Current is swinging nice in and out...
And the TIP31C doesn't become (too) hot anymore.
EW904BN TL497 The circuit itself is unchanged, it is OK. The diodes are both changed by switch versions, and a damping network was added.
A13-OFF EW904B A13 A13 ON and OFF with the former 1 uF speedup-C. Works great but the looks are not neat.
A13-ONEW904B A13 A small dip under and overshoot. Watch timing scale: 50usec/div. 5usec/div would have been more appropriate. I didn't realised then it was that worse!
A13-BNEW904BN A13Original rise time is the slowest 300 usec one!!!
A13-BN2EW904BN A13 Fall time is reasonable (could be better). The faster rise time is with 470 Ohm pull-up. The fastest is with 330 Ohm, still not fast enough. 220 Ohm is used now, that's the allowable safe min. The circuit is still begging for more speed.......
904BA13AEW904B A13 A more appropriate comparison: A13 falltime compared with the A0 cycle time on a 386SX-33 (= 18 usec). And now at 10usec/div.
904BA13BEW904B A13 And this is the A13 rise time compared with 18usec A0.
EW904B A13 This is the improved A13 circuit falltime with A0 cycle and original circuit timings combined. There is one thing changed now: the speedup-C = 150 nF, we are reaching zero very neat, but is slowly creeping to exactly zero. A 0.2 Volt improvement is with a 180nF speedup-C inplace of the 150nF.
904BA13DEW904B A13 This is the risetime pulse, original and improved. The original slow rise has been shifted to the right. It starts original at the same point (centre-trigger was chosen).
EW904B /CE Both showing /CE pulses with 18 or 21 usec A0 timing false (?) pulse and real /CE pulse.
904BN-OEEW904BN /OE On the 904BN version the software is even running faster. Only 11 to 12 usec A0 timing (486DX2-66). And this file shows how tricky the timing is.
904B-VPP EW904B Vpp This is the timing for a jump from 21 to 5V Vpp during programming. Vpp delay is 12 usec. /CE is 12 usec further. That looks OK for the CPU speed of that moment. (taken from a ... machine)

904b-t.gif - Snapshot of scope
GIF FILE: 904B-T Back to information table

904b-u.gif - Snapshot of scope
GIF FILE: 904B-U Back to information table

904b-s.gif - Snapshot of scope
GIF FILE: 904B-S Back to information table

904b-1.gif - Snapshot of scope
GIF FILE: 904B-1 Back to information table

904b-v.gif - Snapshot of scope
GIF FILE: 904B-V Back to information table

904bn-w.gif - Snapshot of scope
GIF FILE: 904BN-W Back to information table

904bn-ok.gif - Snapshot of scope
GIF FILE: 904BN-OK Back to information table

A13-OFF.gif - Snapshot of scope
GIF FILE: A13-OFF Back to information table

A13-ON.gif - Snapshot of scope
GIF FILE: A13-ON Back to information table

A13-BN.gif - Snapshot of scope
GIF FILE: A13-BN Back to information table

A13-BN2.gif - Snapshot of scope
GIF FILE: A13-BN2 Back to information table

904ba13a.gif - Snapshot of scope
GIF FILE: 904BA13A Back to information table

904ba13b.gif - Snapshot of scope
GIF FILE: 904BA13B Back to information table

904ba13c.gif - Snapshot of scope
GIF FILE: 904BA13C Back to information table

904ba13e.gif - Snapshot of scope
GIF FILE: 904BA13E Back to information table

904ba13d.gif - Snapshot of scope
GIF FILE: 904BA13D Back to information table

904b-ce2.gif - Snapshot of scope
GIF FILE: 904B-CE2 Back to information table

904b-ce.gif - Snapshot of scope
GIF FILE: 904B-CE Back to information table

904bn-oe.gif - Snapshot of scope
GIF FILE: 904BN-OE Back to information table

904b-vpp.gif - Snapshot of scope
GIF FILE: 904B-VPP Back to information table

I will continue to update this information.

Do you have any problems with the software (installation or use), then you can contact me at: rmadrm@danbbs.dk My name is Robert
Back to Sunshine Back to Sunshine