Those who use Spectrum emulators with their TS2068’s know that there is a small percentage of “troublesome” Spectrum software. This stuff can tell that it’s not really in a Spectrum and usually complains by crashing the computer.
Readers of this newsletter have known for a while (Sincus News, Jan 1985, page 8) that putting 10k pull-up resistors on data lines D0,D1, and D3-D7 will correct this problem. Following this, Doug Dewey has installed these resistors on his Omni Emu, making his product probably the most versatile emulator available. (I’ve tried the Omni-Emu, by the way, and I recommend it highly if you intend to buy rather than build an emulator.) The easiest way to start, then, is to get an Omni-Emu. If you have an older “resistorless” Emu, or if you have or plan to get a different emulator method, I’ll discuss ways of installing the resistors later. Shortly after people began installing the resistors, contradictory results began coming in. Some people managed to get certain “unrunnables” to work, while others still had no success. At present, it appears that peripheral devices plugged into the back of the computer are causing the problems. (This has been known to happen in true Spectrums, as well.) As strange as it all may seem, the explanation is quite reasonable. Every sixtieth of a second the computer stops what it’s doing by means of a process called an interrupt. Normally this causes the keyboard to be scanned nd the system variable FRAMES to be incremented. This interrupt can conveniently be diverted to do other things however. The means to do so this were described in the same Sincus News article that first mentioned the resistors. Suffice to say that when the interrupt occurs, the Z80 signals M1 and IORQ, both go low “tells” external hardware to place certain important information on the data bus. On a Spectrum, that external hardware consists of eight pull-up resistors so the computer reads in all ones(hex FF) at that time. The TS2068 has only one resistor on D2, so the data bus can do many wild and crazy things during an interrupt. In any case, the extra seven pull-up resistors place FF on the 2068 data bus, in true Spectrum fashion. Their presence doesn’t seem to interfere with the normal operation of the TS2068; rather their absence allowed Timex to save a couple of pennies. With the resistors in place, the odd Spectrum program that demands to see an FF on the data bus during an interupt won’t be disappointed. It will be effectively fooled into thinking it lives inside a real Spectrum. Unfortunately, certain peripheral devices plugged into the rear connector (of a TS 2068or a Spectrum) can cause problems. In their normal operation allow on IORQ and the proper pattern on the address bus will cause them to go active. This is really a hardware bug in the peripherals. When an interrupt is processed, IORQ is active, and the state of the address bus is somewhat unpredictable. If the periperal is accidentally activated, and puts something other than FF on the bus, you’re in trouble. Aproperly designed peripheral should not function unless M1 were high, but most don’t even use this signal!. Lest the reader think I’m being unduly harsh on others, note that I also point the accusing finger at myself. The “Updates” column in this issue contains a slight redesign to my Interface zero microdrive interface for this very purpose. Also, Doug Dewey has sent me one of his EMU-3 paralell printer interfaces, to be rebuilt to fix the problem. The corrective sugery for either is so slight that it will leave almost no evidence, but it will do the job fine.
It’s my opinion that the best solution to fix the peripheral, but this isn’t practical for everyone. The other obvious solution (unplugging the peripheral) is not much of a solution at all. Another method that some have used with success is to add a buffer circuit that forces an FF onto the data bus whenever IORQ and M1 are both active. This initiates contention between the buffer and the peripheral, and only works if the buffer is the “stronger” of the two. This could damage the peripheral; don’t do it !. For those who want to add a hardware fix, I’d like to speculate on a better solution. I don’t intend to build one, but I’ll give enough information for some “hardware minded” readers to develop it and report on the results. This will invovle building a small “Kludge board” that plugs in between your computer and other peripherals. It will “gate out” the IORQ signal when M1 is active. This would not allow the peripherals to detect when an interrupt is being processed, but I’ve never heard of that being needed, anyway. The important thing is that the peripheral will only see an active IORQ when the computer is requesting I/O. This is the (incorrect) assumption that the peripheral designer made, in the first place. The “Kludge board” should pass every signal straight through, from the computer to the peripherals, except for IORQ. Instead, IORQ should be bridged by a gating circuit. A typical such circuit might look lke this:
If you are going to build this circuit, you might put the seven pull-up resistors on the same board.(One side goes to a data line, the other to +5 volts). It’s not to difficult to add the resistors to an EMU-1 or an early Omni Emu.(Say that fast,five times.) First remove the chips noting which way they plug in. Each data line fortunately passes through the board, giving a convenient point to install the resistors. Trace the lines up from the proper connector pads to find these points. The +5 volt line is a fairly wide printed circuit trace,so the other sides of the resistors may easily be soldered on top of it. The resistors should be 1/4 watt,or they wont fit. Before you solder in the first resistor, place a small piece of cardboard underneath the resistor area. This way, some of the leads will not short accidentally to the printed circuit lines below. Note that the older EMU-1 doesn’t have plated through holes. Signals are passed through the board by a small piece of wire,soldered in from both sides. You’ll have to remove the solder with a solder wick and then take out the wire.
After inserting the resistor, you’ll have to solder it on both sides of the board. As with any printed circuit board, you’ll have to work quickly,or the the heat from the soldering iron will cause the printed circuit lines to peel away from the board. If your soldering skills aren’t up to snuff, you might want to get somemore practice, first.
If you have a Spectrum ROM installed on the 2068 board,or a ROMSWITCH or equivalent, you might choose to install the resistors on a blank cartridge board. John Oliger sells a blank EPROM board that can be perverted for this purpose. Write him at 11601 Whidbey Dr, Cumberland, IN 46229, for current prices. Again,you trace the proper edge connector pads up to a suitable spot on the board. The following are signal pins of the cartridge connector. Note that this picture shows the signals as we face the female connector not the board !
In closing, it should be pointed out that there’s still a glaring difference between the TS2068 and the Spectrum.
The Spectrum takes 3 and a third milliseconds longer between interrupts, and if a program needs this extra time, we’re just out of luck. I’ve not seen such a program yet, but its conceivable that such exist; particulary in “simulation” programs. I’d like to thank Doug Dewey of the Triangle Sinclair User’s Group for contributing lots of hardware, and equally valuable ideas. I’d also like to thank Bob Dyl of English Micro Connection for making a number of “unrunnable” Spectrum programs available to me. E.M.C. is an absolutely super source of Spectrum products, and what Bob doesn’t have,he’ll get for you.) Without help from both of these of these gentlemen, this article wouldn’t have been written.
If anyone has any questions or comments, please feel free to write to me: Wes Brzozowski
[address omitted]
Endicott, NY
Please enclose a stamped,self addressed envelope, if you’d like a reply. The truly anxious are welcome to call me at [phone number omitted], if you don’t call collect and call before 9:00 P.M. Eastern Time. I’d be glad to hear from you.