Changes to /emu/dec_ansi_parser

Date Details
  • Removed description of sequence type dispatch into esc_dispatch and csi_dispatch to clarify the different handling of escape and control sequences.

  • Added clear action to make it explicit when intermediate characters and parameters are reset.

  • Josh has supplied an implementation of this parser, placed in the Public Domain.

  • Added one word to “None of Digital’s terminals define any meaning for received Privacy Message or Application Program Command strings” because the VT420 and VT500 Series can send information on key presses to the host as APC strings.

  • Removed the overlap between ground state's internal actions and those that cause a transition from anywhere to ground.

  • Noted that going to ground state causes intermediate characters and numeric parameters to be forgotten.

  • dispatch needs to know whether the current sequence is an escape sequence or a control sequence, because ESC Final is different from CSI Final. Josh suggested separate esc_dispatch and csi_dispatch actions. This document retains a single dispatch action for both types of sequence by saying that the current sequence type is remembered on entry to the escape or csi entry states.

  • The diagram showed 9C (ST) prompting the execute action in one place, but having no action other than a transition to ground in all other places. The action has been removed, because there is never any work to do for 9C, for reasons explained in the description of the escape state.

  • Removed the short section which covered some implementation trivia on xterm and PuTTY because it inadvertently gave the impression that this document had somehow influenced the parsers of these emulators. My attempted rewording to correct this impression was much more verbose than the trivia, so I’ve removed it entirely!

Thanks to Joshua Haberman for the discussion which prompted the above changes. Some other minor fixes:

  • The state diagram is now maintained with Inkscape rather than Sodipodi, because of the former’s support for markers (proper arrow heads!)

  • Where actions and states are discussed, their names have been linked to their full descriptions.

  • In the description of dcs passthrough, the phrase “soft character in a string” didn't make sense unless you knew I was taking about the control function DECDLD (Downline Load).

  • In ground state, 98 (SOS) was grouped with other C1 controls that had the execute action, when in fact it causes a transition to sos/pm/apc string state.

  • Corrected link to ECMA-48.

  • Corrected dcs_intermediate state in diagram, which showed intermediate characters (20-2F) being ignored, when they should have been collected. Thanks to Jamie Lokier for spotting this.

  • Added a new version of the statechart diagram, in SVG format.

  • Corrected description of the chart to mention event, not on actions.

  • Changed spelling of ‘despatch’ to more common ‘dispatch’.
  • In the description of the state csi entry, amended

    As far as I am aware, only characters 3C (<), 3E (>) and 3F (?) were used by Digital; 3D (=) was used by other terminal manufacturers.


    As far as I am aware, only characters 3D (=), 3E (>) and 3F (?) were used by Digital.

    3C (<) may have been used by other manufacturers, but I can’t be bothered to find examples.

2002-03-11 First published