TADS 2, TADS 3 and HTML TADS source files.
TADS (Text Adventure Development System) was created by Michael J. Roberts:
Repository created and maintained by Tristano Ajmone, January 2020:
Table of Contents
- Project Structure
- Project Documentation
- About
- Upstream Sources
- Changes
- Contributing
- List of TADS Files Types
- Licenses
- Links
/htmltads/
— HTML TADS sources./scintilla/
— Scintilla v3.0.2 sources for TADS Workbench./t3doc/
— TADS 3 Documentation./t3launch/
— php and MySQL scripts for setting up a TADS Web server./tads2/
— TADS 2 sources./tads3/
— TADS 3 generic sources.CHANGES.md
— list of all changes to the original files.
Repository settings:
.editorconfig
— EditorConfig settings for code styles..gitattributes
— EOL normalization rules and repo stats..gitignore
.travis.yml
— Travis CI settings for code styles validation.validate.sh
— code styles validation script.
Quick links to the documentation files of this repository.
To display documents in HTML format on GitHub, click on their (Live HTML) link; if you're reading this document locally, just click on their file path.
htmltads/notes/changes.htm
— HTML TADS Changelog. (Live HTML)htmltads/notes/compat.htm
— System Compatibility Notes. (Live HTML)htmltads/notes/porting.htm
— Notes on porting HTML TADS. (Live HTML)
tads2/README.md
— TADS 2 README.tads2/msdos/dosver.htm
— MS-DOS/Windows TADS 2 Changelog. (Live HTML)tads2/tadsver.htm
— TADS 2 Changelog. (Live HTML)tads2/unix/README.md
— TADS 2 Unix Sources info.
tads3/README.md
— TADS 3 README.t3doc/t3changes.htm
— TADS 3 Changelog. (Live HTML)tads3/charmap/README.md
— TADS Character Mapping Files.tads3/lib/adv3/changes.htm
— TADS 3 Library Changelog. (Live HTML)tads3/lib/extensions/TCommand/doc/tcommand.htm
— TCommand module documentation. (Live HTML)tads3/portnote.htm
— Porting TADS 3. (Live HTML)tads3/test/README.md
— TADS 3 Test Suite.tads3/tz/db/README.md
— IANA Time Zone Database.tads3/unix/README.md
— TADS 3 Unix Sources info.tads3/unix/test/README.md
— TADS 3 Unix Test Suite.
This repository was created by Tristano Ajmone in January 2020.
This is my personal project and it's not part of the official TADS project. Although I've contacted via email TADS' author Michael J. Roberts before publishing this project (as requested in the TADS license terms) in order to inquire about its permissibility, and received his approval, this does not imply any official endorsement by TADS' author.
Furthermore, any accidental mistakes, inaccuracies or damages that might have occurred to the original sources and assets in this repository are my sole responsibility.
This repository is not intended as a replacement of the official TADS sources available at www.tads.org or the IF Archive, which remain the sole official distributions and should always be consulted and referred to.
The main goals of this repository are:
- Gathering into a single repository all the TADS sources available from TADS website (and elsewhere).
- Enforce code styles consistency across source files to improve collaborative editing via Git.
- Port to GitHub Flavored Markdown all the documentation for better interoperability with GitHub.
All source code files and non-binary assets have been normalized to comply to strict code styles conventions (via EditorConfig). These minor aesthetic tweaks ensure code style consistency across source files of the same type (indentation style, EOL, lack of trailing whitespace, etc.) without affecting code contents or any other meaningful aspect of the source assets. Code consistency greatly improves the collaborative experience on version controlled projects, enforcing standards across different OSs and editors, thus ensuring a clean commit history, free of spurious contents changes relating to whitespace.
My motivation behind this work is to provide a Git compliant codebase of TADS sources that developers on GitHub can fork as a starting point to work efficiently with Git, GitHub and continuous integration services like Travis CI and others.
Hopefully this will serve not only archival purposes but also provide a solid code base for anyone wishing to maintain future TADS updates using Git and GitHub — the tools of choice for collaborative code editing those days.
Although all the tools in the TADS suite are mature and stable, we've recently witnessed an alarming trend to abandon 32-bit support on major OSs, which is putting at serious risks the Interactive Fiction legacy, where most of the tools have historically been released as 32-bit applications.
Ubuntu officially announced in June 2019 that it would drop i386 releases and 32-bit support starting with Ubuntu 19.10. It was only due to the end users' and developers' outrage response, and Steam announcing that it would in turn drop support for Ubuntu, that Canonical backtracked and decided to temporarily extend the "grace period" — but it's only a matter of time before this will come into effect, and other Linux distributions might follow that line too.
With the release of macOS Catalina, in October 2019, Apple has officially dropped support for running 32-bit application on macOS, and removed all 32-bit apps from the Mac App Store. Furthermore, macOS Gatekeeper's increasingly stringent policies are also interfering with many historical IF applications.
This war against 32-bit support on x86-64 OSs could have a devastating impact on the IF legacy tools, since it also affects emulators like Wine. The risk is that we might witness a rapid shift toward the new generation of in-browser IF authoring tools (which seem to proliferate right now) at the expenses of the older (and in my view, more robust) historical tools that are so important for the IF cultural legacy.
The future of Interactive Fiction doesn't seem very bright at the moment, and unless we're prepared to revisit the sources of our beloved authoring tools in order to make them 64-bit compliant, they will soon become unusable (or too hard to use) on some of the major OSs — which amounts to a death sentence in the small niche of IF connoisseurs.
Hence the need to prepare the ground for new works on the sources of tools like TADS, by providing repositories which are strongly Git compliant and ready to be collaboratively edited on platforms like GitHub. So, I hope that this effort of mine might contribute in the direction of preserving these old but beautiful IF authoring and playing tools — TADS 3 being one of the most powerful and elegant IF authoring tools ever created (if not the most powerful and elegant tool).
The above folders were extracted from the following ZIP files, downloaded from TADS website:
folder | extracted from | released | version | description |
---|---|---|---|---|
htmltads/ |
htmltsrc.zip |
2013/05/16 | 2.5.17 | HTML TADS sources. |
scintilla/ |
htmltsrc.zip |
2013/05/16 | 3.0.2 | Scintilla sources. |
t3doc/ |
t3doc.zip |
2016/03/07 | 3.1.3 | TADS 3 Documentation. |
t3launch/ |
t3launch.zip |
2016/03/08 | --- | TADS Web server scripts. |
tads2/ |
tads2src.zip |
2013/05/16 | 2.5.17 | TADS 2 sources. |
tads3/ |
t3_src.zip |
2016/03/08 | 3.1.3 | TADS 3 generic sources. |
Here are a few notes about the upstream sources, for completeness sake.
- With the exception of the
t3doc/
folder (originally nameddoc/
), the above folders have the same names as found inside the ZIP archives. - The
lib/
folder from thet3doc.zip
archive was left out because it contained a single file (lib/adv3/changes.htm
) which is already present insidet3_src.zip
(tads3/lib/adv3/changes.htm
), and the two files are identical. - The archives
htmltsrc.zip
andtads2src.zip
were downloaded from the TADS 2 Source and Patches download page: - The archives
t3doc.zip
,t3launch.zip
andt3_src.zip
were downloaded from the À la carte components section at: - The archives
adv3.zip
andt3_hdr.zip
(available at the À la carte components section) are not mentioned here because their contents are also found insidet3_src.zip
, although organized in different folders structures. Therefore, this repository does contains all the source files available in all the ZIP archives from TADS website.
The source files in this repository are faithful to the originals and didn't undergo any significant changes except for minor aesthetic tweaks for the sake of code styles consistency and better fruition of the project on GitHub.
These changes pertain mostly to code style consistency across files of the same type (EOLs, indentation style, trimming trailing spaces, etc.) and don't affect the source code in any meaningful way.
Some files where renamed for the sake of file naming consistency across the repository, adopting file names which are more in line with GitHub standards and practices:
- All license files were renamed as
LICENSE
. - All plain-text README files were renamed as
README
.
Full detailed information on these changes can be found in a separate dedicated document:
Contributions are welcome as long as they don't alter the original code base. The purpose of this repository is not updating TADS sources and assets but offering a polished code base of reference for projects that need to do so. If you want to update the project files to improve the compilation process for a specific platform or compiler, just fork the repository, rename it as appropriate and go ahead (this is what's this repository is here for).
Areas of contributions include improving the additional markdown documents added to the original sources, in order to simplify navigation of the repository, cross referencing the various sub-projects, and better contextualize that various assets involved.
When submitting a pull request, just ensure that your submitted contents pass the EditorConfig validation test for code consistency. Open Bash, cd to the repository root folder and type:
./validate.sh
To run the validate.sh
script you'll need to install Node.js and EClint:
npm install -g eclint
Also, check that your editor/IDE supports EditorConfig either natively or via a plug-in/package; so you won't have to worry about code styles conventions when editing this project's files.
The project Wiki can be freely edited by anyone, and it's a good place for collecting useful notes on TADS sources, providing tutorials and build instructions, technical specifications and articles, as well as providing links to related projects and useful assets.
Issues can be used to ask questions and freely discuss ideas and proposals regarding TADS sources and were to go from here.
The tables below illustrate all the file types associated with TADS 2 and TADS 3.
Please note that this repository does not contain sample files of every TADS file type (as reported in the in-repo column), and some file types extensions are included for information purposes only.
Also note that some file extensions are common to both TADS 2 and TADS 3, and the tables below will report availability of sample files for each TADS version (e.g. there are no .h
headers for TADS 2 in this repository, only for TADS 3).
Detailed info about these file types can be found in the TADS Media Types article on TADS official website.
ext. | type | description | in-repo |
---|---|---|---|
*.gam |
binary | TADS 2 compiled story file. | none |
*.h |
text | TADS 2/3 header file. | none |
*.rs0 -*.rs9 |
binary | TADS 2 resource file. | none |
*.sav |
binary | TADS 2 saved game. | none |
*.t |
text | TADS 2/3 source code file. | yes |
*.tcm |
text | TADS 2/3 compiled chars mapping table. | none |
*.tcs |
text | TADS 2/3 source chars mapping table. | yes |
ext. | type | description | in-repo |
---|---|---|---|
*.3r0 -*.3r9 |
binary | TADS 3 resource file. | none |
*.h |
text | TADS 2/3 header file. | yes |
*.t3 |
binary | TADS 3 compiled story file. | none |
*.t3m |
text | TADS 3 project file. | yes |
*.t3r |
binary | TADS 3 resource file. | yes |
*.t3tz |
binary | TADS 3 Time-Zones related file. | yes |
*.t3v |
binary | TADS 3 saved game. | none |
*.t3x |
binary | TADS 3 compiled story file. | none |
*.t |
text | TADS 2/3 source code file. | yes |
*.tcm |
text | TADS 2/3 compiled chars mapping table. | yes |
*.tcs |
text | TADS 2/3 source chars mapping table. | yes |
*.tl |
text | TADS 3 library file. | yes |
From TADS website:
TADS is free software, with published source code. It has no ads, upgrade pitches, or other catches. TADS places no restrictions on the games you create with it; you're free to give them away, distribute them as shareware, sell them commercially, or do anything else you want with them. The TADS interpreter can be freely redistributed with your game, even if you publish your game commercially.
TADS 2 FREEWARE SOURCE CODE LICENSE
The TADS 2 source code is Copyright 1991, 2003 by Michael J. Roberts.
The author hereby grants you permission to use, copy, and
distribute this software, if you agree to the following conditions:
1. You must include this license and the copyright notice with
all copies.
2. You may not require or collect a fee for copies of this
software, or any part of this software, that you give to
other people.
3. You may not include this software with any other software
for which a fee is collected.
4. You may not modify this software except as permitted below
(see "derivative works"), and each copy you make and
distribute must be a full and complete copy of the software
you originally received.
5. Anyone to whom you give a copy of this software receives
all of the same permissions that you did under this license
and is subject to all of the same restrictions.
6. You are not allowed to create derivative works, which are
works that contain or are based on all or part of this work,
except under the conditions described below.
7. Any derivative works are subject to this same license.
Derivative Works
----------------
This source code is distributed for the specific purpose of
facilitating the creation of versions of TADS on various computers and
operating systems. All other derivative works are prohibited without
the written permission of the author. Please contact the author if
you have any questions about this or if you'd like permission to
create a derived work.
If you port TADS to a new platform, the author does grant permission
for you to distribute your ported version - I encourage it, in fact.
We ask that you provide your contact information in any distribution
package you create, so that users of your version will know how to
contact you if they have any questions relating specifically to your
version.
TADS 3 FREEWARE SOURCE CODE LICENSE
The TADS 3 source code is Copyright 1998, 2012 by Michael J. Roberts.
The author hereby grants you permission to use, copy, and distribute
this software, if you agree to the following conditions:
1. You must include this license and the copyright notice with
all copies.
2. You may not require or collect a fee for copies of this
software, or any part of this software, that you give to
other people.
3. You may not include this software with any other software
for which a fee is collected.
4. You may not modify this software except as permitted below
(see "derivative works"), and each copy you make and
distribute must be a full and complete copy of the software
you originally received.
5. Anyone to whom you give a copy of this software receives
all of the same permissions that you did under this license
and is subject to all of the same restrictions.
6. You are not allowed to create derivative works, which are
works that contain or are based on all or part of this work,
except under the conditions described below.
7. Any derivative works are subject to this same license.
Derivative Works
----------------
This source code is distributed for the specific purpose of porting
TADS, so that you can run the software on any system of your choosing.
All other derivative works are prohibited without the written
permission of the author. I want to avoid the creation of variations
on the system, because it leads to confusion on the part of users if
there are multiple incompatible flavors floating around. However, if
you have a specific idea in mind, I'd be happy to at least consider
it. Please contact the author if you have any questions about this or
if you would like permission to create a derived work.
If you port TADS to a new platform, the author does grant permission
for you to distribute your ported version - I encourage it, in fact.
I ask that you include your contact information in any distribution
package you create, so that users of your version will know how to
contact you if they have any questions relating specifically to your
version.
HTML TADS FREEWARE SOURCE CODE LICENSE
The HTML TADS source code is Copyright 1997, 2013 by Michael J. Roberts.
The author hereby grants you permission to use, copy, and
distribute this software, if you agree to the following conditions:
1. You must include this license and the copyright notice with
all copies.
2. You may not require or collect a fee for copies of this
software, or any part of this software, that you give to
other people.
3. You may not include this software with any other software
for which a fee is collected.
4. You may not modify this software except as permitted below
(see "derivative works"), and each copy you make and
distribute must be a full and complete copy of the software
you originally received.
5. Anyone to whom you give a copy of this software receives
all of the same permissions that you did under this license
and is subject to all of the same restrictions.
6. You are not allowed to create derivative works, which are
works that contain or are based on all or part of this work,
except under the conditions described below.
7. Any derivative works are subject to this same license.
Derivative Works
----------------
This source code is distributed for the specific purpose of
facilitating the creation of versions of TADS on various computers and
operating systems. All other derivative works are prohibited without
the written permission of the author. Please contact the author if
you have any questions about this or if you'd like permission to
create a derived work.
If you port TADS to a new platform, the author does grant permission
for you to distribute your ported version - I encourage it, in fact.
We ask that you provide your contact information in any distribution
package you create, so that users of your version will know how to
contact you if they have any questions relating specifically to your
version.
License for Scintilla and SciTE
Copyright 1998-2003 by Neil Hodgson <[email protected]>
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation.
NEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
OR PERFORMANCE OF THIS SOFTWARE.
- TADS Media Types — by Andreas Sewe.
- TADS Tools Overview
- TADS Web Play Overview
- TADS 2 Bookshelf
- The TADS 2 Author's Manual — by Michael J. Roberts and Neil K. Guy.
- The TADS Parser Manual — by Michael J. Roberts.
- TADS 3 Bookshelf
- Getting Started in TADS 3 — by Eric Eve.
- Introduction to HTML TADS — by Michael J. Roberts.
- Learning TADS 3 (local PDF) — by Eric Eve.
- TADS 3 Library Reference Manual — by Michael J. Roberts.
- TADS 3 Quick Start Guide — by Eric Eve.
- TADS 3 System Manual — by Michael J. Roberts.
- TADS 3 Technical Manual — by Steve Breslin, Eric Eve and Michel Nizette,
- TADS 3 Tour Guide — by Eric Eve. Michael J. Roberts and Andreas Sewe.