MINIACFS PROGRAMMER's GUIDE

1. Information Sources
   1.1 Acronyms
   1.2 Users Guide
   1.3 Frequently Asked Questions (FAQ)
2. Architecture
   2.1 Client/Server
   2.2 Interprocess Communication
   2.3 Distributable
3. Processes
   3.1 ACFS - Advanced Concepts Flight Simulator
   3.2 ACP - Aircraft Control Panel
   3.3 AST (I/O System)
   3.4 CDS - Colorado Data Systems
   3.5 CDU - Control Display Unit
   3.6 FMC - Flight Management Computer
   3.7 MCP - Mode Control Panel
   3.8 NDCP - Navigation Display Control Panel
   3.9 PFD - Primary Flight Display
   3.10 SFD - Secondary Flight Display
4. Procedures
   4.1 Compiling and Linking
   4.2 Modifying Global Variables
   4.3 Changing ACFS Model Scheduling
   4.4 Creating Datalink Messages
   4.5 Changing Datalink Autoloading Scripts
   4.6 Changing Navigational Data
       4.6.1 ACFS Navigational Data
       4.6.2 PFD Navication Data
       4.6.3 FMC Navigational Data
   4.7 Useful Commands
   4.8 Running Real-Time
   4.9 Compiling miniACFS under IRIX 6.2

1. Information Sources

1.1 Acronyms

See acronyms.doc for a list of acronyms and corresponding definitions.

1.2 Users Guide

See user_guide.doc for information regarding:

   * An introduction to the ACFS, miniACFS, and SSS.
   * Setup instructions regarding system configuration, installation, 
     and configuration options.
   * Operation instructions for starting, shutting down, and freezing 
     the simulation, as well as running processes in standalone and 
     modifying simulation display configurations.
   * Scenario constuction tips in regards to initial positions, datalink, 
     CDU scripts, various ATC simulation options, and data collection.
   * Flying examples including programming the FMS and taking off.

1.3 Frequently Asked Questions (FAQ)

See faq.doc for a list of frequently asked questions and their corresponding 
answers.

2. Architecture

2.1 Client/Server

The architecture of the miniACFS is based upon a client/server relationship. 
The main ACFS process (modsch) contains the aircraft models and is designated 
as the client. The PFD, SFD, AST, MCP, and FMC processes are designated as 
servers. The AST process in turn also acts as a client for the NDCP1, NDCP2, 
ACP1, ACP2, ACP3, and ACP4 server processes. The ACFS sends the AST the 
hostnames for where the NDCP and ACP processes will be running, so that the 
NDCP and ACP processes can run on different machines. In a similar fashion, 
the FMC process also acts as a client to the CDS server process, which in 
turn acts as a client to the CDU1 and CDU2 server processes. The ACFS sends 
the FMC the hostnames for where the CDS and CDU processes will be running, 
and the FMC passes the hostnames for the CDU processes along to the CDS. 
(See Processes section for more information regarding the function of these 
separate processes). 

Servers are started before clients and they listen for a connection request. 
Clients make a connection request and if a server is listening on the proper 
port, will connect with the client. Then the client and server can pass data 
using a socket connection.

2.2 Interprocess Communication

Several means of Interprocess communication (ICP) is used in the miniACFS 
for sending data back and forth between processes. As mentioned above, 
the major method of IPC is the use of sockets. However shared memory 
is used by the FMC to share data between its two processes. In addition, 
messages are used by the PFD process to send audio filenames to a forked 
process playing audio files.

Several means of Interprocess communication (IPC) is used in the miniACFS 
for processes to send data back and forth. The major IPC is the socket.  
As mentioned above, client and server processes use sockets to establish 
communication paths. Shared memory is used by the Flight Management Computer 
server to share data between its two processes. IPC Messages is used by the 
PFD process to send audio filenames to a forked process playing audio files.

2.3 Distributable

