V8/usr/man/man6/atc.6

Compare this file to the similar file:
Show the results in this format:

.TH ATC 6
.SH NAME
atc \- air traffic controller
.SH SYNOPSIS
.B /usr/games/atc
.SH DESCRIPTION
.I Atc
presents air traffic on a cursor-controlled screen.
As the controller, you must shepherd it safely through the air space.
At the beginning of the game
.I atc
displays the takeoff/landing direction for each airport and
prompts for the game duration with:
.IP "<\ >"
enter a number from 16 simulated minutes (hard) to 99 (easier)
.PP
Options are
.TP "\w'-m=file  'u"
.BI \-u= file
take airspace description from
.I file
.TP
.BI \-a= name
use the named airspace; default is `Apple1'
.TP
.BI \-s= seed
a number for seeding a 32-bit random number generator
.TP
.BI \-t= time
preset the game duration
.TP
.BI \-p= file
save the play of the game in the named file
.TP
.BI \-m= file
play a `movie' of the saved game
.PP
The initial display of a typical airspace looks like this:
.ne24
.IP
.ta +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC +1vC 
.nf
\&.	0	.	.	.	.	.	.	1	.	.	.	.	.	.	.	.	.	.	.	.	.	.
\&.	.	,	.	.	.	.	.	,	.	.	.	.	.	.	.	.	.	.	.	.	.	.
\&.	.	.	,	.	.	.	.	,	.	.	.	.	.	.	.	.	.	.	.	.	.	2
\&.	.	.	.	,	.	.	.	,	.	.	.	.	.	.	.	.	.	.	.	.	,	.
\&.	.	.	.	.	,	.	.	,	.	.	.	.	.	.	.	.	.	.	.	,	.	.
\&.	.	.	.	.	.	,	.	,	.	.	.	.	.	.	.	.	.	.	,	.	.	.
\&.	.	.	.	.	.	.	,	,	.	.	.	.	.	.	.	.	.	,	.	.	.	.
\&6	,	,	,	,	,	,	,	*	,	,	,	,	,	,	,	,	,	,	,	,	,	3
\&.	.	.	.	.	.	.	.	,	,	.	.	.	.	.	.	,	.	.	.	.	.	.
\&.	.	.	.	.	.	.	.	,	.	,	.	.	.	.	,	.	.	.	.	.	.	.
\&.	.	.	.	.	.	.	.	,	.	.	,	.	.	%	.	.	.	.	.	.	.	.
\&.	.	.	.	.	.	.	.	,	.	.	.	,	,	.	.	.	.	.	.	.	.	.
\&.	.	.	.	.	.	.	.	,	.	.	.	,	,	.	.	.	.	.	.	.	.	.
\&.	.	.	.	.	.	.	.	,	.	.	,	.	.	,	.	.	.	.	.	.	.	.
\&.	.	.	.	.	.	.	.	,	.	,	.	.	.	.	,	.	.	.	.	.	.	.
\&.	.	.	.	.	.	.	.	,	,	.	.	.	.	.	.	,	.	.	.	.	.	.
\&4	,	,	,	,	,	,	,	*	,	,	,	,	,	#	,	,	,	,	,	,	,	5
\&.	.	.	.	.	.	.	,	,	.	.	.	.	.	.	.	.	.	,	.	.	.	.
\&.	.	.	.	.	.	,	.	,	.	.	.	.	.	.	.	.	.	.	,	.	.	.
\&.	.	.	.	.	,	.	.	,	.	.	.	.	.	.	.	.	.	.	.	,	.	.
\&.	.	.	.	,	.	.	.	,	.	.	.	.	.	.	.	.	.	.	.	.	,	.
\&.	.	.	,	.	.	.	.	,	.	.	.	.	.	.	.	.	.	.	.	.	.	9
\&.	.	7	.	.	.	.	.	8	.	.	.	.	.	.	.	.	.	.	.	.	.	.
.fi
.DT
.tc
.LP
% and # denote airports, * and ! denote navigational aids (navaids), and
commas denote airways that link entry/exit `fixes',
airports, and navaids.
Dots are separated by one mile, horizontally, vertically, and diagonally.
An airplane appears as a letter followed by its height in thousands of feet.
.PP
There are two kinds of planes: jets flying 1 mile per tick (15 seconds)
and props flying 1/2 mile per tick.
.PP
You must prevent various misfortunes.
Running out of fuel is serious.
So is a close encounter \- less than 3 miles horizontal separation
at a given altitude.
A plane 
changing altitude is considered to be at both its old and new
altitudes.
A `boundary error',
leaving the airspace at the wrong place, not on an airway, or
at the wrong height, is also serious, but not as likely to be fatal.
.PP
The right side of the screen shows flight plans.
A typical
flight strip looks like:
        Fj 7\->3  4  NE     +
