NOTE: All four TNT.ZIP, TNT2.ZIP, TNT3.ZIP and TNT4.ZIP need to be downloaded. After unzipping, copy all the files into the same TNT folder/directory.
This is neccessary because I could not zip all the files into the same ZIP file as TNT.ZIP.
The manual is under further revision and is offered separately, it is not in the .ZIP file.
Use the Manual link to get the latest edition of the TNT User's Manual.
TNTDCC.COM the improved parallel port driver is in the ZIP files
HINT: To display the TNT program full screen you may need to open the properties box in Windows and select FULL SCREEN.
This will display the TNT program the way it is intended to be displayed.
This software is intended to be a simple application suitable for the home or small club layout. It does not offer layout graphics. It does offer suitable operating environment for control from keyboard, joystick throttles, TV IR remote and scenario train operation. It's features include fast clock setup and control, multiple unit consisting,
paged decoder CV programming, and the importation of multiple engine rosters for club night or large collections. Routing switch activation has not been fully completed as I do not have the required hardware to test these functions, but this is available within DCC-MB, and is supported in TNT code. I will be working on this in the near future.
In the mean time, any constructive input will be appreciated.
Create a folder called TNT and unZip and copy all the files into it. All .EXE and roster, railroad, route, and scenario files are all in the same TNT directory.
The TNTDCC.COM parallel port driver is an improved version of DCC-MB.COM and has correct joystick input. It is required for TNT. It is DCC-MB compatible with the exception of the corrected joystick input. For persons with existing software systems using DCC-MB.COM wishing to use TNTDCC.COM, all CALL INTERRUPTS are identicle with the exception of the joystick interrupt.
TNTDCC.COM correctly returns joystick settings (in QBASIC) as:
inregs.ax = 202
CALL INTERRUPT (&H70, inregs, outregs)
'buttons = 0,0,0,0,b3,b2,b1,b0
buttons = outregs.si
button1 = buttons and 1
button2 = buttons and 2
button3 = buttons and 4
button4 = buttons and 8
t1 = outregs.ax 'throttle 1
t2 = outregs.bx 'throttle 2
t3 = outregs.cx
t4 = outregs.dx
The following files are in TNT.ZIP.
TNT.EXE BRUN45.EXE BRT71EFR.EXE ACTIVE.RR JMRI.RR
TNT.EXE (you also need ACTIVE.RR and ACTIVE.RST and all .RTE files to run TNT)
BRUN45.EXE and BRT71EFR.EXE are run time modules for QBASIC
ACTIVE.RR (the default railroad setup)
JMRI.RR (the JMRI default RR setup
The following files are in TNT2.ZIP.
TNTFILE.EXE TNTPRO.EXE IRCODES.TXT SCENE00.SCN SCENE01.SCN STOPGO00.SCN STOPGO01.SCN TNTDCC.COM
TNTFILE.EXE is the file save and load routines
TNTPRO.EXE contains the decoder programmer and utilities
IRCODES.TXT (required to implement RCA universal remote)
TNTDCC.COM is DCC-MB.COM with corrected joystick input.
The scenarios are samples only, they will not accurately run trains on your layout, but will demonstrate scenario operation. Use the [X] key to trigger the detectors, and
remember to toggle them twice to complete an entire off/on/off cycle. To run these sample scenarios type[S] on the main screen to open the scenario menu screen. The type 1 to open the scenario. SCENE00 should come up by default. Just press enter and you will goto
the main screen. Type [F]453 to start the clock then type [S]3 to begin running the scenario. When the detectors are lit up you can trigger them with [X] followed by the detector letter, [A], [B], [C], or [D].
The following files are in TNT3.ZIP
ALLSTR8.RTE TWOLEFT.RTE CNW.RTE ALLEVEN.RTE MILW.RTE 1357.RTE ODDSET.RTE XYZ.RTE IRCODES.TXT TNTJMRI.EXE JMRI.RR
This contains all route files, IR codes, and TNTJMRI.EXE
The following files are in TNT4.ZIP
ACTIVE.RST TEST.RST
These are example roster files to prevent File Not Found messages. They can be editted to suit your needs from within TNT.
LAST UPDATED 4/10/10
Last update includes JMRI interface, improved scenario renaming, corrected DCC-MB joystick,
improved detector routines. The JMRI interface now supports multiple JMRI throttles, TNT/JMRI fast clock, and JMRI recognition of TNT IR LED train position sensors.Use of the simple JMRI programmer is implemented.
2/20/10
This update fixes import problems, delete and assign problems on main screen, and information is provided when changing time and clock speed.
More importantly, efforts are being made to supply an interface to JMRI. This is signifigant.Two versions of TNT now exist. They can be selected from the Utilities menu. Version TNT is the original version. Version TNTJMRI is the version which is to support the Java Model Railroad Interface.
6/15/09
The latest update includes detector support of Stop, Mark, Link and Learn on detectors.
The ability to mimic detector events is done by typing [X] and then the letters A, B, C, or D. To accomplish a full detector event
requires this to be done twice, once to trigger the detector, and once to return it to the previous state.
This toggling of the detector is not neccessary when the train is activating the detector. The [X] key is intended to mimic actual train detection events
for demonstration purposes. This [X] key does not show on the operational main screen, but it is active anytime the main screen is displayed.
4/4/2009
Latest update includes improved roster importation to handle larger collections, visitors or club engine rosters.
The current version offers quick response to control inputs. The latest version now does not require Caps Lock key to be turned on for alphabetical input.
The importation of additional locomotives is fully implemented. The IR speed control now changes speed based upon length of time the button is depressed, where before it was single step.
Many screens are fixed for better presentation, and the [Spacebar] emergency stop display is less cluttered. Users who have downloaded
previous versions should download all the files, because some of the data file structures have changed. Older versions will produce
error messages. This most recent version offers improved keyboard input for those who don't have joysticks or infrared remotes. All trains
are accessable from keyboard.
All trains can now be controlled directly from the keyboard by assigning the throttles to the keyboard. No joystick or IR required, but still
capable of using them by assigning the throttle to Joystick or IR remote.
First posted 3/15/2009
Persons wishing to obtain TNT.BAS source code for TNT should contact the author at Mail to TNT
You will need to acquire QBASIC 4.5 (or later) if you wish to develope this source code.
QBASIC 4.5 and DOS 6.22 are available on the internet at PHATcode. Remember to load QBASIC with the librarys for compilation and interrupt handling.
I make a folder called QB45. I unzip the package to this directory. I load QBASIC with this command line from DOS:
C:\QB45> QB /L QB.QLB
I EDIT a QB45.BAT file to contain this command line to ease start up. Then I just type QB45 at the prompt.
This will load QBASIC with required libraries to enable interrupt functions and compilation of complete .EXE files.
It is easiest to place all the .BAS files in QB45 directory. Also, the ACTIVE.RR, ACTIVE.RST and IRCODES.TXT files
are required to run the TNT program from within interpreted QBASIC. (That is, TNT in QBASIC while it is running in uncompiled form).
The TNT program can be run without the DCC-MB card, joysticks or Infrared TV remote, from the keyboard. This will allow trains
or multiple unit setups to be mimicked. Scenario functions and fastclock can be mimicked in this partially
implemented form.
There is no warranty as to thier function or reliability. However, the program is useful to operate DCC-MB based systems.
They are offered as assistance to understanding the processes required to access DCC-MB.COM software
as provided by the DCC-MB website. They will prove to be valuable in understanding how the CALL INTERRUPT statement works
in QBASIC, and how it can be used to operate DCC-MB from BASIC.
I hope you will find them useful as is, and that you will offer some feedback on how they can be improved. If anyone writes significant additions to this code
I would wish that they give credit where credit is due, and that they make thier improvements and additions available to me and other
users. Send me your code and, if I like it, I'll post it on this site.