Using the client/server architecture with socket interprocess communication 
makes it very easy to distribute the miniACFS processes over one or more 
SGI workstations. Since the miniACFS can have many different displays being 
shown at one time, using many workstations allows the displays to be shown 
on many different monitors in order to avoid display overlap or having to 
revert to reduced display sizes or iconification. A distributed architecture 
also allows computation to be distributed over several processors, thus 
allowing an increased rate in the real-time execution of various models.

3. Processes

3.1 ACFS - Advanced Concepts Flight Simulator

The ACFS process is the major module in which the aircraft models are 
executed. The ACFS process communicates directly with the FMC, MCP, PFD, 
and SFD processes, and communicates with the ACP and NDCP processes via 
the AST process. The executable is "modsch" and runs at 30 HZ.

3.1.1 ACFS Command Files

ACFS command files are located in the acfs/command directory. The following 
describes select command files:

   * makefile - "makeacfs" command file

3.1.2 ACFS Data Files

ACFS data files are located in the acfs/data directory. The following 
describes select data files:

   * acfs_config.dat - ACFS Configuration data file
     Data file which contains ACFS configuration options including 
     "server_hosts_option" and "ecm_option".

   * datalink.dat - Datalink message data file
     ASCII datalink definition file which contains the content 
     for "canned" datalink messages.

   * mat.dat - Model Attribute Table data file
     ASCII model attribute table file which contains the attributes 
     (ex. scheduling) for each model.

   * navdat03.dat - Navigation facility data file 3
     Data file which contains Navigational Facility Data Records 
     for a specified disk file (1 of 8) from NAVDAT01 thru NAVDAT08. 
     [Note: the miniACFS simulation currently only utilizes Navigational 
     Facility file 3].

   * server_hosts.dat - Server Hosts data file
     Data file which contains the host names for each server 
     (to be used when the "server_hosts_option" is invoked).

   * gc.dat - Global Common data file
     Data file contains the list of all structures/commons in the 
     global common.

3.1.3 ACFS Log Files

ACFS log files are located in the acfs/log directory. However, in addition, 
system log messages are written to /usr/adm/SYSLOG.

3.1.4 ACFS Output Files

ACFS data collection output files are located in the acfs/output directory. 
However, data collection output files can be re-directed to an alternative 
directory by setting the "OUTPUT_DIR" environment variable (in .miniACFSrc). 
The data collection output filename is in the format "DC_MMDDYY_HHMM.S#" 
where "MMDDYY" is the month, day and year, "HHMM" is the time in hours and 
minutes, and "#" is the subject number entered in when starting the 
simulation (ex. "DC_020597_0938.S01").

3.1.5 ACFS Executables

ACFS executables are located in the acfs/program directory. The following 
describes the executables:

   * modsch - Model Scheduler
     Main miniACFS executable which runs the aircraft models.
     This executable is normally run from the "sim" script, however 
     it can be also be run by typing in "modsch" from the 
     acfs/program directory.

   * ddlconvert - Data Dictionary Lanuage (DDL) Conversion utility
     Utility which processes the *.ddl files and generates the 
     necessary global common include files. To run the utility, type in 
     "ddlconvert <common name>" to process a single structure/common, 
     or "ddlconvert" to process all structures/commons, from the 
     acfs/program directory.

   * dl_create_db - Datalink database utility
     Utility which reads and parses the ASCII datalink definition 
     file ("datalink.dat") and creates the binary database for 
     real time operations. To run the utility, type in "dl_create_db" 
     from the acfs/program directory.

   * mat_create_db - Model Attribute Table database utility 
     Utility which reads and parses the ASCII model attribute 
     table file ("mat.dat") and creates the binary database for 
     real time operations. [Note: To run the utility, type in 
     "mat_create_db" from the acfs/program directory].

   * navcom - Navigation facilities Compiler
     This utility processes Navigational Facility Data Records
     for a specified disk file (1 of 8) from NAVDAT01 thru NAVDAT08 
     and creates "compiled" files NAVFIL01 thru NAVFIL08. Data for 
     individual facilities may be added, revised or deleted.  
     Additionally, listings may be requested in one of six logical 
     orderings. [Note: the miniACFS simulation currently only utilizes 
     Navigational Facility file 3]. To run the utility, type in "navcom" 
     from the acfs/program directory and then enter "3" and "A" at the 
     associated prompts. Run "navcom" prior to running "navbld".
 
   * navbld - Navigation facilities pre-select file Build utility
     This utility reads one of the 8 Navigational Facilities files 
     (as specified) and builds the corresponding pre-selected data 
     file for real-time access. [Note: the miniACFS simulation 
     currently only utilizes Navigational Facility file 3]. To run 
     the utility, type in "navbld" from the acfs/program directory. 
     Run "navcom" prior to running "navbld".

