Skip to content

tajmone/tads-sources

Repository files navigation

TADS Sources build status

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

Repository settings:

Project Documentation

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.

HTML TADS

TADS 2

TADS 3

About

This repository was created by Tristano Ajmone in January 2020.

Disclaimer

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.

Project Goals

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.

Surviving the Death of 32-bit OSs

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).

Upstream Sources

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 named doc/), the above folders have the same names as found inside the ZIP archives.
  • The lib/ folder from the t3doc.zip archive was left out because it contained a single file (lib/adv3/changes.htm) which is already present inside t3_src.zip (tads3/lib/adv3/changes.htm), and the two files are identical.
  • The archives htmltsrc.zip and tads2src.zip were downloaded from the TADS 2 Source and Patches download page:
  • The archives t3doc.zip, t3launch.zip and t3_src.zip were downloaded from the À la carte components section at:
  • The archives adv3.zip and t3_hdr.zip (available at the À la carte components section) are not mentioned here because their contents are also found inside t3_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.

Changes

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:

Contributing

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.

List of TADS Files Types

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.

TADS 2 Files Types by Extensions

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

TADS 3 Files Types by Extensions

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

Licenses

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 License

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 License

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 License

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.

Scintilla License

License for Scintilla and SciTE

Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>

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.

Links

TADS Documentation