.br
The first letter is the aircraft ID,
the next letter is `j' for jet or `p' for prop.
The next field gives the plane's intentions: this one is
entering at (or is now at) fix 7 and leaving at fix 3.
The origin character tells where
the plane is (or will be when it enters), the destination is a fix
it wishes to go to.
(It will, however, continue on a straight path unless instructed
otherwise.)
Next is the altitude, in this case 4000 feet.
The bearing is a compass direction: N, NE, E, etc.
The final character is the amount of fuel left, `+'
for more than 10 minutes, otherwise
the number of minutes of fuel remaining.
Jets begin with 15 minutes of fuel, props 21.
.PP
At the top of the flight plans are listed planes that will 
appear in the next minute, preceded by how many ticks (0-4)
they are away.
Planes may be
cleared for takeoff as soon as they are listed.
.PP
Commands are terminated by <RETURN>.
<BACK SPACE> may be used to correct errors.
The following kinds of commands can be issued.
.IP $ \n()Mu
End the game (game normally ends after 26 planes)
.PD0
.IP W "\w'ALNW 'u"
Print flight plan for airplane W
.IP XA3
X will change altitude to 3000 feet
.IP QA0
Q will land (go to 0 feet altitude)
.IP HRE
H will turn right until it is heading east
.IP ALNW
A will turn left until it is heading northwest
.IP CTS
C will turn south through the smallest angle
.IP T*7
T will take exit bearing for fix 7 at next navaid
.IP P*%
P will take landing bearing for % at next navaid
.IP DH
D will circle (hold) at next navaid
.IP MR0
Abort pending hold, clearance, or turn for plane M
.IP J?
Cancel delayed commands for J
.IP <SPACE>
Speed up the game by advancing 15 seconds
.PD
.PP
.I Climbing/descending.
Planes climb or descend 1000 feet per mile.
Climbing from 0 is a takeoff; descending to 0 is a landing.
The takeoff/landing direction for each airport is given.
A landing airplane must reach altitude 0 headed in the right
direction 1 mile before the runway.
No further commands may be given after a descent to 0,
as control then
rests with the tower.
If a plane lands
from the wrong direction, it will climb to 1000 feet
and issue a `go around' error.
While changing altitude, a flight strip reads like
        Dp :\->2  7v3  S     9
.br
which means at 7000 feet descending to 3000.
.PP
.I Turning.
Planes turn 45 degrees per mile.
Turns may be left (L) right (R) or to a specified direction (T).
Thus `ULNE'
tells the pilot of plane U to turn to his left until he is heading
northeast.
Changes of direction are indicated in the flight strip:
        Nj :\->5  5  S r W   +
.br
indicates that jet N is heading south, and will turn 90 degrees to the
right.
To cancel the remaining part of a turn, give the command (for plane
N)
`NR0'.
.ig
The Ann Arbor keypad used for +/- PAGE, cursor motion, etc., may be used to
supply the new bearing.  The usual N/S/E/W correspondence is used:
                          ----------------
                          |-PAG|HOME|+PAG|
                          | NW | N  | NE |
                          |----+----+----|
                          |-SCH| UP |+SCH|
                          |  W |STRT|  E |
                          |----+----+----|
                          |LEFT|DOWN|RGHT|
                          | SW |  S | SE |
                          ----------------
