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 trouble
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 no-one else would touch it! (for such
a large application).

I preservered and completed the contract ahead of schedule, making my client
very happy. In the process I developed tools to address the shortcomings of
the language and terminal (as a development platform). I've 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
had 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

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.

--- DDS proprietary TRANZ/TCL Development tools ---

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:

-- TCLP: TCL Preprocessor/compiler
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: TCL Loader
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: TCL Decompiler
TCLD decompiles a .UDL file into a TCLP (symbolic TCL) source
file, performing the following operations:
- Control strings are separated into the individual TCL commands and
  output one per line, with a comment describing the TCL operation.
- Skip offsets are converted to TCLP line labels.
- Memory locations which do not conform to defined TCL command syntax
  are output as data strings.
- An optional SYMBOL file can be provided to pre-define memory locations name,
  type (code/data), line labels and block comments.
The combination of TCLL and TCLD allow you to "reverse engineer" an
application extracted from a previously loaded terminal.

-- SIM330: TRANZ330 simulator
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).

-- TPSIM: TRANZ Printer Simulator
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.

-- TRANZDDS: TRANZ Dial-up Download Server
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: Message Debug Terminal
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.

-- Host Simulators
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.

?COPY.TXT 2012-2019 Dave Dunfield.