3.1.6 ACFS Scenario Files

ACFS scenario files are located in the acfs/scenario directory. Additional 
files can be created in order to establish alternative initial position (IP) 
points, or the trigger scenario events (such as malfunctions). Scenario files 
are loaded at run time when prompted for the "Scenario id".

3.1.7 ACFS Include Files

ACFS include files are located in the acfs/support directory. The following 
describes select include files:

   * <common name>.ddl
     Contains the Data Dictionary Language definition of each variable 
     within the structure/common.

   * model.stc
     Defines a table of real-time model names and the corresponding 
     address of each model.

3.1.8 ACFS Source Code Directories

ACFS source code directories are located in the acfs/work directory. The 
following describes the source code directories:

   * acaws - Advisory Caution & Warning System
     Contains source code for Advisory Caution & Warning System.

   * acsys - Aircraft Systems
     Contains models for Air Data Computer, Adverse Weather System, 
     Electrical System, Environment System, Fire Protection System, 
     Fuel System, Ground Proximity Warning System, Landing Gear System, 
     Lighting System, and Propultion System (Engines).

   * afs - Auto Flight System
     Contains models of the Auto Flight System's Signal Processor, 
     Mode & Engage Logic, Pitch Control Laws, Roll Control Laws, 
     Yaw Control Laws, Pitch Flight Director, Roll Flight Director, 
     and Automatic Stabilizer Trim. (Note: Does not apply to the SSS).

   * asl - Aeronautical Systems Lab
     Contains AFS and ATS replacement logic. (Note: Only applies to 
     the SSS).

   * ast (I/O system)
     Contains source code for communicating with the AST process.

   * atc - Air Traffic Control
     Contains source code for communicating with Air Traffic Control 
     system (such as ASL's pseudo plane/ATC system and CTAS).

   * ats - Auto Throttle System
     Contains models of the Auto Throttle System's Signal Processor, 
     Mode & Engage Logic, Thrust Management System, and Throttle Drive 
     Control Laws. (Note: Does not apply to the SSS).

   * chklst - Checklist System
     Contains source code for Checklist System.

   * dcs - Data Collection System
     Contains source code for the Data Collection System.

   * ddl - Data Dictionary Language
     Contains source code for utility which processes Data Dictionary 
     Language data files and generates the associated global common 
     include files. (Generates "ddl_convert").

   * dl - Datalink
     Contains source code for processing datalink messages. 
     (Generates "dl_create_db").

   * dssprc - Data Source Select Processsing
     Contains source code for various Data Source Select Processing 
     such as ADC and IRS Transfer Switch Processing and processing 
     for MLS and VOR/ILS Navigation Mode.

   * eos - Experimentor Operator System
     Contains source code for Experimentor Operator System which 
     provides interface for simulation control.

   * exec - Executive
     Contains source code for model scheduler (modsch). (Generates 
     "modsch" and "mat_create_db").

   * fcsurf - Flight Control Surfaces
     Contains source code for modeling Elevator, Ailerons, Rudder, 
     Stabilizer, Flaps & Slats, Spoilers, Aileron Trim and Rudder 
     Trim.

   * fltenv - Flight Environment
     Contains source code for modeling Atmosphere, Aerodynamic 
     Coefficients, Weight & Inertia, Flight Dynamics, and Ground 
     Dynamics.

   * fms - Flight Management System
     Contains source code for communicating with the FMC process.

   * gc - Global Common
     Contains source code for mapping into the global common.

   * mcp - Mode Control Panel
     Contains source code for communicating with the MCP process.

   * navaids - Navaids
     Contains source code for modeling Navigation Receivers, 
     Inertial Reference System, ILS, VOR, DME, Marker Beacon, 
     and Radar Altimeter.

   * navdb - Navigational Database
     Contains source code for utility which generates the 
     navigational database. (Generates "navcom" and "navbld").

   * panel - Comm/Nav Panel
     Contains source code for Comm/Nav Panel Logic and Comm/Nav 
     Management.

   * parser - Parsing Utility
     Contains source code for file parsing utilities.

   * pfd - Primary Flight Display
     Contains source code for communicating with the PFD process.

   * scenario - Scenario
     Contains source code for processing scenario data files.

   * sec - Secondary Task
     Contains source code for communicating with the Secondary 
     Task process.

   * sfd - Secondary Flight Display
     Contains source code for communicating with the SFD process.

   * tcas - Traffic Alert and Collision Avoidance System
     Contains source code for modeling TCAS II logic.

   * util - Simulation Utilities
     Contains source code for various simulation utilities.

3.2 ACP - Aircraft Control Panel

The ACP process displays various Aircraft Control Panels, which provide pilot 
access to such control devices as throttles, flaps, speed brakes, and landing 
gear. The ACP process communicates with the ACFS (or modsch) process via the 
AST process. The source code and associated files are located under the "acp" 
directory. The executables are "acp1_exec", "acp2_exec", "acp3_exec", and 
"acp4_exec", which can be configured to display any combination of control 
devices on up to four different computer screens.

3.2.1 ACP Command Files

ACP command files are located in the acp/command directory. The following 
describes select command files:

   * makefile - "makeacp" command file

3.2.2 ACP Data Files

ACP data files are located in the acp/data directory. The following 
describes select data files:

   * acp_config.dat - ACP Configuration data file
     Data file which contains ACP configuration options including 
     "FLAPS_acp#", "FLAPS_origin", "FLAPS_scale_factor", 
     "GEAR_acp#", "GEAR_origin", "GEAR_scale_factor",
     "THROTTLES_acp#", "THROTTLES_origin", "THROTTLES_scale_factor", 
     "WARN1_acp#", "WARN1_origin", "WARN1_scale_factor", 
     "WARN2_acp#", "WARN2_origin", "WARN2_scale_factor", 
     "ENGFIRE_acp#", "ENGFIRE_origin", "ENGFIRE_scale_factor", 
     "NAVCOMM_acp#", "NAVCOMM_origin", "NAVCOMM_scale_factor", 
     and "sound_on".

3.2.3 ACP Include Files

ACP include files are located in the acp/include directory.

3.2.4 ACP Log Files

ACP log files are located in the acp/log directory.

3.2.5 ACP Executables

ACP executables are located in the acp/program directory. The executables 
"acp1_exec", "acp2_exec", "acp3_exec", and "acp4_exec" are normally run 
from the "sim" script, however they can also be run from the acp/program 
directory either as a client (ex. "acp1_exec c") or in standalone mode 
(ex. "acp_exec a").

3.2.6 ACP Source Code Directories

ACP source code directories are located in the acp/work directory.

3.3 AST (I/O System)

The AST process simulates a Link AST input/output system. The AST process 
provides the communication interface between the ACFS (or modsch) process 
and the ACP process, the NDCP process, and optional graphical or hardware 
joystick control devices. The source code and associated files are located 
under the "ast" directory. The executable is "ast_exec".

3.3.1 AST Command Files

AST command files are located in the ast/command directory. The following 
describes select command files:

   * makefile - "makeast" command file

3.3.2 AST Data Files

AST data files are located in the ast/data directory. The following 
describes select data files:

   * ast_config.dat - AST Configuration data file
     Data file which contains AST configuration options including 
     "flybox_enable", "softstick_enable", "STICK_origin", and 
     "scale_factor".

   * calibrate.dat - Joystick Calibration data file
     Data file which contains the offset, max, and min data 
     to calibrate the left and right joysticks. This file 
     can be auto-generated by running the ast process 
     in standalone (ex. "ast_exec a") and pressing the 
     trigger at maximum and minimum deflection for each 
     axis, and then pressing the trigger again at zero 
     deflection (for each joystick).

3.3.3 AST Include Files

AST include files are located in the ast/include directory.

3.3.4 AST Log Files

AST log files are located in the ast/log directory.

3.3.5 AST Executables

AST executables are located in the ast/program directory. The executable 
"ast_exec" is normally run from the "sim" script, however it can also be 
run from the ast/program directory either as a client (ex. "ast_exec c") 
or in standalone mode (ex. "ast_exec a").

By running the AST executable in standalone mode (ex. "ast_exec a") it 
is possible to calibrate the joysticks by pressing the trigger at maximum 
and minimum deflection for each axis, and then pressing the trigger again 
at zero deflection (for each joystick).

3.3.6 AST Source Code Directories

AST source code directories are located in the ast/work directory.

3.4 CDS - Colorado Data Systems

The CDS process simulates a Colorado Data Systems input/output system. The 
CDS process provides the communication interface between the FMC process 
and the CDU process. The source code and associated files are located under 
the "cds" directory. The executable is "cds_exec".

3.4.1 CDS Command Files

CDS command files are located in the cds/command directory. The following 
describes select command files:

   * makefile - "makecds" command file

3.4.2 CDS Data Files

CDS data files are located in the cds/data directory. 

3.4.3 CDS Include Files

CDS include files are located in the cds/include directory.

3.4.4 CDS Log Files

CDS log files are located in the cds/log directory.

3.4.5 CDS Executables

CDS executables are located in the cds/program directory. The executable 
"cds_exec" is normally run from the "sim" script, however it can also be 
run from the cds/program directory either as a client (ex. "cds_exec c") 
or in standalone mode (ex. "cds_exec a").

3.4.6 CDS Source Code Directories

CDS source code directories are located in the cds/work directory.

3.5 CDU - Control Display Unit

The CDU process displays the Control Display Unit, which provides pilot access 
to the FMC. The CDU process communicates with the FMC process via the CDS 
process. The source code and associated files are located under the "cdu" 
directory. The executables are "cdu1_exec" and "cdu2_exec", which displays 
the Captain's CDU and the First Officer's CDU respectively.

3.5.1 CDU Command Files

CDU command files are located in the cdu/command directory. The following 
describes select command files:

   * makefile - "makecdu" command file

3.5.2 CDU Data Files

CDU data files are located in the cdu/data directory. The following 
describes select data files:

   * cdu_config.dat - CDU Configuration data file
     Data file which contains CDU configuration options including 
     "CDU1_origin", "CDU2_origin", "scale_factor", and "sound_on".

3.5.3 CDU Include Files

CDU include files are located in the cdu/include directory.

3.5.4 CDU Log Files

CDU log files are located in the cdu/log directory.

3.5.5 CDU Executables

CDU executables are located in the cdu/program directory. The executables 
"cdu1_exec" and "cdu2_exec" are normally run from the "sim" script, however 
they can also be run from the cdu/program directory either as a client 
(ex. "cdu1_exec c") or in standalone mode (ex. "cdu1_exec a").

3.5.6 CDU Source Code Directories

CDU source code directories are located in the cdu/work directory.

3.6 FMC - Flight Management Computer

The FMC process simulates the Flight Management Computer, which provides 
such features as flight planning, performance, navigation, guidance and 
control. The FMC process communicates directly with the ACFS (or modsch) 
process, and communicates with the CDU process(es) via the CDS process. 
The source code and associated files are located under the "fmc" directory. 
The executables are "fmc_exec" and "aproc", which contain the foreground 
process and background process respectively.

3.6.1 FMC Command Files

FMC command files are located in the fmc/command directory. The following 
describes select command files:

   * makefile - "makefmc" command file

3.6.2 FMC Data Files

FMC data files are located in the fmc/data directory. 

3.6.3 FMC Log Files

FMC log files are located in the fmc/log directory.

3.6.4 FMC Executables

FMC executables are located in the fmc/program directory. The executable 
"fmc_exec" is normally run from the "sim" script, however it can also be 
run from the fmc/program directory either as a client (ex. "fmc_exec c") 
or in standalone mode (ex. "fmc_exec a"). The "fmc_exec" executable runs 
the "aproc" executable.

3.6.5 FMC Include Files

FMC include files are located in the fmc/support directory.

3.6.6 FMC Source Code Directories

FMC source code directories are located in the fmc/work directory.

3.7 MCP - Mode Control Panel

The MCP process displays the Mode Control Panel, which provides pilot access 
to automated features such as heading, altitude, and speed control. The MCP 
process communicates with the ACFS (or modsch) process. The source code and 
associated files are located under the "mcp" directory (see MCP Directory 
Structure). The executable is "mcp_exec".

3.7.1 MCP Command Files

MCP command files are located in the mcp/command directory. The following 
describes select command files:

   * makefile - "makemcp" command file

3.7.2 MCP Data Files

MCP data files are located in the mcp/data directory. The following 
describes select data files:

   * mcp_config.dat - MCP Configuration data file
     Data file which contains MCP configuration options including 
     "MCP_origin", "scale_factor", and "sound_on".

3.7.3 MCP Include Files

MCP include files are located in the mcp/include directory.

3.7.4 MCP Log Files

MCP log files are located in the mcp/log directory.

3.7.5 MCP Executables

MCP executables are located in the mcp/program directory. The executable 
"mcp_exec" is normally run from the "sim" script, however it can also be 
run from the mcp/program directory either as a client (ex. "mcp_exec c") 
or in standalone mode (ex. "mcp_exec a").

3.7.6 MCP Source Code Directories

MCP source code directories are located in the mcp/work directory.

3.8 NDCP - Navigation Display Control Panel

The NDCP process displays the Navigation Display Control Panel, which provides 
pilot access to control over the HSI display (see PFD). The NDCP process 
communicates with the ACFS (or modsch) process via the AST process. The source 
code and associated files are located under the "ndcp" directory. The 
executables are "ndcp1_exec" and "ndcp2_exec", which displays the Captain's 
NDCP and the First Officer's NDCP respectively.

3.8.1 NDCP Command Files

NDCP command files are located in the ndcp/command directory. The following 
describes select command files:

   * makefile - "makendcp" command file

3.8.2 NDCP Data Files

NDCP data files are located in the ndcp/data directory. The following 
describes select data files:

   * ndcp_config.dat - NDCP Configuration data file
     Data file which contains NDCP configuration options including 
     "NCP1_origin", "NDCP2_origin", "scale_factor", and "sound_on".

3.8.3 NDCP Include Files

NDCP include files are located in the ndcp/include directory.

3.8.4 NDCP Log Files

NDCP log files are located in the ndcp/log directory.

3.8.5 NDCP Executables

NDCP executables are located in the ndcp/program directory. The executable 
"ndcp1_exec" and "ndcp2_exec" are normally run from the "sim" script, 
however they can also be run from the ndcp/program directory either as 
a client (ex. "ndcp1_exec c") or in standalone mode (ex. "ndcp1_exec a").

3.8.6 NDCP Source Code Directories

NDCP source code directories are located in the ndcp/work directory.

3.9 PFD - Primary Flight Display

The PFD process displays the Primary Flight Display, which consists of 
an Attitude Direction Indicator (ADI) and a Horizontal Situation Indicator 
(HSI). The PFD process communicates with the ACFS (or modsch) process. 
The source code and associated files are located under the "pfd" directory. 
The executables are "pfd1_exec" and "pfd2_exec", which display the Captain's 
PFD and the First Officer's PFD respectively.

3.9.1 PFD Command Files

PFD command files are located in the pfd/command directory. The following 
describes select command files:

   * makefile - "makepfd" command file

3.9.2 PFD Data Files

PFD data files are located in the pfd/data directory. The following 
describes select data files:

   * pfd_config.dat - PFD Configuration data file
     Data file which contains PFD configuration options including 
     "PFD1_origin", "PFD2_origin", and "scale_factor".

3.9.3 PFD Include Files

PFD include files are located in the pfd/include directory.

3.9.4 PFD Log Files

PFD log files are located in the pfd/log directory.

3.9.5 PFD Executables

PFD executables are located in the pfd/program directory. The executable 
"pfd1_exec" and "pfd2_exec" are normally run from the "sim" script, 
however they can also be run from the pfd/program directory either as 
a client (ex. "pfd1_exec c") or in standalone mode (ex. "pfd1_exec a").

3.9.6 PFD Source Code Directories

PFD source code directories are located in the pfd/work directory.

3.10 SFD - Secondary Flight Display

The SFD process displays the Secondary Flight Display, which provides 
information on aircraft systems as well as contains an automated checklist 
system. The SFD process communicates with the ACFS (or modsch) process. 
The source code and associated fils are located under the "sfd" directory. 
The executables are "sfd1_exec", "sfd2_exec", and "sfd3_exec", which 
displays the Captain's SFD, the engine/EICAS SFD, and the First Officer's
SFD respectively.

3.10.1 SFD Command Files

SFD command files are located in the sfd/command directory. The following 
describes select command files:

   * makefile - "makesfd" command file

3.10.2 SFD Data Files

SFD data files are located in the sfd/data directory. The following 
describes select data files:

   * sfd_config.dat - SFD Configuration data file
     Data file which contains SFD configuration options including 
     "SFD1_origin", "SFD2_origin", "SFD3_origin", and "scale_factor".

3.10.3 SFD Include Files

SFD include files are located in the sfd/include directory.

3.10.4 SFD Log Files

SFD log files are located in the sfd/log directory.

3.10.5 SFD Executables

SFD executables are located in the sfd/program directory. The executable 
"sfd1_exec", "sfd2_exec", and "sfd3_exec" are normally run from the "sim" 
script, however they can also be run from the sfd/program directory either 
as a client (ex. "sfd1_exec c") or in standalone mode (ex. "sfd1_exec a").

3.10.6 SFD Source Code Directories

SFD source code directories are located in the pfd/work directory.

4. Procedures

4.1 Compiling and Linking

4.1.1 Compiling the Entire MiniACFS

To compile the entire miniacfs, run the 'makeall' script
in the command directory.

4.1.2 Compiling Individual Processes

Make aliases exist for each process. The alias names begin with "make" and 
end with the name of the process. For example, to compile the acfs (modsch) 
process, type "makeacfs" or to compile the acp process, type "makeacp".

Another compilation method is to run the make aliases within the process
directory. This involves running an alias to setup a make alias. The name
of this alias is the process name suffixed with "_alias". For example, 
"acfs_alias" or "pfd_alias".  Then the new "make" alias should be run. The 
make alias should be run in the process work subdirectory to create the object
library and then in the work/exec directory to create the program. 

For example, a source file in the pfd/work/display directory was modified. 
Run "pfd_alias". Then run "make" in the pfd/work/display directory to create 
the library file, libdisp. Then run "make" in the pfd/work/exec directory to 
link and compile the PFD executable.

4.2 Modifying Global Variables

Use the Data Dictionary Language(DDL) conversion utility to modify global
variables for the ACFS(modsch) process. This utility uses DDL files to 
specify the miniACFS global variables.

To modify a global variable, edit the DDL file used by the Data Dictionary 
Language(DDL) conversion utility. The DDL files located in the acfs/support 
directory have a ".ddl" suffix. A file exists for each global structure. 
For example afs.ddl, ats.ddl, fltenv.ddl and pfd.ddl. 

Run the "ddlconvert" utility in the acfs/program directory to process the DDL 
files and to generate the necessary global common include files.

4.3 Changing ACFS Model Scheduling

The Model Attribute Table(MAT) lists all of the models for modsch to schedule 
to run. It also specifies the cycles that the model should run. The MAT is 
named mat.dat and located in acfs/data.  If the MAT is modified, the 
executable "mat_create_db" must be executed. It can be found in the acfs/program 
directory. Mat_create_db creates a binary file named schedule.bin in the 
directory acfs/data. Schedule.bin is read by modsch at runtime to determine 
model scheduling.

4.4 Creating Datalink Messages

To create canned datalink messages, modify the acfs/data/datalink.dat file. 
The beginning of this file describes the format of the messages.
Process the datalink.dat file by running "dl_create_db" in the acfs/program
directory.

4.5 Changing Datalink Autoloading Scripts

Modify cdu_script.dat in the fmc/data directory.
No compilation necessary.

4.6 Changing Navigational Data

The ACFS, PFD and FMC process each have navigational databases.

4.6.1 ACFS Navigational Facility Data

The ACFS navigational facility data contains VOR, airport and other
navigation data used by the modsch process. 

To modify the the navigational database for modsch:
 - Edit acfs/data/navdat03.dat.
 - Run "navcom" from the acfs/program directory and 
   then enter "3" and "A" at the associated prompts. 
 - Run "navbld".

Read about the data file, navdat03.dat, in section 3.1.2 ACFS Data Files
and about the executables, navcom and navbld, in section 
3.1.5 ACFS Executables.

4.6.2 PFD Navigational Data

The PFD uses the navigational data to display airport, runway and VOR 
markers on the HSI. The navigational data is stored in two files:
pfd/work/display/init_arpts.c and pfd/data/navdb.dat.

Edit pfd/work/display/init_arpts.c to change runway and airport
identification, latitude and longitude data. After editting, 
compile PFD by typing 'makepfd'.

Edit pfd/data/navdb.dat to modify VOR information for the PFD.

4.6.3 FMC Navigational Data

The FMC process simulates the Flight Management Computer, which provides 
features such as flight planning, performance, navigation, guidance and 
control. The FMC needs navigational data such as company routes, STARs,
SIDs, airways, waypoints, airport and runway information. This data is 
stored in fmc/work/nav/navdat.f.

Edit fmc/work/nav/navdat.f to change navigational data for the FMC. 
After modifying navdat.f, compile the FMC process using the 
'makefmc' script in the command directory.

4.7 Useful Commands

In the command directory, there are several useful scripts.
These scripts can be modified for your particular needs.

sim  - runs the simulation. Specifies the processes to run.
cleanup - kills the miniACFS processes.
makeall - compiles the miniACFS system.

4.8 Running Real-time

The modsch process attempts to lower its priority to get a 
higher resolution of the realtime clock. To do this, it must 
be owned by root. Also, the permissions of modsch must be 
modified so other users can execute it.

To run modsch in realtime mode, execute the following 
commands in the acfs/program directory:

  chown root modsch     
  chmod +s modsch

4.9 Compiling miniACFS under IRIX 6.2

Compiling miniACFS to run under IRIX 6.2 is relatively easy.
Only one makefile must be modified. To compile miniACFS to run on 
IRIX 6.2, modify the makefile in the cdu/work/exec directory. 
Under IRIX 5, the flag -D_SGINAP5 must be used to compile. Under
IRIX 6, don't compile with this flag.

Modify the CCFLAGS option in the cdu/work/exec/makefile based on
the operating system.

For IRIX 5:
CCFLAGS = -g -fullwarn -I$(ACFS_CLASS)/include -D_BSD_SIGNALS -D_SGINAP5

For IRIX 6:
CCFLAGS = -g -fullwarn -I$(ACFS_CLASS)/include -D_BSD_SIGNALS