Sorry, this section is still under construction!

Contents

Introduction to A-code styles
From Style 1 to Style 2
From Style 1 to Style 10
From Style 10 to Style 11/12

Introduction to A-code styles

The notion of A-code styles came relatively late, when I decided in 1990 to teach myself C by re-implementing the A-code engine using the translate/compile architecture, in place of Platt's original munge/interpret one. I wanted the new implementation to support both Platt's Adv550 and my own Adv660 (a merger of Luckett's and Pike's Adv440 with Adv550). Because there were some incompatibilities between A-code of Adv550 and that of Adv660 (most notably text switch components being counted from 1 or from 0 respectively), it became necessary for a game's code to signal how it is to be treated. Logically enough, Platt's A-code was designated as Style 1. Remembering the many changes my form of Platt's munger/executive underwent before Adv660 was made generally available on the Net, I arbitrarily assigned Style 10 to the final version of Adv660. (Luckily it was not Style 2, because years later it was convenient to assign Style 2 to the re-discovered Goetz's Adv580.) Thus the STYLE major directive, to fix the style of an A-code game. As things stand, style numbers are assigned as follows:

  • Style 1 – the style of Platt's A-code source of Adv550.
  • Style 2 – the style of Goetz's A-code source of Adv580.
  • Styles 3 to 9 – lost in the mists of time, having existed briefly in the process of my merging of Adv440 and Adv550 into Adv660.
  • Style 10 – the style of my A-code source of Adv660.
  • Style 11 – the initial style of my Adv770.
  • Style 12 – the current A-code style.

Taking Platt's A-code as the base, let's look at changes brought in by different styles, bearing in mind that only the style 1 to style 10 transition is of historical significance.


From Style 1 to Style 2

The style of Goetz's Adv580 A-code differs very little from Style 1.

  • It relaxes in-line comment convention. While Style 1 in-line comments must start with the open brace character '{', Style 2 also permits square '[' and round '(' brackets as in-line text delimiters.
  • It introduces CIF and CENDIF major directives in order to use selectively normal or "bowdlerised" versions of some texts.

From Style 1 to Style 10

Text switch modification and generalisation:
Switch components are counted from zero rather than from one.
Switches are permitted in all texts, including object and place descriptions.
Multiple long object/place descriptions (%) deprecated - replaced by text switches.

Major directive changes:
Deprecated LIST, NOLIST and XREF.
Added NOISE (and preferred) as a synonym to NULLWORD.
Added PROC (and preferred) as a synonym to LABEL.
Added FRAGMENT.
Deprecated SYNONYM in favour of OBJECT name list.

Minor directive changes: Added DOALL and FLUSH for handling GET/DROP ALL.
Added IFHERE, IFINRANGE and IFIS.
Added ITERATE, QUIP, NEGATE, CHOOSE and RANDOMISE.
Deprecated ITLIST (synonym of ITOBJ).
Deprecated AT, HAVE and NEAR.
Deprecated EOF, EOI, EOR (subsumed into FIN).
Deprecated NAME and VALUE (subsumed into SAY).

Player interface
Compound commands.
All player vocabulary words automatically abbreviated to the minimal unambiguous length.
GET/DROP ALL enabled.
AGAIN enabled. Object detailed description category (&).


From Style 10 to Style 11/12

Since enhancements that came in under style 12 are also retrospectively available in style 11, it makes sense to lump 11 and 12 ogether for the purposes of compaing the to style 10. The change from 11 to 12 was dictated by a major surgery on the acdc A-code to C translator to make it operate in two passes instead of one. The pupose was to allow game entities to be referred to by game code before the relevant entity declarations. This is particularlly handy in debugging via "wizard mode" code optionally included in game source via the INCLUDE? major directive. See a separate document on debugging A-code games.

Major directive changes:
Added ARRAY, STATE, CONSTANT, FLAGS

Minor directive changes:
Added FAKEARG and FAKECOM
Added OTHERWISE
Added IFLE and IFNE
Added IFHTML, IFTURN and IFCGI
Added IFDOALL and IFTYPED
Added LOCAL
Added UNDO and REDO
Added RESAY and TIE
Added RESPOND
Added SAVE and RESTORE
Added INTERSECT
Added VERBATIM and VOCAB
Deprecated BIT, BIS, BIC in favour of IFFLAG, FLAG and UNFLAG respectively

Deprecated KEYWORD, ANYOF and NEAR in favour if IFKEY, IFANY and IFNEAR

Further functionality added:

  • ITOBJ takes flag and state supplementary arguments.
  • Multiple args for IFAT, IFIS, IFLOC
  • Multiple args for FLAG, UNFAG.
  • In-line texts.
  • CGI mode.
  • Library mode.
  • Local variables, and procedure arguments.
  • Context and undo mechanisms.
  • Typo correction, output word scanning.
  • UTF8 support.

Back to the documentation index
To the Mipmip home page
Feel free to leave a comment!
Mike Arnautov (27 March 2023)