Tranz 330 Computer Progress
I’ve finally made some visible progress in turning this Tranz 330 point-of-sale terminal into a general purpose Z-80 computer. It prints my name on the display! I may faint from the excitement.
OK, it’s not much to look at yet, but getting this far took a substantial amount of work in reverse-engineering the Tranz 330 hardware. Through tracing the circuit paths on the logic board, and examining the point-of-sale program in the terminal’s ROM, I slowly pieced together a map of where the peripheral devices are in I/O space, and how to communicate with them. Then after digging through the datasheets for the Z80 CPU, PIO, CTC, and the VFD display controller chip (all well-documented fortunately), I was ready to write a new program. I whipped up a tiny “hello world” program using a Z-80 assembler, burned it to my EEPROM, swapped out the original terminal ROM, and voila! There’s my name, in beautiful aqua-colored vacuum fluorescent glory.
I’ll provide more technical details in a bigger “how to” post once I have a more full-featured example. Until then, here are some of the minor problems I ran into, in addition to the job of reversing the hardware design:
The original terminal ROM is a 32K UV-erasable 27C256. I’m sure not going to wait around to UV-erase my ROM each time I want to try a program modification, so I got a more modern 28C256 EEPROM as a replacement. The trouble is (and I didn’t notice this at first) the 28C256 is not exactly pin-compatible to the 27C256. Two pins are swapped. Where the Tranz logic board supplies +5 and A14, the 28C256 expects A14 and /WE. What the heck? It turns out I probably should have gotten a 27SF512 instead, which is a 64K part, but is drop-in compatible as long as you put the 32K image in the upper half.
I could almost fix my pin mismatch by bending some pins and adding some jumper wires, but modifying the 28C256 would prevent me from reprogramming it later. In the final result, I sacrificed a nice ZIF socket, cut off the /WE pin, jumpered /WE to VCC, and moved my program data to the upper half of the ROM where A14 = 1.
The original purpose of the ZIF was to avoid needing to socket and re-pull the ROM every time I wanted to test a change to my program. I put the ZIF in the motherboard’s socket, and the ROM in the ZIF. Unfortunately the ZIF fit the socket pretty loosely, and even more loosely after I cut it up, so it doesn’t work unless I press down on it with my thumb while it’s running. Ah, quality. I’m not sure what a better long-term solution is.
One last headache: my EasyPro 90B EPROM programmer apparently doesn’t work under Windows 7 64-bit. After searching for a while, I concluded there’s no appropriate driver, and I have to boot into XP whenever I want to program a ROM, which is a pain in the butt. I know nobody cares, but I can’t resist a chance to complain! If you’ve got a recommendation for a decent and not too expensive EPROM programmer that works under Win 7, please let me know.
Next step: some demos involving the keypad and speaker. Maybe a game of battleship?
Read 10 comments and join the conversation10 Comments so far
Leave a reply. For customer support issues, please use the Customer Support link instead of writing comments.
It looks like finding a reprogrammable ROM replacement for the 27C256 will be more difficult than I’d thought. The 29C256 works as a direct replacement, but is no longer made. You can find a few on eBay for $7-$10. The 28SF512 also works, if you remember to put your data in the upper half, but it’s no longer made either. Fortunately there’s still a decent supply of them at resellers for under $5. It’s also possible to make an adapter board for some more common type of flash memory, but that’s probably more effort than this is worth.
Steve
What about the Rom-El – http://store.go4retro.com/products/ROM%252del-23128%7B47%7D23256-FLASH-ROM-Replacement.html
Interesting! Yes, it looks like that should work. There’s no technical data given and the included schematic is too small to read, but for $10 it’s probably worth a shot if you can’t find the 28SF512 or 29C256.
Although now that I think about it- how do you program that thing? You’ve got an AT49F001 flash ROM modified to match the pin-out of a 27C256. I don’t think any EPROM programmer is going to be happy with that. I wish that site offered more technical info to explain how it works.
What about using VirtualBox and pass through-usb support and continue with the programmer you have? A very minimal WinXP with the programming software should run in 512mb of ram or less and mean you don’t have to reboot…
Drag and drop files as well with windows (I think) 🙂
-also, its _very_ nice to see you blogging again 🙂
Hey, that’s a great idea! I think my one copy of XP has reached its activation limit though. Won’t I have to go through all the Microsoft re-activation BS to install XP to the virtual machine?
Sweet, I got the EPROM programming working inside a VM running XP, so no more booting back and forth to use the programmer. Thanks for the suggestion! I dug out an ancient copy of XP that I had and used that for the install/activation.
Small world, I just found one of these myself, bit newer unit it seems from your PCB pics. EPROM sticker has “11233-163 3E2EU370” printed on its label. Unfortunately cats and nice things don’t mix and now mine has a broken VFD. Cut the display out but all it has on the back is “focuslcd.com” on it. Need to send them an email I guess. Newhaven display looks like they sell a pin compatible model but in two different filament voltage specs.
If you wouldn’t mind measuring your displays filament voltage I would be eternally grateful. Such an awesome set of hardware in a compact case with chips you can get actual datasheets for!!! My head nearly exploded when I opened it up. So disappointed it got broken before I could even start working on tracing the circuit out.
Unit was powered on and did work (display and everything) so thats not a issue. However, did you try any of the built in (stock firmware) diagnostic tests on your unit? With mine the memory test just slowly filled the display with what looked like random junk (picked from ram/rom and written raw to display driver?) and would not exit if cancel was held down like the manual said, had to pull power.
Nor could I get any cards to work in the stripe reader test mode.
I can take hi-res pic’s of the PCB’s for comparison (with the VFD cut out already, no traces under it) if interested.
Hi Joe! So your display was working for a while, then broke? Send me an email and I’ll give you the info I have so far. My address is on the about page: http://www.bigmessowires.com/about/
With the original built-in software, my memory test behaved the same as you described. I didn’t try the card reader test (wasn’t aware there was one), but I was able to read cards fine when configured for normal point-of-sale operation.
How hard would it be to repurpose one of these, or something similar, to turn it into a serial terminal?
Ideally the output would come out on the display as well as the printer(since the display is so small). Then how about data input? The keypad is numeric…is there anyway a keyboard could be added?
I think it would be so cool to have this as a try. I’d love to see it sitting next to one of my headless servers printing out messages and receiving commands.
Cheers!