AdvSys interpreter and compiler port for Windows

Hello. I have published on the forum my Adventure Definition Language (authors are Ross Cunniff and Tim Brengle) compilation in this thread.

Here I would like to place my AdvSys compiler and interpreter compilation for Windows.

As an interesting fact the AdvSys data file is compatible with Amiga and Windows. There’s no need of two separate files!

This means, that you can compile your AdvSys game on Amiga or Windows (no matter) and such game file will work on both systems.

In ZIP archive you will find advcom.exe (compiler) and advint.exe (interpreter).

Download AdvSys.zip link

For those interested what’s an AdvSys is - it’s a text-adventure system created and released in 1986 by David Betz, with following features:

  1. It’s based on objects and properties,
  2. Objects (and classes of objects) are defined and can extend existing classes, and also override/extend their methods,
  3. The author can define constant values, strings and functions,
  4. Author can add words to vocabulary including articles, adjectives, nouns etc., define synonyms,
  5. Properties can link objects, specify numerical attributes and more,
  6. Author can define global variables,
  7. There are also actions and there’s a simple handler loop, where handlers can be defined as well.

The parser recognizes following forms:

[actor,] verb
[actor,] verb dobjects
[actor,] verb dobjects preposition iobject
[actor,] verb iobject dobjects

Writing a frame-work in AdvSys took me some time though, but once it’s ready - it’s easier to write games.

ADL on the other hand has loads of handful functions. I like both systems.

I hope you find my compilation useful. The program has been tested by people with various Windows versions.

I wrote a couple of short games recently in ADL and AdvSys. My next game should be bigger and more interesting. I should consider learning popular systems like Inform or Adventuron. But the tool is a separate thing - what my games lack is an interesting, planned story-line and attractive puzzles.

I hope my next game will break this or at least bring me closer to the goal. :slight_smile: Cheers.

advint work perfectly under wine. Later I’ll test the compiler.

BTW, the testing of advint uses elves87,which has major coding tricks, e.g. location reuse (!) hence is an excellent testbed, and I recommend it in testing ports of advint.

Tangentially, on elves and mirrors, I swear, I have forgotten that elves87 differentiate between examine myself and examine mirror as in The Portrait

I updated the archive (same link) with:

  • AdvSys instructions and example game from the original archive,
  • And also full original source code of AdvSys in C in a sub-directory.

So if you wish to test advcom as well, it will be easier with the example. If you wish to write own game, docs will be handy.

Note: the source code is original. It doesn’t have my fixes to file input/output library calls.

This code in C is very nice, and if you would like to know how compiler works, including tokens, lexical analysis, dictionary etc., then it’s for you. :slight_smile:

I learned from it back then, but just recently almost two years ago, I learned Compilers also at the University (I studied computer-science). Hopefully getting master degree this year, as my thesis is practically done.

In bocca al Lupo for the Master degree !

anyway, compiles fine the sample, which runs as expected on the 'terp, and, most important, runs also on the Linux binary 'terp and the Linux gargoyle 'terp. so, no source nor story file problems, at least between Linux and wine (= LF vs CR/LF)

Best regards from Italy,
dott. Piergiorgio.

Thank you so much for wishes, and for testing the port.

I’m glad it works without problems. I think that the standard IO library (stdio.h) handles Line Feed (LF) and CR/LF correctly. This is good information.

Amiga uses LF form (just like Unix/Linux), but I convert the text from CR/LF if necessary using Notepad++ on PC or CygnusEd on Amiga. But it’s only for text. The binary game data files, like I mentioned in first post, work OK with Windows and Amiga interpreter executables.

I did a whole bunch of ADVSYS work back in the '90s (including a major fork of it), before Inform really got going, and I had enough momentum once it did that I didn’t switch tracks.

I still have a small patch for one feature, and my rewrite of the standard library, if either of those things would be of interest.

More recently, a month ago, I made an ADL port clean up with all string functions warnings, that appears during compilation, eliminated, plus declarations added for all functions (forum link here: link).

To eliminate these warnings, each string function required a buffer size to be passed, which I also did.

The result is that it compiles seemlessly in today’s C language compiler and runs without any problems.

Nice to hear you did work with AdvSys back then. I like both AdvSys and ADL in favor of ADL, because it has tons of built-in routines and more features.

AdvSys has one big feature - objects and methods, which adds new dimension to it.

I didn’t switch to Inform back then, I wasn’t aware of it.

As of your AdvSys fork, I had no access to the AdvSys source code back then, since it wasn’t included with Amiga archive.

I haven’t thinked about making fork or modifications to it. I always considered it as a fantastic code base to learn the text-adventure compiler and interpreter internals.