..
.PP
.I Navaids.
A plane may be directed to turn at a navaid or hold (circle) there,
Thus command `AH' holds plane A at the next navaid.
The flight strip for a plane that is to hold looks like
        Ap :\->2  5  S *    7
.br
During the hold, the `*' will become `h'.
Every incoming plane that will be landing holds at a
navaid unless the controller gives it other instructions.
.PP
The command `*' clears a plane to turn sharply to any known fix
at the next navaid.
The flight strip for
a plane cleared through a navaid (to fix 5, for example) looks like:
.br
	Hj .->2  5  S *5    +
.br
A holding aircraft given a clearance will continue around to the
navaid, then immediately assume the specified bearing.
Turns cancel clearances.
.ig
8. Designing new airspaces
     The system airspaces are stored in /usr/rand/jim/atc/airspaces on the
VAX, and /mnt/jim/atc/airspaces on the PDP-11/45.  Users may define their
own airspaces and use them (Section 2), or have them included at the end of
the system airspace file.
The coordinate system for an MxN screen is:
                     ---------------------
                     |0,0             M,0|
                     |                   |
                     |                   |
                     |                   |
                     |                   |
                     |                   |
                     |                   |
                     |                   |
                     |                   |
                     |                   |
                     |                   |
                     |0,N             M,N|
                     ---------------------
The different objects on the screen are defined as follows:
Apple1
        size: 15x24
        airway: 1=(0,13) SE 8=(10,23)
        airway: 0=(4,0) S 9=(4,23)
        airway: 2=(14,15) NW 7=(0,1)
        airway: 3=(0,9) NE 6=(9,0)
        airway: 4=(14,7) SW 5=(0,21)
        airport: %=(4,11) S
        airport: #=(10,11) NE
        navaid: *=(4,5)
        navaid: *=(4,17)
The size field is restricted only by the size of the Ann Arbor screen.  The
direction on an airway is the entry direction from the first fix; the
designer must ensure that each airway connects two entry/exit fixes, and
that each entry/exit fix is on an airway.  If more than 20 entry/exit
fixes, 5 airports, or 5 navaids are desired, the program must be recompiled
after the change to EMAX, AMAX, or NMAX respectively in the source file
"ahdr.h".
9. Things to come
     Several additions are planned to the ATC simulation in the near
future.  The most important is definition of the "Clearance Directive
List," a list of absolute locations on the screen and actions to take at
the location.  The user will use this feature to establish plans for
airplanes without having to monitor for completion of each part.
     Another major modification will enable ATC to be run by another
program, using a data transfer protocol designed to minimize the
communication requirements.
     These features will be documented as they are implemented.
..
.PP
.I Delayed commands.
Commands of the form
.br
	@<location>,<command>[,<command> ...]
.br
stack up activities.
A location may be any fix or
a point offset from a fix, e.g.
.br
	@#sw3s2,ARE
.br
which means at the point which can be reached by going three
miles SW from airport #, then two miles S, plane A should begin
a right turn until heading E.
The information command shows all delayed commands pending for that plane.
Note that delayed commands allow one to specify actions more
than one navaid ahead.
.ig
Flow control:
	When a game is started, ATC looks for the file <airspace>.flow
	in the directory /usr/rand/jim/atc to establish a traffic pattern.
        For example, if the airspace is Apple3, it uses the file
	/usr/rand/jim/atc/Apple3.flow .
	The flow file contains one line for each legal path through the
	airspace.  Each line is left-adjusted, and consists of an origin,
	the symbol "->" (for "goes to"), the destination, a space, and
	the relative frequency of this path.  The expected frequency for
	this path is its relative frequency divided by the sum of the
	relative frequencies for all the paths.  Some examples are:
		1->5 5
		1->8 10
		2-># 10
		2->% 5
		2->6 5
		%->% 5
		#->% 10
	Blank lines are ignored (for spacing).
	Any path with no relative frequency is assumed to have frequency 0.
Things to come:
	(1) There will be a capability for canned procedures.
..