Subsequent entries represent trains and services, but an entry beginning with ‘*’ can be used as a comment, and is ignored by the program. When either a blank line is found, or no more lines, the program-readable timetable ends. Entries preceding the program-readable part (marked ‘-‘ in the list) or following (marked ‘+’), can be used for comments and are ignored by the program.
Trains and service entries consist of information and service codes, in a strict format for the program to interpret. Service code buttons insert relevant codes at the cursor position, for convenience, and location names can be selected from the drop-down box similarly if a railway with names is loaded. This information can be entered longhand if preferred.
The first line in an entry for new trains (which will have codes Snt or Snt-sh on the second line) must consist of ‘service reference (ref.) ; description ; starting speed (km/h) ; max. train speed (km/h) ; mass (te) ; max. braking force (te) ; and power (kW)’. One additional optional item is permitted: ‘; maximum signaller control speed’, for the maximum speed the train can run at when it is under signaller control. If this is not set then it defaults to 30km/h. For new services (i.e. not new trains), just the service ref. (plus optional ‘; description’) is required.
The service ref. is usually the headcode (reporting number).
BUT: all linked refs. must be unique except for shuttles which can have two links (this occurs if there are two shuttle segments – ‘out’ and ‘back’ – where one link is from ‘out’ to ‘back’ and the other from ‘back’ to ‘out’ again), so if the same headcode is to be used for different linked services a prefix (own choice up to 4 extra characters) can be added, though in all cases the final four characters must represent a headcode. It is recommended to use different prefixes for separate same-headcode services even when the timetable doesn’t strictly require it, because it is then easier to identify which service is at fault when errors are reported by the syntax or validity checkers.
Headcodes must consist of four consecutive alphanumeric characters, i.e. capital or small letters, or digits. The only restriction is that repeating services with increasing digits between repeats (see below) must contain digits as the last two characters. The standard British headcode consists of ‘digit letter digit digit’, but other systems use different formats.
A list of service components (actions) then follows for each service, consisting of arrivals, departures, splits, joins, changes of direction etc., as per the list of codes indicated. All bar one begin with a time in HH:MM format.
Note that any component may be preceded by ‘W’, e.g. W14:23;Moor Street. This represents a ‘warning’, and when the service reaches this point a warning message is given in red at the top of the display area. Warnings scroll
up in two columns, ten in all, and can be erased by right clicking. Warnings are useful for example to indicate when a route will need to be set in the near future, say when a train is approaching a junction at the end of a route controlled by automatic signals. Warnings are also provided automatically, for example when a train is prevented from entering a section, or being created at a location, because another train is obscuring the starting position.
New trains (code Snt) can be started under signaller control if required. This is done by adding ‘;S’ after the Snt line – e.g. ‘Snt;146-12 147-12;S’. No further lines are permitted for these entries.
Finding element identification numbers (IDs) for ‘Snt’ and other entries that require them is made easier by having the appropriate railway loaded, then temporarily ‘hiding’ the timetable, and examining the track by enabling track information and hovering the mouse over the required element.
Most services may be followed by repeats, consisting of ‘R;mins;digits;num’, where ‘R’ is a marker, ‘mins’ is the number of minutes increase between repeats, ‘digits’ is the last two headcode digit increase between repeats (this may be zero if all headcodes are to be the same, and if not zero then the numbers roll over at 00), and ‘num’ is the number of repeats. A repeat service that has a value other than zero for ‘digits’ must have digits as the last two characters of the headcode. Note that shuttle feeder and finishing services (F-nshs & Sns-fsh) can’t have any repeats, and shuttle services (Snt-sh, Sns-sh, Frh-sh & Fns-sh) must have at least 1 repeat.
The table on the left lists all entries, the program-readable part beginning with START and followed by service references or ‘Comment’ if the entry begins with ‘*’. If this part ends with a blank line it is marked END. Other entries are marked ‘-‘ or ‘+’ for before or after the program-readable part, and contain the first few letters of the text.
The buttons provided are hopefully self explanatory, and each has an associated hint, seen by hovering the mouse over it when it’s active. Cutting, copying and pasting of whole entries is done using the buttons, but sections of an entry can be cut, copied, pasted and deleted by highlighting the relevant section, then pressing ‘CTRL X’ to cut, ‘CTRL C’ to copy, ‘CTRL V’ to paste, or ‘Delete’ to delete. ‘CTRL Z’ can be used to undo any changes. Pasting can be done into new or different entries than those cut or copied from.
When a timetable has been saved and validated (the appropriate railway has to be loaded in order to validate it), it can be exported. This creates two readable timetables, one in service order, similar to the traditional form, and the other in chronological order, useful for assisting in operating the railway. The traditional form is a ‘.csv’ file so that it can be manipulated for better presentation in a spreadsheet program (Microsoft Excel or similar), and the chronological form is in plain text, readable by any word processor or text editor.
The warning about commas within services is because commas are used internally by the program to separate the actions in a service, and if extra ones are added then the actions that they appear in will be split and will not be understandable to the program. The commas separating actions are not visible. Similarly semicolons are used to separate the components of each action, and they must not be used for any other purpose. Semicolons are of course visible so their presence is clearer. Commas and semicolons may be used freely outside services, i.e. in text preceding the start time, in text following all services, and in comments between services.