The TRANZ series from Verifone is a line of compact low-cost point-of-sale financial terminals with the TRANZ-330 being arguably the most popular terminal ever deployed. Although now considered "obsolete" by their manufacturer, there remains a very large number of them in use. Their availability on the surplus market in large quantities at low cost continues to make them quite attractive for cost sensitive applications.
Some time ago, DDS was approached to develop a large POS application for the TRANZ series terminals by a major US financial network who was having difficulty finding developers capable of working in the terminals properitary "Terminal Control Language" (TCL). Although I had never used or seen TCL before, I accepted the contract. I quickly discovered that the terminal has virtually no debugging capability, and that the TCL language is universally considered "horrible" by other POS developers, mainly due to it's lack of symbolic capabilities - in short, pretty much nobody else would touch it! (for such a large application).
I preservered and completed the contract ahead of schedule, making my customer very happy. In the process I developed several tools to address the shortcomings of the language and the terminal (as a development platform). I have since received a number of additional large TRANZ/TCL development contracts from my original customer, and as word of my success has spread, I have been getting more and more TRANZ/TCL work from other sources.
I have now been developing Verifone TRANZ/TCL applications for quite a few years, and have achieved a high level of knowledge and experience with this system. I have several applications exceeding 5,000 lines of TCL code (very large for a TCL application), providing advanced features that my customers has previously believed impossible on the TRANZ terminals. Many of my applications are currently deployed across the U.S., and in financial networks worldwide.
Not only have I written a number of large applications in TCL, I have also implemented TCL itself (in 'C') as well as all other aspects of the TRANZ terminal for the purposes of creating a powerful debugging platform. This has provided me with a very detailed knowledge and unique perspective of the TCL system.
My TCL experience and proprietary tools enable me to create reliable large applications in a much shorter timeframe than can be done by other TCL developers.
Dave Dunfield Dunfield Development Services http://www.dunfield.com
Since first posting the information below, I have received a lot of interest in my TRANZ development tools. Based on this feedback, I am making them available for purchase. If you are interested in purchasing the DDS TRANZ Development tools, please contact me.
Here is an evaluation version (300k EXE) of the tools. More details are in the readme file.
The following tools have been developed in-house here at DDS, and provide us with a clear "edge" in the rapid development of reliable applications in TCL:
Provides a completely symbolic implementation of TCL, allowing symbol names to be used for memory locations, constant values and code line labels. All names are resolved to the correct location, value or code offset during compilation. Frees the programmer from having to manually manage the location of items in memory, and makes it very easy to add or remove code/data blocks without reorganizing the entire program. Also provides features to perform conditional compilation, generate embedded time/datestamps, macro commands and much more. TCLP can directly generate a download .UDL file, or a non-symbolic .TCL file suitable for processing with TCLL or the standard Verifone TCLOAD.
TCLL replaces Verifone's TCLOAD and VLOAD utilities and adds more capability. It can download or upload any of the standard TRANZ file formats (.TCL, .UDL and .DTZ) to/from the terminal. It can also convert any of these file formats to any other format. TCLL does not require the Verifone terminal description database - it maintains it's own database, and can build entries for new terminal versions by analyzing an upload from the terminal. When loading, TCLL determines the terminal type from the download request message and reformats the output as required - you don't have to change the source file to load a different terminal version. TCLL can even load a .DTZ file into a TRANZ-UDL terminal (it reformats the .DTZ to UDL records as it loads).
TCLD decompiles a .UDL file into a TCLP (symbolic TCL) source file, performing the following operations:
SIM330 is a PC based simulator for the Verifone TRANZ-330 point of sale terminal, which provides a comprehensive simulation of the terminal keypad/display, cardreader, printer, pinpad, modem/comms as well as the TCL operating system and language interpreter. SIM330 can directly load either a .TCL or a .UDL file, and runs the application exactly as if it were loaded into a physical TRANZ-330 terminal. In addition to the simulation, SIM330 provides extensive debugging and session logging capabilities. (The TRANZ terminal itself, the platform traditionally used by TCL developers has virtually no debugging capabilities).
Simulates a printer 200/250 on the screen of a PC connected to the TRANZ via the download cable. This not only saves paper during test sessions, but it avoids having to move cables when switching between downloading and running the application.
This program implements a dial-up remote download server, which is simpler and easier to set up than Verifone's ZonTALK server. The terminal connects via a dial-up line using the standard ZonTALK client built into the terminal. TRANZDDS answers the call and performs a ZonTALK download session with the terminal, delivering the requested application (UDL file) as either a Full or Partial download.
MDT is a BASE24 message based serial debug terminal, which allows you to perform real-time debugging with request/response messages and host communication, using preconfigured request messages.
Several host simulators have also been developed to allow rapid development and debugging of specific financial processor/network interfaces. I cannot provide details due to the proprietary nature of the systems which were emulated.