ARI Research Note 86-26

If)

CO

<0

00

<

I

O

<

ADVANCED TERRAIN REPRESENTATION FOR THE MICROTICCIT WORKSTATION:

SYSTEM MAINTENANCE MANUAL

Decisions and Designs, Inc

for

Contracting Officer's Representative

Donald M. Krlstiansen

ARI Field Unit at Fort Knox, Kentucky

Donald F. Haggard, Chief

TRAINING RESEARCH LABORATORY

Seward Smith, Acting Director

o

liJ

HZ

C3

U. S. Army

Research Institute for the Behavioral and Social Sciences

February 1986

Approved 'of public r«f«at*. Uutf butun unlimited.

86 6 9 118
U. S. ARMY RESEARCH INSTITUTE

FOR THE BEHAVIORAL AND SOCIAL SCIENCES

A Field Operating Agency under the Jurisdiction of the

Deputy Chief of Staff for Personnel

EDGAR M. JOHNSON

Technical Director

WM. DARRYL HENDERSON

COL, IN

Commanding

I

«.

!

This report, M submitted by tht contractor, hat bttn cltared fc release to Dtfenst Technical Information Center

(DTIC! to comply with regulatory requirements It ha» bttn givtn no primary distribution other than to OTlC

and will he availablt only through DTIC or other reference tarvievs Mich at tht National Technical Information

Service (NTIS). Tht view», opinion«, and/or finding» contained in this rtpon art thost of tht author!»» and

should not be construtJ a« an official Department of tht Army position, policy, or dtcition. unless so dtsignettd

by Other official documtntttion
UNCLASSIFIED

SECURITY CLASSIFICATION OF THIS FACE (Whrnn Data Bntmrid)

REPORT DOCUMENTATION PAGE

1. REPORT NUMBER

ARI Research Note 86-26

READ INSTRUCTIONS

BEFORE COMPLETING FORM

2. OOVT ACCESSION NO i. RECIPIENT'S CATALOG NUMBER

4. TITLE (and Subtltl»)

ADVANCED TERRAIN REPRESENTATION FOR THE MICROTICCIT WORKSTATION: SYSTEM MAINTENANCE MANUAL

S. TYRE OF REPORT 4 PERIOD COVERED

Interim Report

September 84 - May 85

•• PERFORMING ORO. REPORT NUMBER

DDI/MM 85-17-357

7. AUTHORS

Decisions and Designs, Inc.

• • CONTRACT OR ORANT NUMBERS)

MDA 903-84-C-0333

t. PERFORMING ORGANIZATION NAME AND ADDRESS

Decisions and Designs, Inc., Suite 600,

8400 Westpark Drive, P.O. Box 907

McLean. Virginia 22101

10. PROGRAM ELEMENT. PROJECT. TASK

AREA i WORK UNIT NUMBERS

2Q263743A794

11. CONTROLLING OFFICE NAME AND ADDRESS

U.S. Army Research Institute for the Behavioral

and Social Sciences, 5001 Eisenhower Avenue,

Alexandria. VA 22333-5600

It- REPORT DATE

J&ftmrv 1986

IS- NUMBER OF PAGES

251

1«. MONITORING AGENCY NAME ft AODREMfTTSfforOTl from Canfrofffn« OWtm) IS- SECURITY CLASS, (ml Mm tmpmrl)

• •Unrlasalflftri

II«. DECLASSIFY ATION'DOWNORAOINO

SCHEDULE

IS. DISTRIBUTION STATEMENT (ml titla Report)

Approved for public release; distribution unlimited.

17. DISTRIBUTION STATEMENT (•/ thm «••tract mntmrmd In kJUek 20. II dtttmrmni horn Rmport)

IS. SUPPLEMENTARY NOTES

Donald M. Kristiansen, contracting officer's representative and technical

monitor.

It. KEY WOROS (Cmnitnum •/> NWH •«• II nmzmmmmry «R* Hmntlty my •!•«* mjmm*r\

Land Navigation

Surrogate Travel

Computer-Assisted Instruction

Armor Training

SB. ABSTRACT fCmmlmi» mm -mrmmm mlmm H ——mwm mm* Hmmiity by mime* mtummmm)

This report provides a technical description of the MicroTICCIT version of

Decision and Design, Inc.'s (DDI) Advanced Terrain Representation (ATR) system.

Topics covered in the report include theory of operation, installation, basic

operations, and troubleshooting. The MicroTICCIT version of ATR is z. device for

training land navigation. This training is accomplished by having students use

the system to Mtr*velMover simulated terrain, review prerequisite skills,

receive lessons in dead reckoning, and perform practice and test problems <over

P9 | jJSTn *473 EornoM or « «ov SS IS OBSOLETE

UNCLASSIFIED

SECURITY CLASSIFICATION OF **IS PAGE ( Dmtm Bmtmtmä)
UNCLASSIFiKÜ

SECURITY CLASSIFICATION Of THIS PAQEfHTiwi Dmim Enffd)

-)in navigation from one point on the ground to another.

ATR is a microcomputer-based technology that utilizes laser videodiscs to

provide d capability for fully interactive surrogate travel. X^jl

ARI Research Note 86-26

20. Abstract (continued)

/"* #••'

. j *

lS\.

J

•A-r,.,?

\ K

Page E-8 in this report should be deleted.

Per Mr. Douglas Edwards, Army Res. Inst. for

the Behavioral and Social Sciences

UNCLASSIFIED

^

I

ii SCCU«MTv Cl ASSlFtCATtON Or THIS PACCfl*K«n Dmtm Enffd)
TABLE OF CONTENTS

1.0 INTRODUCTION

1.1 System Functions

1.2 System Overview

1.3 Performance Specifications

2.0 HARDWARE DESCRIPTION

2.1 System Description

2.2 Subassembly Descriptions

2.2.1 MicroTICCIT terminal

2.2.2 Sony monitor

2.2.3 Laser videodisc players

2.2.4 ATR Interface Unit

2.2.4.1 CP-100 Power Supply

2.2.4.2 SCD-100 Serial Chassis

Decoder

2.2.4.3 JS-100 Control Interface

2.2.4.4 VS-1A8 Video Selector

2.2.4.5 SD-1A0 Sync Driver

2.2.4.6 PSG-310 Sync Generator

2.2.4.7 CAS-41 Serial Selector

2.2.4.8 Bypass module

3.0 SOFTWARE AND VIDEODISC DESCRIPTION

3.1 Operating System

3.2 ATR Videodisc

J.3 Program Description

3.3.1 Software for surrogate travel

3.3.1.1 Software representation

of terrain

3.3.1.2 Surrogate travel functions

3.3.2 Courseware for "Navigate From

A to B"

Page

1

1

1

3

4

4

5

6

6

6

6

9

9

10

11

11

11

12

13

14

14

14

15

15

15

16

17

iii
TABLE OF CONTENTS (Cont'd.)

4.0 INSTALLATION

4•1 Unpacking

4.2 Setup

4.3 Packing Instructions

5.0 OPERATION

5.1 System Startup

5.2 System Shutdown

6.0 MAINTENANCE

6.1 Periodic Maintenance

6.2 Tests and Diagnostics

APPENDIX A TECHNICAL DRAWINGS

APPENDIX B SOFTWARE LISTINGS

APPENDIX C SONY LDP-1000A MANUAL

APPENDIX D LENCO PSG-310 MANUAL

APPENDIX E WTI CAS-41 MANUAL

Page

20

20

21

22

23

23

23

25

25

25

A-l

B-l

C-l

D-l

E-l

iv
FIGURES

Figure Page

1-1 ATR SYSTEM 2

2-1 FULL CONFIGURATION 5

2-2 WORKSTATION CONFIGURATION 5

2-3 ATR INTERFACE UNIT BLOCK DIAGRAM 7

2-4 ATR INTERFACE UNIT PHYSICAL LAYOUT 8

2-5 CP-100 POWER SUPPLY 9

2-6 SCD-100 SERIAL CHASSIS DECODER 10

2-7 JS-100 CONTROL INTERFACE 10

2-8 VS-1A8 VIDEO SELECTOR 11

2-9 PSG-310 SYNC GENERATOR 12

2-10 CAS-41 SERIAL SELECTOR AND CABLES 13

4-1 ATR SYSTEM LAYOUT 21

5-1 SAMPLE ATR DIALOGUE 24
TABLES

Table Page

1-1 LIMITS FOR OPERATING PARAMETERS 3

4-1 LIST OF MATERIALS 20

6-1 TROUBLESHOOTING GUIDE 26

vi
1.0 INTRODUCTION

The purpose of this manual is to provide a technical description of the MicroTICCIT version of Decisions and Designs,

Inc.'s (DDI) Advanced Terrain Representation (ATR) System.

Topics covered in this manual include theory of operation,

installation, basic operation and troubleshooting. A less

technically oriented version of system functions and operating

instructions may be found in MicroTICCIT Courseware for "Navigate from A to B"; Instructor's Guide, published concurrently

with this Maintenance Manual.

1.1 System Functions

The MicroTICCIT version of ATR is a device for training

land navigation. The system documented here trains for the

task "Navigate from A to B". This training is accomplished

by having students use the system to "travel" over simulated

terrain, review prerequisite skills, receive lessons in terrain

association and dead reckoning, and perform practice and test

problems in navigation from one point on the ground to another.

1.2 System Overview

ATR is a microcomputer-based technology that utilizes

laser videodiscs to provide a capability for fully interactive

surrogate travel. The version of ATR documented here is implemented on a MicroTICCIT workstation for use in land navigation training. Certain additional components are required to

enable the basic MicroTICCIT workstation to support AIR.
Running MicroTICCIT ATR require« a system with seven hard*

ware components, as seen in Figure 1-1. Four of these components

form the MicroTICCIT workstation:

1. The MicroTICCIT terminal, an IBM PC modified by Hazeltine. To run ATR, the terminal must be equipped with

at least one floppy disk drive and 126K Bytes of memory.

2.

3.

4.

The MicroTICCIT keyboard.

A Sony PVM1270Q monitor.

A Sony LDP-1000 videodisc player (this is optional for

a MicroTICCIT workstation, but essential for ATR).

«MO

Figure 1-1. ATR SYSTEM
The last three additional components are:

5. A second Sony LDP-1000 videodisc player.

6. A Wico 50-0299 joystick/keypad.

7. An Interface Unit, designed and built by DDI, to provide communications among the computer, the videodisc

players, and the joystick.

1.3 Performance Specifications

The ATR additions to the MicroTICCIT workstation are designed for operation in a normal classroom environment. Table

1-1 gives limits for the operating parameters.

PARAMETER LIMITS

Power

Temperature

Humidity

Static Protection

Vibration

110-120 V AC, 60 Hz

65#- 85° F

301-90%, non condensing

Not Needed

1 0.25G

Table 1-1. LIMITS FOR OPERATING PARAMETERS
2.0 HARDWARE DESCRIPTION

The purpose of this chapter is to describe the hardware

which makes up the MicroTICCIT version of the ATR System and

to provide a theory of operation for the system and its subassemblies.

2.1 System Description

The ATR System is designed to lead a student through an

interactive training session. The hardware of the ATR System

supports this by presenting the student with text and video

imagery and allowing the student to interact with the system

by joystick and keyboard commands. A novel feature of the ATR

System is the use of two videodisc players containing identical

disks to provide smooth transitions between video frames. The

DDI Interface Unit coordinates the videodisc players to provide

this function. Additionally, the Interface Unit controls the

configuration of the system.

There are two configurations for the ATR System. When the

Interface Unit is turned on, the «system is as shown in Figure 2-1

In this configuration the MicroTICCIT terminal can run the ATR

software, select video from either videodisc player and receive

input from both the keyboard and the joystick. When the Interface Unit is turned off the system reverts to the original

workstation configuration (Figure 2-2). In this configuration

the MicroTICCIT terminal can receive video only from videodisc

player 1 and the joystick cannot be used. The ATR software will

not run properly when the Interface Unit is turned off. The reconfiguring is accomplished by a bypass module within the Interface Unit and does not require any cable changes. Unless otherwise specified the information in this manual applies to the full

configuration.
vtoto Ä

MTtimct

UNIT

COLOR «*w«TieK I , ._"t>

VPF WHO MCROTieeiT

WORKSTATION

f*

VOR

r S 1 •c

_ M

Figure 2-1. PULL CONFIGURATION

Table 2-1 alto shows the types and paths of signals between the

subassemblies. Each of the subassemblies will be described below.

COLOR

MONITOR «»

aai

NJCROTtCCJT

WORKSTATION VB#

Figure 2-2. WORKSTATION CONFIGURATION

2.2 Subassembly Descriptions

The subassemblies which make up the ATR System are made by

a variety of manufacturers including DDI, IBM, Sony, Pioneer,

and Wico. All of the subassemblies will be described briefly;

only the DDI Interface Unit will be described in detail. For

further information on other products refer to the appropriate

reference manual.
2.2.1 MicroTICCIT terminal - The MicroTICCIT terminal is

the controller for the ATR System. It is basically an IBM PC

which has been modified by the addition of a custom color graphics board. To support ATR the terminal must have 128K of memory

and at least one floppy disk drive. The terminal communicates

with the rest of the ATR system through a single RS-232C serial

port and a video output channel. Additional information on the

MicroTICCIT terminal can be found in the IBM Personal Computer

Technical Reference Manual.

2.2.2 Sony monitor - The display for the ATR System is a

Sony Model PVM-1270Q color monitor. The monitor has 525 line x

512 pixel resolution and accepts a NTSC composite video signal.

2.2.3 Laser videodisc players - The terrain video images

are read from videodisc by a pair of Sony LDP-1000A videodisc

players. These are top loading units and should not have anything stacked on them. Both players contain identical discs and

are controlled so that one player is displaying a frame of video

while the other player is seeking the next frame of video to be

displayed.

Some ATR Systems will be equipped with Pioneer

LD-V6000 videodisc players. These front loading players can

be stacked to reduce the space requirements for the ATR System.

All other differences are transparent to the user.

2.2.4 ATR Interface Unit - The Interface unit ties the

various components of the system together. It multiplexes the

RS-232 data lines, selects the video signal to be displayed,

generates composite sync and subcarrier signals for the videodisc players and converts the joystick signals tc RS-232 format.

Figure 2-3 is a detailed block diagram of the ATR system which

shows the internal components of the Interface Unit and the

signals between them and the rest of the ATR System.
COMFUTW

MONITOR

ftt

JO* incK

LJSP^ÄHHJ

Figure 2-3. ATR INTERFACE UNIT BLOCK DIAGRAM

Figure 2-4 shows the physical layout of the Interface Unit. There are three major sections, the logic rack containing six circuit cards plugged into a motherboard, the CAS-41

RS-232 selector and the relays, XI through K3, which make up the

Bypass Module.
ntONT VKW

ID

ID

E

\mnt Kart»»

© ®

©© ©©

& £

WM

© O -BBBfi-Ui,

NEAR mm.

view

Figure 2-4. ATR INTERFACE UNIT PHYSICAL LAYOUT

8
2.2.4.1 CP-100 Power Supply - This card provides

DC power for the logic rack. Input is 110V AC, outputs are +18V,

-18V and GND. The outputs are not regulated. There are fuses

on the ACV, +V and -V lines. The LEDs on the front of the power

supply indicate that the power supply is on and that the fuses

are intact (Figure 2-5).

CHAttil

POWtH SUPPLY

fOtrrtvi VOLT*

.TIW VOLT«

Figure 2-5. CP-100 POWER SUPPLY

2.2.4.2 SCD-100 Serial Chassis Decoder - This card

receives RS-232 commands, interprets them and sends control signals down the motherboard to video selector cards. In the ATR

system these commands select which videodisc player signal to

display. The SCD-100 uses a vertical sync input for timing so

that the video switching takes place between frames of video.

This prevents the picture tear which would occur if the video

were switched in the middle of a frame. The LEDs on the front

provide a raadout of the stop bit, start bit and the eight bits

which make up a command word (Figure 2-6).
}tum OCOOOEO

3«WW COMPUTER

COMMAND

9

1

Figure 2-6. SCD-100 SERIAL CHASSIS DECODER

2.2.4.3 JS-100 Control Infrface - The JS-100 is

the interface between the joystick end the rest of the ATR System. The circuit card takes the six bits of parallel data produced by the joystick and transmits them as RS232 serial data at

1200 baud. The six bits of joystick data are padded to eight

bits so that the joystick command can be interpreted as a legitimate ASCII character by the MicroTICCIT terminal. The LEDs on

the front of the card indicate the values for the six parallel

joystick lines (Figure 2-7).

»

>•

>•

«JOYSTICK

Figure 2-7. JS-100 CONTROL INTERFACE

10
The Wico joystick combines both directional joystick and numeric keypad functions. All outputs from the

joystick are digital) the output is not proportional to the

amount of stick movement.

2.2.4.4 VS-1A8 Video Selector - This circuit card

selects, buffers and outputs one of up to eight input video signals. The selection is controlled by a command sent down the

bus by the Serial Chassis Decoder described above. There is a

potentiometer on the front of the card which adjusts the gain of

the output amplifier (Figure 2-8). This allows the output to be

set to 1 Volt peak-peak as specified by the NTSC standard. Note

that in the ATR System only two of the input lines are used.

VOCO «LSCTCm

r7\*9m*m

Figure 2-8. VS-1A8 VIDEO SELECTOR

2.2.4.5 SD-1A0 Sync Driver - This card receives

composite sync and subcarrier signals as input. It produces

for" buffered composite syr.c signals, one vertical sync signal

generated from composite sync and two buffered subcarrier signals as outputs.

2.2.4.6 PSG-310 Sync Generator - The Sync Generator

card is the master video timing source for the ATR System. The

PSG-310 produces composite sync and subcarrier signals which lock

the videodisc players together in time. This is necessary for

smooth video switching. There are several controls on the front

11
of the card, all of which should be adjusted only by qualified

personnel (Figure 2-9). Refer to the Lenco PSG-310 Instruction

Manual for a detailed explanation of the controls.

tYNC «NtRATOft

«MJfT

VSLAf

Figure 2-9. PSG-310 SYNC GENERATOR

2.2.4.7 CAS-41 Serial Selector - The CAS-41 is a

microcomputer controlled RS 232 selector built by Western

Telematics Inc. The unit was designed to permit one serial device to select and communicate with one of four serial devices.

As it is used in the ATR System the CAS-41 allows the MicroTICCIT

terminal to talk to either the serial decoder card, üne control

interface card or one of the videodisc players. Figure 2-10

shows the CAS-41 and the internal serial cables for the ATR Interface Unit. Note that there is bidirectional communication

only between the computer and the videodisc players; the other

cables are one directional.

12
COMPtfTIR

5

F~'-±m KO-«0

COHTMOL

MTtWKff K:^

:

I

MTEKFACC UNIT

Figure 2-10. CAS-41 SERIAL SELECTOR AND CABLES

2.2.4»8 Bypass module - The bypass module switches

the ATR System between the full configuration and the MicroTICCIT

workstation configuration. It consists of three DPDT relays, two

for serial switching and one for video. These are 12 Volt relays

which draw their power from the CP-100 power supply. They are

shown as Kl, K2 and X3 on Figure 2-4.

13
3.0 SOFTWARE AND VIDEODISC DESCRIPTION

This chapter describes the software and videodiscs used

to provide surrogate travel and training in the MicroTICCIT

version of ATR.

3.1 Operating System

The system runs under IBM PC DOS, Version 2.1, with additional device driver* for the MicroTICCIT keyboard and monitor.

The operating system and the MicroTICCIT modifications are installed on the floppy diskette that contains the system software/

courseware, and are "transparent" to the user.

3.2 ATR Videodisc

Each copy of the ATR videodisc contains nearly 53,000

photographs of simulated terrain which are presented on the

monitor during surrogate travel. The simulated terrain was

photographed in an orderly fashion using a grid layout; storage

of the photographs on the videodisc follows the photography

pattern. Photographs were taken at intervals equivalent to

twelve meters on real terrain. An area equivalent to 648 by

732 meters was covered, with sixteen photographs (one each facing north, north-northwest, northwest, west-northwest, west,

etc.) taken at each point or grid center. Since there are 54

twelve-meter intervals in 648 meters, and 61 twelve-meter intervals in 732 meters, 54x61x16, or 52,704 photographs were taken. The sixteen photographs at every point allow the user to

look in any of sixteen directions from any point on the terrain,

and to simulate pivoting through a full 360 degrees. Movement

through the terrain can be simulated by presenting appropriate

photographs from nearby grid centers.

14
3.3 Program Description

The basic ATR software enables the hardware to access and

display video images in such a fashion that travel is simulated.

In the MicroTlCClT version, surrogate travel is augmented with

courseware to train land navigation. These two functions are

discussed in the following sections. A commented source listing

appears in Appendix B.

3.3.1 Software for surrogate travel - Simply put, the surrogate travel software translates instructions from the user interface (joystick) into instructions for the videodisc players

in order to simulate travel over the ATR terrain. The orderly

layout of the photographs on the videodisc permits an equally

orderly software representation for the images, and this in turn

makes the translation of user instructions to hardware instructions relatively straightforward.

3.3.1.1 Software- representation of terrain - The

grid and directions in the simulated terrain correspond to a

table in the ATR software. There are 54 east-west positions,

and 61 north-south positions, for a total of 3294 grid centers.

Sixteen directions are represented for each grid center.

Within the software, a border or buffer of two positions was

added around the parameter of the simulated terrain. Hence

there are 58 possible values for the x, or east-west, coordinate and 65 possible values for the y (north-south) coordinate.

A third coordinate, z, represents direction, and can take on

any of sixteen possible values. The table contains one bit for

each possible combination of x, y, and z values.

One purpose of the table is to determine

the legality of any position to which the user might try to

travel. All of the buffer positions are illegal, since they

are entirely theoretical. Certain other positions are made

illegal within the software because, for various reasons (e.g.,

15
inability to take a photograph because of physical obstructions),

no photographs are available for these positions. Each illegal

position has a value of "1" in the table, while legal positions

are assigned a value of "0I«1

Coordinates in the table serve es inputs

to computation of the videodisc frame number that must be accessed to simulate movement to a legal position.

3.3.1.2 Surrogate travel functions - At any time

that the ATR surrogate travel software is in use, there is exactly one current value for XYZ, corresponding to one photograph

on the ATR videodisc. X and Y values are translated into sixdigit coordinates, a specific location on the terrain map, and

Z values are translated into compass bearings, the direction of

view. Given joystick communication from a user, the ATR software

decodes the instruction and uses it to compute a provisional new

XYZ value, six-digit coordinate, and compass bearing. If the new

XYZ value corresponds to a legal position (one having a value of

"0" in the frame table), the software updates XYZ and sends out

an instruction for a videodisc player to access the appropriate

photograph. Each time the X and Y values change, the distance

traveled from the old XYZ to the new XYZ is added to an odometer

reading. The compass, odometer, and coordinates appear on a

status line at the bottom of the screen. (Compass bearings

are given as magnetic azimuths and odometer readings are given

in meters.) If the position is illegal, the software instructs

the hardware to beep as a signal that the user's instruction

cannot be carried out, and XYZ retains its prior value.

In addition to translating instructions

from the user to videodisc frame numbers, the surrogate travel

software determines which videodisc player should present a

given photograph, and when the photograph should be presented.

Because identical videodiscs are played on both players, either

player can access any legal video frame. However, since a

16
videodisc player that is searching for an image cannot display

an image, it is desirable to alternate players, so that there is

always a picture present on the monitor. For the same reason,

it is also desirable to wait until the next image has been found

before switching away from the current one. The software tracks

the activities of the two players and monitors the status of the

searching player; this information allows the software to instruct

the Interface Unit to display the appropriate video source (player)

after the new frame has been found.

Another timing function served by the surrogate travel software is the insertion of delays. The time

required for a videodisc player to find a new frame depends on

the "distance" or number of video frames on the disc between

the current frame and the new frame. Because of the layout of

photographs on the videodisc, the smallest distance between current and new frames occurs when the user is moving due north or

due south. Travel in other directions involves moving across more

interposed frames of video (the exact number depends on travel

direction). To correct the resulting inconsistency in access

time, the software inserts a brief delay before instructing the

interface module to switch to a new frame that is accessed more

quickly than others.

3.3.2 Courseware For "Navigate from A To B" - The courseware consists of four major components. Each component is described below.

Free Travel - This function allows the user to travel

freely over the terrain by using a joystick. The system uses input

from the joystick to calculate coordinated and frame numbers for

the videodisc player.

Skills Review - In this component, text is displayed

which reviews the skills that the student must understand completely before proceeding to the land navigation training section.

17
The courseware text prompts the user for specific information.

The system reads the information, compares the user's input

with the correct answer to the question posed and provides

the proper response to the user. The system also contains

erroneous responses which the user could make due to careless

mistakes. If the user gives one of these "smart* answers, the

system responds with a statement which may help the user correct a mistake.

Navigate From A to B - This component leads the

student through the 19K BNCOC Lesson Plan (Task No. 071-329-

1006), by presenting text which explains two methods of land

navigation, terrain association and dead reckoning. The system

accesses and presents a previously planned route of travel to

demonstrate each method of land navigation. Within each method,

a second route of travel is described to the user, but the user

is allowed to travel the route as in free travel. The system

can determine the location at which the user stopped and provide feedback to the user according to his performance in

navigation.

Navigation Test - This section contains the test

for "Navigate from A to B". A password and student information

must be entered before the system allows access to the actual

test administration. The test contains three problems in which

the system provides the coordinates of the start point and release point for each problem. The user is permitted to travel

freely to navigate a route to the destination. After deciding

that he has found the destination, the user presses the button

on the joystick. The system determines the location at which

the user stopped to evaluate the user's ability to navigate

from one point on the ground to another. To PASS a test problem, the user must be able to navigate from point A to within

50 meters of point B; otherwise the user receives a FAIL on that

navigation problem. The user is given a GO after having passed

18
two of the three test problems on the test. If the user does

not receive a pass on two problems, a NO GO is given on that

test. The user may take the test again, but the test may only

be given to the same user a total of three times. The system

displays the results of each problem and determines whether a

GO or NO GO should be entered into the student's Master Record.

Another password must be entered to free the system after the

test has been taken.

Shut Down ATR System - This provides an explanation

of the switch settings on the videodisc players. The switches

must be set as indicated for TICCIT to operate properly. Failure to reset the switches as indicated will degrade the performance of the MicroTICCIT workstation.

19
4.0 INSTALLATION

The ATR System can be set up on any flat stable surface,

requiring approximately the same space as the MicroTICCIT workstation. The system can be assembled by one person without

special tools. A small screwdriver may be useful.

4.1 Unpacking

The ATR System will arrive in three boxes, one each for the

Interface Unit and videodisc player and one box for cables, accessories and manuals. Unpack all of the boxes, being careful to

remove all of the cables from the packing materials. Table 4-1

gives a list of all of the components needed for an ATR System.

It is advisable to save the videodisc player and Interface Unit

boxes for returning subassemblies to DDI for possible future repair.

PART QUANTITY

Hazeltine MicroTICCIT Terminal

Sony Color Monitor

Sony LDP-1000A

Sony LDP-1000A

DDI Interface Unit

Wico Joystick

Power Cord

RS 232 Cable (X-406A-1)

RS 232 Cable (1-406A-2)

Video Cable (1-406A-4)

ATR Maintenance Manual

ATR Instructor's Guide

ATR Videodisc

ATR Software Diskette

1 Customer Furnished

1 Customer Furnished

1 Customer Furnished

1 Furnished

1 Furnished

1 Furnished

1 Furnished

1 Furnished

2 Furnished

7 Furnished

1 Furnished

1 Furnished

2 Furnished

1 Furnished

Table 4-1. LIST OF MATERIALS

20
4.2 Setup

Figure 4-1 shows one possible arrangement for the ATR System

components. Note that the Sony players cannot be stacked.

Follow the instructions on the players for unlocking the heads

when setting them up. Set the EXT CPU switch on each videodisc

player to ON and the SC/SYNC switch to EXT. Connect the RS 232

cable and the three video cables to each player and to the appropriate connectors on the ATR Interface Unit. Connect the RS

232 cable from the MicroTICCIT terminal and the video cable from

the monitor to the Interface Unit. Plug in all of the power cords

Connect the joystick to the front of the Interface Unit. Follow

the instructions in Chapter 5 for powering up end operating the

ATR System.

MWO BMM«

Figure 4-1. ATR SYSTEM LAYOUT

21

*v .-. ". «V
4.3 Packing Instructions

If it should be necessary to ship either the Interface

Unit or a videodisc player, use the original box if it is

available. Otherwise, any strong box large enough to hold the

component and ample packing material for cushioning will do.

Be sure to follow the manufacturer's instructions for locking

the heads on the videodisc players. If a component is being

sent to DDI for maintenance, be sure to include the cables for

that component so that they can be tested too.

22
5.0 OPERATION

The purpose of this chapter is to provide a brief description of the operating procedures for the ATR System. This is

not intended to be a comprehensive user's guide, but rather a

basic "how to" on system startup and checkout. If more information is needed refer to the ATR Instructor's Guide.

5.1 System Startup

The startup procedure for the ATR System is straightforward. First the monitor, terminal, interface unit and the

disc players are turned on. There is no special sequence to

turning on the various components. Load the ATR videodiscs into

the players, shiny side down. The videodiscs are identical so

either videodisc can go in either player. Load the ATR diskette

into the left drive on the MicroTICCIT terminal. There should

be a series of clicks, and a screen with white lettering on a

blue background will appear. From this point follow the instructions on the screen. Figure 5-1 shows the sequence. A

good system checkout is provided by the Free Travel menu choice.

Roam about on the terrain to check joystick commands, player

operation and Interface Unit performance.

5.2 System Shutdown

When ready to shut the system down, simply halt- -ne program to get back to the A> prompt and turn off the ATR hardware.

The videodiscs and the floppy disk may be left in r>3j(,e while

the power is off.

23
(Power up the subassemblies, load the videodiscs and the

software diskette)

(A blue screen with white border appears)

ADVANCED TERRAIN REPRESENTATION

Press button on joystick to continue

(Press joystick button)

(A menu appears)

Free Travel

Shut Down ATR System

(Choose Free Travel for system checkout)

(Terrain image appears)

(Use joystick to move about on terrain)

Figure 5-1. SAMPLE ATR DIALOGUE

24

««•^•^^^^^M^
6.0 MAINTENANCE

The purpose of this chapter is to give the ATR user guidance

on how to keep the system working and what to do if it is not

working. Procedures are given for determining which sub-assembly

is defective. Most of the components making up the ATR system

are not user serviceable. Any repairs must be done by qualified

personnel.

6.1 Periodic Maintenance

The ATR system does not require any periodic maintenance.

Simply keep the various subassemblies clean and avoid spilling

food or drink into anything. If a subassembly should get wet,

contact DDI for advice before turning it on.

6.2 Tests and Diagnostics

Table 6-1 lists symptoms and their possible causes. This

is by no means a comprehensive list. If the ATR System is displaying novel symptoms, first check all of the cable connections

and switch settings. Then check to make sure the proper videodiscs and floppy diskettes are loaded. If everything is connected properly, and the symptoms haven't disappeared then it

will be necessary to isolate which subassembly is at fault.

25
SYMPTOM POSSIBLE CAUSES

ATR System is dead 1.

2,

MicroTlCCIT Terminal

won't boot

1,

2,

3.

4.

Terminal appears to boot

but no display appears

on the monitor.

1.

2.

3.

4.

5.

6.

Terminal cannot talk to

videodisc players

1.

2.

3.

5. Terrain images appear

but lack color or

stability

6.

7.

Joystick commands not

accepted by terminal

Random Static occurs in

Terrain imagery.

•1.

c

6.

7.

8.

1.

2.

3.

4.

5.

1.

2.

3.

4.

1.

Power Cords unplugged.

Breaker for outlet has

tripped.

Unit is unplugged.

Unit is turned off.

Diskette is inserted

incorrectly or missing.

Terminal is faulty.

Monitor is unplugged.

Monitor is turned off.

Cables are incorrectly

connected.

Diskette is inserted

incorrectly or missing.

Monitor is faulty.

Terminal is faulty.

Players are unplugged.

Players are turned off.

Videodiscs are not loaded

or loaded incorrectly.

Interface Unit is turned off

External CPU switches on

players are set incorrectly

Cables are incorrectly

connected.

Player is faulty.

Interface Unit is faulty.

SYNC and SC cables are incorrectly connected.

External Sync switch on

players are set incorrectly

Player is faulty.

Interface Unit is faulty.

Terminal is faulty.

Joystick is unplugged.

Interface Unit is turned off

Interface Unit faulty.

Joystick is faulty.

Video/Graphic board in

terminal is faulty.

Table 6-1. TROUBLESHOOTING GUIDE

26
APPENDIX A

TECHNICAL DRAWINGS

A-l
INDEX TO APPENDIX A

Page

Assembly, ATR System, 1-423B A-3

Parts List, ATR System A-5

Configuration Diagram LD-V6000, 1-404B A-6

Block Diagram, ATR, Detailed, 1-359B A-7

Assembly, ATR Interface Unit, 1-422B A-8

Parts List, ATR Interface Unit A-9

ATR RS 232 Cable Pinout Diagram, 1-362B A-ll

ATR Power and Video Wiring Diagram, 1-420B A-12

Parts List, ATR Wiring A-13

Schematic, CP-100 Power Supply, 1-214B A-14

Assembly, CP-100 Power Supply, 1-230C A-15

Parts List, CP-100 Power Supply A-16

Schematic, SCD-100 Serial Chassis Decoder, 1-415C A-17

Assembly, SCD-100 Serial Chassis Decoder, 1-414C A-18

Parts List, SCD-100 Serial Chassis Decoder A-19

Schematic, JS-100 Control Interface, 1-416B A-22

Assembly, JS-100 Control Interface, 1-425C A-23

Parts List, JS-100 Control Interface A-24

Schematic, Wico Joystick-Keypad, 1-363B A-27

Schematic, VS-1A8 Video Selector, 1-227B A-28

Assembly, VS-1A8 Video Selector, 1-225C A-29

Parts List, VS-1A8 Video Selector A-30

Schematic, SD-1A0 Sync Driver, 1-417B A-32

Assembly, SD-1A0 Sync Driver, 1-418B A-33

Parts List, SD-1A0 Sync Driver A-34

A-2
*i5

a:

5

§8

?

t

CD

•s

CD

:.

A-3
.

I

I

:

i

i

>*w#y

A-4

'.VAWAAV
§

«-<

H 0. O ^

^ CM

sä

s

I

I

1

s

H

s

CN

s

8

(N

<N

I

8

8

5

W

S5

fM

S

i

CM

S

m

rM

9

2

2

CM

I

8

8

m

I

o

I

8

CM

fM \D

CM

4o

I

r>

9

8 § 8

fM m

A-5

."» -V ,*• .'•.'•.'• "• .*• *» ** '- "• *• . V . ". '» *. ". .... . . Vi
o

HI

•a IS i I I i I RE

Is l?i 82 Esk

A-6

'-*' •-•**.J^"V^>-^W->*>V

W1'JI^'•-»'Cv^/i^»V/W»!. -.!•- .', ^ A'1'> i^laV••-
A-7

ecf^fc ^l^^^>>:v>^-.>>^'-^>v^>^kütaMt A^VA^VlvfrfrfrJN^^
o

V)

nftfifrftft

nnr, nor, nnn o

ill

I

s

&U I

ü& i

8 Q

o

2

(/>

Z

CD

(0

s

CO

(0

o

Id

O

s

UJ

ce

m

cob

o

V

id

1

IN

CM

I CNJ

i

Sffi

A-8

^'^^«.^<'^'"^^"^V'-w<^V'V«'^V^^*^s"^r\w»\V>»:.'»••. oJiJ.\A,.:.:t.v;1-.tQ.;t--.A,.v..':^ A

A

A-'.'.'.:A,.-.V'J'V'.'^',^J':
CM

ozH •H

OS

I

< CO

cm CM

CM

M •» o 1 Q —*

COOZ

.JWQ|Wcm

OSw

OS 5£Gz§H

cm

»-»

a: u

towQ

Gw

OSw

o

CMIsM§

x: oo

CO

to

COuuäai

w*

1

1

1

11

I

Ü

U

uuu co

o •tf »n

m CO o»

en f—i CM CM t-* —*

CM «tf <* CM •* CM 1 o I 1 o 1

*-* sM

o

o

o 00o VH 0. •—(

o ^4

o

<< en

M ->»

H

1 ~4

•—« «—1

i

G1

1

G

1

11

P CO

OH

u CO CO

Q COX

<

O CO **i

> CO 0«oo

N—'

u

M »-«

MMM

z

MM

Q

Öoo

G

uo

G

GGa

o •J

a

s

OSw

>-o

J

o

cm

O

cm tow

D

a

u

V)

in

2 PC

cd HH OS

o

w COw l*

§

8

<

CO

£

b

im

OSu CM

cm S;M

J

>o en

Q

w

M CO CM

c/> •J CO OS

1

M

si

oQ

u CO

CO

o 0. OS

CO »-• f-H

wU OS

s

OS 55Oz

O

••

w

O

•-t

•*

H

u OS

u CO

u

> CO

2

H

w

>-

H >- >-« >-

3cm

_1 ij »J *i 1-1 •J B CO « to u a 0. 5 s S s s u

CO to CO CO CO

z I-« _j

CO CO CO CO CO >•

X

5

<

<<

<

< CO CO

-

CM en ^» *r\ >£>

CM en «s »n <£> r». CO ON

CO

CMl X

OSowo<HUuo

CO

pI

CO

CMX

OSuwQHG

C- G<

-2tu

OS

rnI

COm

CMI

COo3

OSH

CM

ro

CMI

CO

OS

OSoHwzzou

mpX

cm

5

OSH

z

CO

OSpHuwzzoou

I

Fill

cm

ON

$

COQ

1^

.-

uMH

CO

>• o

OSo

<-> u; zzcu

•**

•A'

',4

•:3

:vS

-1

A-9

£"' .*- **• ,"• ."*A

^V.f.^'i. .-*>-

•: .fX:^- . • .-.--"J

-'••-•- .•-.•
oo

ONI

0) »H U CO

CO>

°8oI CM U o o 2 • -< HO.O tN H • «CM U

COO <N CD

O vO M (0 YJ

CO OJ -H U W C Q -H -H 9 60 p to n PQ z "H tN < •> tN

0J «»

«0••

1

z *«.e »-4

OM to

HfiV

H

(A _3 CO M .* U M u u x HJ w to Q a CO

*J

H

w OS

tu

<

a P* §

-»

oo

c*

«aoc

tun

tu

tu

PC«uw

sMH§D

cr •-* •—( 4-4 tr\ iH

•-4 .-H

o2Hs0*

»-I QO

COO ^^. z 8

ti sr 04

<M

<

o 00 try

MÜ

O

o «» tN

QW

u

X

i

1O 04 04

*>. »n pa

s CO CO

w r»Q «M/

w *m*

(Xe

COU

OS

w

CO

w

CO

Mzo

OS

i

£

E

<

ww

w

Pu

d

g

&

o

M

M

2

M

wu PC 04Q

a

|J •J

o

H

CM

u

Q

CO

CO

a

PC1

tN 0«

58 ! o

X CO

s»-4

M pä

2OPCw

<

Pi

aa

M

a «n

M 0C •J os

H

33O

• 04

Po

< CO

H

B

•

Mx tN

U •JH

C£ ss JsS

2W fej

U

w Id

u

2M22

CO CO CO

y SS pa

22

wa

EE Pu,

ou

u 04 04

o2

•J

COg *r\ <£> i*» 00 CT»

o «—<

H tN tN

h-<

i

A.

•\*J

A~10

*^V^V1*^TA£W*L^^
IEJEB *1=FW

o

Z

CO

8

z

g

SO

o

UJ

_J

<1°i

CVJS

2

fei

IflE

CD

CM

i

8 <n

S

v

A-ll

^>iAÜi^i^i:Ü'

.%>:•. •*.>.-•.
A-12

-'"j»

A.V.. V.VOSV. ,v.%.*..- .v. .v» .v ;,.v.v.s-,o'.% .v.v/.v;^.-^yt

;%v.v,v "j\W :%:^:^:->>v>:c-:->:-/:vi
Q

OM

frOKo

fr

UOO

zo

U yj

»-«

CO 0» Q -H g *

J5>

Z <H O M S ° S ü w Q o &*JI

to

II

2K

0) X

to

00fc

<

•H vC > O•>» • I e -•

10 5

S

üM

to<

fr

2

uc

it

*>

fr

(0u

*"«

kl uw

sa«

CMo

sO CM I i

-^ CM

3

1

1

,

£

^

1

i ! CM

fr< CM

M

-^

1

, CM

fr< CM

9

•

1

1 CM

fr< «M

oZH —4 CM cn «fr fr 1 1 1 1 < < < < 5 fr g

sD \o <o c o o

M sr sr «» «fr D i l i 1 Q •N *4 •-« -H

inoz

•Ju

4

D Of

o

o

o

w

o

o t-> •-<

z

&

oom •»•*. fr 00

•—1 s6

s r«. o\ in «MI

u

i

1> w* »rv CM cn r^

fr fr

1o

1

1 CM »n

c

oQQ >H 00

O fr r»

O

u iJ iJ> \0 fr

a 00 CM

frw

esDH •J U o < z

z

z

fr

w fr fr

»

Xa

q

z

M

M

M

M -j L* •J fr

s

oa

CM

r>

CM1

CO

frw

s

CM

«">

CM1

CO

frw

Oa

CM

CM1

COfrU

oDOü

fr

«

frH

CM

c->

w

frPi

co

5

fr

•J rJ •J •Ju CMe

zo

5

frs

3U

fr<u

z

fr

3

i

CO

fr

Soü

fr

•M

*

• fr• fr

8

fr

o

t

>- >- >< >*

o «fr

o

•J t-J •J _> [-4 fi

»-«

« CD fr CQ

y

• Jj>

• Cft

fru

53s

s

frIfr fr fr

+1

frfr

CO CO co co co BQ 4L. fr>

w CO CO CO co

o<

o

<

o

Q

<<

<

<u

Ü

u

uo

Oz

•Jo

035COs

•—t CM r"t •s» •A SO r^» CD C7N

O CM

H m—

— »-*

M

A-13

^V^v^^^V^is^^ie^s^e^^ !i-'.t

v •«•. j* >•-•
I

i» " I» «n

3 hi*

, "(g) ^l1 § in

»L

\rmr\ti

\-2-

i L ML

£

s

A-14 t

Ü

z

</>

z

o

_

o

i

</>

z

o

w

I

.i

_f

IÜI (no

CD

CM

I

s

5 CD

*i

y>i

2

I»

Ihtin

•\4

* % *

'•'.V

__

•-1

*'.'. •".•'.

•'-*-•-*-*-V-•- «^ »*- ^ "*> <'- '.VtVt'»-i _-%-•-_.•.'/-•'-_.-._5f__l >-' _'. •- -" _' _' -. _' •_' ._'. -• ;-'. --' _" •-' '-'. •-* •-'-•-' -'- -_. |
±_L

w

e

r—

—

•4

4

n

JL

-GsD-

• 3 •

•in

u

' 0 *

o

n

:i

o

z

V)

z . o

V)

e

s

in

to:

CDQ;

OUJ

10

o

Sio

I

u

o

fg

5ü

fei

II!

V

A-15

A*—V-*v. %'A' -/•.•-«>• ••" ^''••^•'•^•"'c:Vo^!l ~ • *-.* — *..-»• '-" - - - ^ -----»- »• -'
«•V

0. S

CO

ooI

ft. U

CON

en

DC

•HK

itsÜ

two

fi.2z

I

J2

CC<

SK1i3

«

O ft.

IN

M«

N* «» CM

H CN ie •H

i

*•

*

2

1c<O

c f>

r*

0

5e

011

•-4

tO

s*

c

0

O« inn (0 IN

O

H CO

0

0O CQ0 in IN* inO vc2

*•

H f*0

0 IN

mM

O

0

L

II

1

1 | ^^ in

M*

•

m IN

°1 0.

*NX

J

1

m

M

O VC

tU

mM (0

H

n

H

O

a

z

HA

n

i

>

K

a

u

M

W

W ft

u (0 to (0

K< MB

i

g

H8a

B

i3

3

ft.

i5

s

M

w

M

K

tM

M

H

a OS to

0 ft.

Ö

H •4

J •J i •*J 41

(9> 4J 4J

as

H

0m4

:

s

|

«

1

e IM

m JT

£

§

|

2

(0

OS

taH

s

O

!

K

sCDsA

Ms

g

A

Q

K ft« IN ift

0

K

K

*I

H

M

sH

•

•

s

to

S

to

XH

to 0.

>«

*

J

8M

K

K

< <c

£

ft.

CO

ft)

g

O

ft. w

i.3 8

« i

1

8M

8

CQ

0) tt

H

B

s

§

(0 to to

M

M

a «i

fta

MQ

1

0

D

ft.u

s

2

» f<i

^^

* .--«1

IN

0; uK to r%

->

•

1

HI

Oa

1

»4

1

•A

M

ft.

•-4

H

a

u

a

K ft. ft. (0

•PE

•>

.V.

'.V

A-16

J^A -•-"• --•* • f -• .• '..' •:».A .A. "fc -a.

•^^».•*i.' -»...»^•k L-^»^«-^-J
|3. i 1 ;n-Mll>kk>

a

' !• •

•a-:: ...

Ssmu||f

J^;..8IB2-J

s

ft tsli

81 is

iijX

H

S

K

ft" Hi.

c

A-17

flvlvl' <-L rIv./.^Alv^l'/vlvlvlv^-lvlvlvlV;:'j^iL'*'-'*.'j,

y^L.'-''-'^L'jL'^_*•-»!•- ••-•"%- \• • • • *L'V
+

80 i

l

+ _L

0

6 s

0

i

—QH>—

—GED—

—CB3>—

—run—

—CBD—

<35

4-

G

si

In»

+

Ml

E

CE>

C3D

CS5

fffl

+

•Ol icv; -

SB

ClL

si

s J

WS

3 io

r.

A-18

Ä^iÄrj^ül-1^ »•-* *-» - * "-• - <*- * ^» ., -• -• —f. J . *.*.,>'., J. .*. ^_ .». .f rf_ ^.-. ^_ J- «f_ ^._ •/•...*-AA» - «f . ^ ^- ^, ,»„ ^_ »«_ »'_ ,»_ rf-_ ^.
BM

o

z

pg

I o

I

s

I

:

CO

ON

—A

CM

I

en

o

o

t—I

I

o

u

to

o>

CM

00

00

o

a

s

u

CM

W

H

z

CM CM

X

H

X

s

o

H

O

X

CM\r\

GO

O

ON

CM

o

CM I ^

pa

o

Q

X

O

=3

u

I

<

Z

Z

NO.»*

m

AM

en

25

M

eo

S3

fit

o

<

z

o

M

H

<

Z

z

CO

CM

m

<

z

o

M

H

<

Z

Z

rO

«•»

Z

CO

u

PS

e

3

c

HI

CM

E3

6

I

3

e

CM en I «»

D I ö

00

3

U

PC

Z

NO

o

<

M

H

<

Z

m

CO

A.

NO

•-4

m

oo

u

o

s

s

-

'."'.1

z

M

P.

sr

z

M

PNO

si

>i

i-«

3

NO

00

3

o

=3

A-19

i*ii' •*-»*- »*-»*-^_ -•_»*- v »*. .• »* -* «* -• -* -• -*

, .. ., .,...,... •'.' • J

^^^ftC^^ft^LÜu^)^ftC3AftjftUftCifcft^^
fvo

erKo

CO cn

•• ±4

oo

o

as• -«

H U.O CN

m+

• »CM *J

(AON Z (U ° ai U NO JC

•-<« to

W) J)-H

UwC Q «H *H 3 00

PUh

u

as «H «»

<;- t> ^H

II <tf

to>. |

as «Hc _<

CM (0

MQ«

H

CO iJ to

HJtU

M

y

u

* •-)

ww

a o. to

*J

H

03 OC

0j<

S CU oo

<r

00

o

asH

OS <

toiwQozw

0-

oc

t-V

0»

ocw

aso

oco

COwoOz15

mo

00

oCI

OC

CM

ao

CM

00

as

-3<

aso

toQO

COmom

#J

to

as

to

as

CNQ

M

as

• »-* o ^

mo>SI

CdOU

o to

>om

tuB

r-»

«a<

0-

CMsmuz

cnoo

CM

cnu

CO

fi

toEo

ocBMO<

OH

aso

to<

CMm

m

CO

o C5

O

XX

CN CM en

CN

oo

5

.—< «-* u u

pa

o

o

w CM CM u cn cn w u o

oo

>

'SCM

CM

oceMu<

a. o

CM

B5

to

•oHoo<

0-

CM

>o

5

to0

DCeo<

ex. <

CM

OC

O

aof *

CM

CM

00

oc

to

to

EC

OC

oc

CJ

oc oc oc

<o oc

oc — CM

aC oc

cn

CN

5

3

.* J<

»n Cf» • •

-* <n

oc oc B g CO CO M »-4

CO CO w H

oc oc

«o

—^

•—« CM CM

oc oc oc 1 • »

r««. cn

f^ ^- CM

or oc oc

-»

m

tM CM

O

OCeto•-<

tou

oc

oc

CM

CM

oc

vO

CM

m

oc8<o

»-«

touO

CM

OC

CM

OCM

rCM|

to

»-<

to

u:

oc

00

oc

00

CM

V'.!

IK

A-20

• ^. S.V•-

•*'•*.' •«' LIAIA^I. •..

V . - -'.

V _.. s, .-.'

-'--=- -•--• Ja*
o

C/\

gCD m

o

v

in

u

»ao

Z

S

(A

o

z

.J

w

e

• > —

> • l

H

CM

OS

V)

H

os

<

a.

6

o

c

u

a

w

u

i

z

o

w

os

o

OS

CM

o

H

W

>-* w

w

as

e

CM

OS

iTl

CM

OS

ON

CM

ir>

M

C/J

w

os

r.

OS

o

en

CM

o

o>

en

z

CM

8

o

H

O

in

os

g

»-<

10

w

OS

n

as

CM

cr

cr

CM

en

CM

sr

on

a

en

OS

u

I

vß

o g W 00

*J CM

m o

<» •*•

1

0J

ST

en

-3

<

z

o

W

<

Z

»

Ü

OS

M

o

s

Io

m

en

35

V

A-21

:*^.y^ •>"•'•> >*» •".*•'• *•*."• X\*- vV>* \

• A -•. «- ----- •>.'>•-"-.# -- .»->-»-•
A-22.

^- -s r-r'Vt'^-t'Vfc''^>^%^\/Vi>^*rVr^>^'iV'V>V •«-•>•* '•*• .^ . 1 .*! .V - > t . » •».».,.. Aa^ -V
+

ar1 1 f 8 J2 •c 1

•t 1 T

+

lift

+. r-L,

oin

+

—(ED-

+

—Bi>- —ÜE3- —(HD—

—fiOD—

—QD-

-CED- —TIP— —gJMt—

-y

—CE83-

—CED--

—<QD—

—C¥D- —(SD—

-OD—

-SÜD- i

"ST —aoD-

-G3D-

—095)-

—(ED—

-ODH5D- ° •+

o®

UiO

ans

*>! Si

I'

Ü

in IN

su

A-23

-•»"-'»

•1
!

ft) «H

«a>

°saa<

r»o

©•>Xo

BQ r>

•• sw

Üo

O

Sg«

M ft,© .-<

•-H

** cs 4J

EOO CM 0)

ZO ft)

Ü SO

X

M ca CO

CO 01 >H W 4J c Q «H •H 3 60 P CO M

u

z•Hm

*C*> es

ft) <r

to> *> I Z -H C «-* O * «3 M Q ft) H

CO .J CO M M CJ M O ^ JC •J W (0 o a CO

«j

H

a PC

61

<

2

OH

Oo

-»

CO

w

cc

M CO

NOm •—< sO «* rn i 1

ft» r—1

•—•

uc

uu

tu "H •H u *J iJ

t) TOe

E

ft! 0) a>

a: JC

X

u

u

" CO CO

«0u .*

•Hu

M •H

<-• 4J o 03

0) *.0

->

ozH f-4

PC1

<

u

ft- IT»

rg

M <r o I

tt

^

COoZ

.Jwoow

ftpsw

Paz3zoH

ft. M

PCu

COWs

oo

.-<I

CO

tuW

PCoa i—

4

<

1

irs pa »^ o> «* —* I <M

COoo»

CO<o

CQo

ft*ao

r"

PC<

SO

ON

00

00HM

CO

NO

—i o

PCuu<

ft.

CO

zu

ONC

säzoMH<zDU

PCa

oHOu

DC8OWHZ

CM3

WS

w

pao

CJ

c_>

PSu

pauwHowHZ

»o

z

sO

sO

Zn

ONü<ZOMz

PaswD

sjzoÜz

z

00

00

"^

COQoMH

z

sroZoMsz

z

00

esmoMH<Z

z

sOo<ZoHH<Zrg

in

COU

PC&<

PCow

u

PCsowHz

u

PCs2ÜU

3

PCuÜw

P

PCMuDWH2Uw

zM

ft.

CS) HWBO

CO

try3

00

so

Os

C3

003

Os

=3

A-24

-a -^ -* -"•

J1- »'-•

•r..--»-- rf- ^-..A.^_ »,

j -• -• -• -• -• -•
O

£ cn

o o o

Z . —

MB.O CM

*N

* * CM *->

«ON 0)

z o 0)

u NO X

M « to

CO ft» -H

K W C

O -H -H

3 60

P U M u

55 <H lA

< • P» CM

V ->?

CO > • 1

Z<ri C •—>

O U rt

MO«| H

CO »4 CO

•-< .* U M

H

U

* .J

w a

Q a CO

*J H

a a: *> <

» 0-

§

-a*

00

u

c

V

«I

ft)

w

fQ

N©

I

eM

» o CM

c m en -H i—< CM NO rH «fr CM CM

o

z

H

«

<

OH

M

a

Q

co

o

z S

*J »n m CO CO NO

w I o o X

O CM r^ cn

O H H cn CM «* o

£ O o CM tn u ft»

%

-^

«» »£> CM *» •* o *3 S3 o

u r-< •—! cn cn CM u-» 00 CQ 00 o

o- »n IT» l i •n iJ NO W w CM

e

00

u

00

u 5 5

Z

M

CO

Z

<

CM 03 w

cn

OS

w

OS

8 •J •J

u u

U < < z z

< Z Z z o o

u< o o o CO -O

pj M M U < < ts

3 M M <

r--

< u CO 2 5 5 s OS

u

OS

u

OS

U

os

CJ

OS

H H Z Z O Z

u

z

M

H 0«

>

NO

>

o

us M »H M •-4 t~»

•o -m M UH •o

2 z

s B

00

O

0«

B

B 55 5 3 O

00

M M OS H NO CM r- o M £ ^ H o

z OH a. w Z • 1 CM •* • X O tn ON o

o sa CM •-< ^N cn 1 cn

M •* VÜ OS OS M OS OS OS OS OS

OH

r~* *»* 8 8

N »•J 8 8 8 e 2

OS

o

OS OS OS

C

OS

O

OS

•-< 8 & fe

•Jj <J * • M M M M M H H H

ce j_3 •J w w u U a u u CO CO co co CO CO

O b b

5 J5 Q o < < < < < M •-< M *-* l-l •—)

CO o O O o a* OH OH a. OH CO CO CO CO CO CO

(O o O u s

M M

s 5

< •< s

u w w w w w

Q CO CO OS a o u u OS OS OS a: OS OS

ON

•—< r*» CM

—H CM

1

1

CO

o m fN

2 00

o

CM

OS

OS

-3 CM • —t •

O o m fN» V • »n CQ C* m m ^NJ

S

o »•* *> I • l • I I NO r>- 00 ON ^ •—< .—« g

—< CM cn «» NO •—* NO •—• •—< —" w<

CO 9 9 a u U u u CJ OS OS OS OS OS as

s »tf in -£> r^ 00 c* o •—« CM cn «» m sT* r^ oc ON o

H CM CM CM CM CM CM CM CM CM CM m

l-i

m

>.

S

A-25

IM

-**-'» IA -'iVi-V^\^IJNI-'I.'I; i.'i.v.iA.t.».'.'••.'..'-•»'• ,.\ .. •-'•»• -^ '-* '* -' ' '-" *-* *-' '-'-'-'- -'- •'- jm '-••-«*- -'- dmm
r^o

ONXO

pa co

•• 4-1

uo

0

Z• -*

HP4O en

m*

• «CM *J

UO<S 01 z 0 cu O vO X M CO CO

V) 01 <H W 4J C O -H «H 9 60 p to u

0

Z <H

m

«< •> CM

41 <•

CO>•1

Z «HC P-H

O^ CO

MO 0»

H

CO _J to M .* O M O P JE •J W (0 Q a fO

4J

H

CO (X V <

:* PM 00

>»

00

a»acV

tl

OSu

03

NOI

BMH59

O* CM •-« r>. NO SO •—1 CM •H- OzÖsPL4 MQO

coOZ Si

jJ Vfi w £ 0 CM Q «£> O £ *» O ^H

*»«»O •-H U>

w o\ U*.

O

CU en

•4 CM

e

z en C»

CM «a*

O

tHwp

.

5

<

O OS

(V OS

w

H

s

0 CO

z

Uu

0OHU E3

£

£

os 04 OS OS

O

H

0

U

MMMM

£

M

£ tt

N

3

3

I

'S

» CM

»•^

»-H .* .* en

0

O «N \o »»0

z •—«

O

•• 00

0M

m •/•* ~H (/> OSO

•

•—>

1 OS

H

« OS OS OS

H

0

OK

O

O

0

0 CO

a •-«

H

I-»

H

H

H

H

M

<

M

os CO to to to toH

w

O

u

M •-«M

H

z to us

<

to CO to to CO

Z >-

0 0M

w

w

w

u

w Cc OS

Z<

Q os os OS

CM

OS

H

0U

U

O

1

Z CM

CM en

•J OS OS SO •-«J CM O en1 sO a!

t-3

y

0 .—«0 —<

1

• CN

*>4 CM CN

m en

•—«

H •—« pa

to os os OS OS crX

Ju

S —« <N» in

^ *n vO r» 00

H

m f> 1*1m ri r\ f"i I'M

Ki

Sä•\\*

AC

.-, 1

A-26

^-j^l-ll" .<• *"- *"•

S-i ui ^"•^'••B-' «f ^^-•..W- •^'•-*''->-*>-•''-•>*' .•-•^'-•'^ •--••-»•- i^itj *••••*•i
1 ?V'.«vF1

yy «WJ^*W»y•»'j »yM1?'.'WJ»yroroeiffiqwHy.fgwwTEir*• *»Kwy*r^«•m-KTtvmrnnnpt^wfw-•*""• WJW

9

©

0)

o

fe

sCO

IO

TSTn

MS-

*

en

UJ

Q

8

z

o

o

UJ

Q

UJ

i

Ü

P

UJ o

X Ü

°

(0 £s

CD

ro

iro

I

OQ

Id

ÖÖÖÖÖÖÖÖ0ÖÖÖÖÖÖ

-K-

*f

--«-

—#H<

-H—>

•*-> -*-

-K-

•no e W 10 W (M

o i- i:

> i * •

IO JO

3

.»- -I

A-27
u

z

COz

CO

a

m

<

(0z

o

(0

o

00

<

I

CO

>

Ü

CD

CM

CM

i

fco

u o

CO 5 «CO

A-28

if » il ail «^i «fr • » • •
w

n

X

T T

•fa +

SQso

4

4-

Ö +

2.

-nay— —CED—

8

111

J L

I!

15

So

tÜ

8

IO

I,

II

o

A-29

- - .-V-*.
\fT^rrJWi vjW'Wjwjwjj,!t^1 ^tyiFmru ymwVi *^l *v"*%TH* *.* ^VVWSl

p

# ^ v** i** i'" v' •"V^T—TTv*v*. v« yi"y witimti T > n

1 v^pywnw

OS H

o 00 0

EH 00 N C

o u < in •H

w w iH H *

Q »J 1 N

H u co CM a

> CO > H u

£ d d & 5

§ 5 W *

• »

I I °

I- x — o

* so in 2

c QID -.2

In ><N

QJ a-a

C $>

ra 8 B

c 8-9 D 52

in o

u §

QJ oi

D 5

t/3

A

o

A

0)

JZ

to

u

in

(N

CM

I

CO

to

LX

<

o.

UJ

Ü

z

111

UJ

u.

LU

DC

-i

<

O

cc

o

UJ

CQ

I

z

©

5S

>

j UJ

K

>-

H

H

Z

<

a

1

a

H Ct CM H f- iH f H H H <N CM VD H 00 fH

d

z H 5

H> 1 <

OC u IT

< in <\

0. CM O

5 CM |

o l

fH

H

CO

o'l 00 00 U> z Z ^

,

z z < f>; CO CO < O

zf < < »H CJ *? fH a» u CM u o O w in

UJ LU iH fH in CO H in m CM H < r^ o in >

co CO a» m O a« in o •J fM ^ H ü U

> > U r^ in U in o 00 fH ^ > £ u 3E

o

EH

U

H

O

a

u

Q

<

L

z

o

X

r*

a»

ra

w

u

w

W

u

&3

ml

o

•H

u

O

CM

CO

U

EH

o

H

OC

i UJ W >

OC •J Ci CO u U

z> w »a c L a K3 ^ H H

o

<

CO < H < < < z z W

z H

E- z Z Z o o D

Ik o o t o o o CO CO EH Ü

3 u H H ^-< H H H < <

1 <

Z S

2

Q E-» < C EH EH EH z 2 U U

H M < Z H H

• < < < ti. < W 04 OC (X

> EH Z < b* CO Z z z (U 0J it CO H H

CO

CO EH

EH t4 T3 V 4J

M O id 4J +J

o > • • X M ID (0

>

fM

>

o

>

o

CO

M

<0 5 ^

z

o

a H E- H EH CM H in in o J* J!»

« D Z M H z M Z M •H 0

p^ < a •H D 2 H D M D CO «*-* u B e

OC o < CL, U CJ 0« U (X U CO 2> U-i «w 3 •H SC £

to o VD a ^

^r Ä O en D Z 3 3 fH a 0 o

CO CO fH M H «H M fH H •4 »H r> o O

UJ u • u M U r > fj.. T «• H • in m ~

a. y r-» fH

ex U Q Q u Q u O « « % %

• M W W H U M w Ct « a CC DC K % ^

>< EH H EH EH o O o o O O oc a:

CQ g

«

t* 3 s H s

EH

5

EH

3

EH

M

EH

M

EH

M

EM

o

E-«

o

EH

£ o w U O U Ü w Ü u u u u CO CO

U 2 tt w W X, w u: w D D < < < < M M

co fcH 8

H H

8

H

8

EH Ü O cu a OH a. CO to

10 a z Z z z W

§

< < < < w w

< < CO M M CO M CO M OC u u u u OC OC

d o 00

z m ^r •H a

! _j O U u

1 o i

z

« fH

*H fM rn ^r U) \D rH CM in fH fH o

to S3 z> 3 D ^j J2 V Ü U u £X OC

S

UJ

iH (N r> ^ m M> r- 00 <T\ o fH fN m •w m vo r- 00 a» o

CM

»—

1

:J4

A-30 S

.•.

L.-.-».t. -' f* - --*-•-••-•-'•-•-• '-* ••'-• »••* •.-^-^-^r^.A^-^a.': . -.' | . • .->.-> J. ^ ^^-^^-''^^'^^y^|V^'j'ji'jlVA'l^
ec rO 00 c

EH oo s c

o o < IT •rw a H H *

a j 1 V

H W oo f\ 1 > en > r- c

I

0

£66

> z z

fli ro

2 5

9 Ji

I * i £ 2 w

UJ

a

a

<

y §

— o

c Pin »3

Slfl.3

8|l

o c

C§7J QSs

in o

D 3

QJ «

O 3

C/J

UJ

O

z

UJ

cc

UJ

U

UJ 01

CC r>

fN

-J CN

< 1 u H

"•

cc

ru

UJ

1

CO

U

in

CN

CN

I

00

00

CC

<

a.

UJ

z

o

CO

>

UJ

ae

>•

i z

5 i 3 j a

iH iH iH rH •H H

d

z

•-

CC

<

a.

5

a

§5

£° ^§

cc

UJ

1 cc

ro

<

u.

3

; Z

<

2

u

M

U

CC

M

O

o

iH

1

iH

z

u

w

o

U

cc

o

rH

00

CO

CC

w

00

D

o

Z

o

a.

K

O

1/9 u.

a

•P

•P

«J

1

0

CN

o

oo

M

00

s

•p

:*

0

•

CC

O

00

M

00

u

cc

*J

id

:*

1

0

CC

o

00

M

00

s

1

0

o

o

cH

w

O

M

W

S

cu

•P

rH

cc

O

00

M

00

w

cc

U

c

9)

r.

0

u

•H

E

rH

u

o

s

u

b

z

.j

o

CD

s

>

rH

rH

a

c

•H

CN

rH

cc a

rH rH

cc

1

rH

•H

2

1 ^

r—

rH

CN

CM

<N CN CN

m

CN CN CN

CO

CM

o>

CM

o

A-31

•,^'J '_--'.•_".'.*i"_V.«'. «'..«. «'»«*«.• . »*- w •.". -*,- ••*-. JMJJM 1*.V. *'. >'-V- ^- «". W,VJK*,' S'.V,V,V." .jkV^Jl_jf.^-^-*i
wpyyiyr "p,"f"y^T,y.^i'g. v^y.»*:'».* r.. *•?—,• * j y.1 y;VJ^.'T;^ n

1"*:»1

; »T *: vr^rj'v ^^T'a»j >v »g««•v *vv > •• 'f*- M^rrr.-r'

ra

A-32

^^v^-.v,-.v^'.>>v;vvvv>v. *W%Y-.VVy. V. •»*.v >>%.... .v.- £££ij&tä&te^^
+

50

JL JL

3

T

+

& I

ok

ill

B.

+

-f

+

Me ka

+

V) z

s

tf)Z

I

I

5

1°

«

M A

3*

»\

A-33

L*.»- J

S

A*J?J.'J A 'AVJ •*-*-•--* -'-V >-'-« .'VJ^' •*«•"»• .' -• --• •*-• '»"•> JW? «V.V A »N A=' »* fc*P '*- «** -"> -1 -**>*« »^ "-** -^
v» w » u ••«-••- " <r» v • w» \.~w trm a •* w

r^

O

(Tv

X

o

CO CM

• * vw

u o O

z • — M ft. O p-<

•M

• • CN 4J

CO O CM 0)

Z O 0)

O NO .e

M «B to

CO V -H

CO W C

O «H -H

9 60

g

M

i

o

oo

< »> =-*

01 -ato > • 1

Z -H C »-*

Oh«

M a a» H

CO .J to

H« Jrf o M

U Wi z .J w «

o a to

u H

00 PC

Oi <

I» ft.

o

o

>»

CO

II

o

c

«I

M

II

IM

«I

OC 03

IS

<

£>Cr

O

2

H ^M

a 1

< u

ft. ao

^M

M «*

a 1

a ^H

to

§

w

ft.

u;

i

Z

o

PC

u

to

u:

o

o

z

-J

o

CO

to

s

s

I

Q

to

Q

O

-1

GO

5

to

to

<

>

a

u

z

>-

to

o

3 *4

< 1

00 CQ

tM ON

«» «—<

1 CM

•—» 1

to

O

<«—t

I

o

CO

PC

<

p

Q

3

<

O

CO

u

ft.

M

H

X

to

%o

ON

CN

00

oo

X

H

M

z

CO

o

PC

w

u

<

ft.

to

z

o

CN

o

o

o

X

<

z

o

M

H

<

z

CJ

a:

M

CJ

s

Ü

W

H

Z

in

oo

u

I

H

O

si

Z

o

M

<

Z

z

ft.

o

u

CTI

CN

—i

1

O

es

I

H

2

m

CJ

Z

r->

O

f*

o

CN

m

C_5

CM

O

5

%o

w

S

CO

T3ft.

e

PC

o

H

CJ

<

ft.

<

o

CM

I m

C_>

CN

CD

CO

o

aa

w

u

c_>

M

z

o

CO

<

ft.

>

«o

ft.

B

c_>

<

ft.

<

CN

CN

u

CN

o

o>

CN

CO

o

CN

CN

sco

w

u

ft]

z

oCO

<

CN

PC

>

•o ^< ft.

e •

CN in

CN ?**.

PC •

g

PC

o

I-* H

U to

<

ft.

<

IN

u

m

CN

U

2

«^

CO

ft]

PC

o

PC

u

PC

7

o

PCpCO

»->

CO

w

PC

.-.»«a

PC

- CO

CN —

PC C£

.1

A-34 "1

t*.<L*±?äH?(^\.J'i-'J w- ifc -' *-' •-' -' • • • h •..•.•V.-.A-.W-
e

rO

o\

K

3

pa CM

• • «4-1

u o o

z • — HP.O CM

^H

• «CM w

(CON ft)

z o fl>

O v£> X

M (0 co

U V <H

u u e

Q «M «H

9 60

P (A M u

Z «H 00

< • > .-*

0) St

CO > • 1

Z «H C ••M

Oh«

M Q V H

CO _3 CO

M .* U »-•

U U £ J

w eg

o a CO

«J H

(0 a: ft) <

* o<

gsT

00

ft)

u

c

at

u

0) *-.

w

ST

I

£M

D r^ p-4 r*. CM M3

O* r-< —i

o

z

H

5§cu

M

a

Q

CO

o

z 3

ä £ O CM

O VD O

s NO o -^

o t—1 u

w <* CO o

cu en •J CM

B

z cn cn

CM st u

OS

w

OSi 3

< O OS to OS M

s

B u o a 1

CO

S3

s

as OS pi o o

M M M X s K

2

» st » T3

St **^ St ^^ ^H *«*, % m* ft wi

PH ft *£ • O

tf es o o

z •—< *M »4 •

o

M

H

•

OS OS OS

OS

8 1 OS

Cx 8 e

O o CO

M H H M ft •S

« CO CO CO CO w U

o M M M 35 * <

CO CO CO CO 2 o CM

01 w w Cd eg X

a as OS OS o s

o

z

r-% mM

•J m —1 CM CM o

.—< os as o* CM

s OS

1

l I

sr c* 1

>H M3 St —4 —« »-* —t n

CO OS OS OS OS o- »J U

£ cn St m M3 r^ 00

H

»•*

RS

s3Ml

Jvi

A"

A-35

••• ••• -.* "^-'^.« -••-•_.-»•-«... .^>.

. UiL^i^i^Mi^• - ->-^V^-V-M
APPENDIX B

PROGRAM LISTING

B-l

JNS

«

hjt-^»^ t -ff.-?.-*-j*-* -• -• -» -» -> ^ rf &L^££&££' •'"-» -»•*''•••ii:.^A.'ii'l

.t'.'A«\'-A':.i',.i'l
PAGE 1 May 30, 1985 09:35 AM A:ATRDEFS.H

/* Name: atrdefs.h */

/* Description: */

/* These are the definitions of numerical constants for */

/* the ATR program configured with the following hardware: */

/* Hazeltine MicroTICCIT workstation */

/* (IBM PC, SONY monitor, custom graphics card) */

/* Sony LDP-1000A videodisc player(s) */

/* Western Telematic CAS-41 code activated switch */

/* DDI serial video switch and video driver */

/* WICO joystick with serial encoder/decoder */

/*************************************^

/* serial port parameters */

#define MODE 0x83 /* 1.2kbps, 8 data/1 stop bit(s), no parity

?6

K

/* commands for Western Telematic CAS-41

#define SELECT 0x00

#define VDBASE 0x41

Idefine VIDEO 0x44

#define JOYSTICK 0x48

V

/* commands for SONY LDP-1000A */

Idefine CLEAR 0x56

Idefine DISABLE 0x51

#define DISPLAY 0x50

#define ENTER 0x40

#define NOENTRY Oxff

#define PLAY 0x62

#define REJECT 0x63

#define SEARCH 0x43

#define STATUS 0x67

Idefine STOP 0x4f

/* statuses returned from SONY LDP-1000A

Idefine ACK 0x0a

Idefine DONE 0x01

Idefine ERROR 0x02

Idefine NACK 0x0b

Idefine TIMEOUT 0x1000

'/

/* commands for DDI serial video switch */

Idefine VIDBASE 0x11

Idefine BLANK 0x10

/* statuses returned from joystick

Idefine FIRE -1

Idefine FWD 0xa4

Idefine LEFT 0xa2

Idefine REV 0xa8

Idefine RIGHT Oxal

Idefine joywait(c)

Idefine keywait(c)

'/

while (joystat() !« c);

while (joystat() == c);

/* tone freqencies and lengths- */

Idefine ERRFREQ 125 /* error tone - driving */

B-2

.-.•t.I^H.X. :.»•*...». !.»-._».* »_..».*_. - .-._»•
PAGE 2 May 30, 1985 09:35 AM A:ATRDEFS.H

tdefine ERRTIME 2

#define ATTNFREQ 750

#define ATTNTIME 2

/* get user's attention */

/* TICCIT color board registers and values

tdefine CRTCINDEX 0x300

tdefine CRTCDATA 0x301

#define INTERLACE 0

tdefine NONINTERLACE 1

*/

#define VIDEOCTRL

tdefine EXTSYNC

tdefine INTSYNC

0x302

0X48

0X44

/* window and cursor macros, attributes */

tdefine MSGLN 24

#define NORMAL 0x17

tdefine REVIDEO 0x71

tdefine BRIGHT 0x13

tdefine clearw(w,a)

/* white on blue attribute

/* blue on white attribute

/* cyan on blue attribute

pcvsu(w,0,a);curs_off()

tdefine clearl(r,c,n,a) pcvscp(r,c) ;pcvwca(n, • • ,a) ;curs_off ()

tdefine cursor(r,c) pcvscp(r,c);curs_on()

V

V

V

/* structure definition

struct logentry

{

int point;

float odom_rdg;

float m_dist;

float a__dist;

int mag_azmth;

int declin;

int grd__azmth;

) t

for route log entry V

/*

/*

/*

/*

/*

/*

/*

one character leg designation

current odometer reading

measured distance on map

actual distance (from odometer)

measured magnetic azimuth

declination (from map margin)

corrected grid azimuth

V

V

V

V

V

V

V

/* miscellaneous definitions

tdefine TRUE 1

tdefine FALSE 0

tdefine HALT 0

'/

IP

B-3

>.V.->V-'.-'vJJ.-'.'.'.,-^-V-*.'-V^V*-* «'-*«'-«'» «'- •*-1."-v.«'. V. <^fcj\'»..**^.\'t-•">-• ^; «_• •-«-•«- ,--•:.. .;*. m
PAGE 1 May 30, 1985 09:01 AM B:ASKPOS.C

:-:"

/* Name: askpos

/* Description:

This function gets the user's position from the keypad,

while also allowing the user to pivot around and travel

up to 30 meters from the home position. Pressing the

white button on the joystick takes the user back to the

home position. It checks to see if the user's guesses

are within an allowable margin of error, and keeps the

closest guess to return to the calling routine.

Inputs: probno - which problem is being attempted

x,y,z - user's home position

Outputs: z - user's orientation (updated)

dist - the closest guess to the actual position

returns ntries - the number of guesses taken

Side effects:

User can only enter coordinates from the home position.

/•••A************************************************************/

#include "ctype.h"

#include "atrdefs.h"

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

*/

V

*/

V

V

*/ •v" •

V $

V *£•

V

V

*/

53.y.

•-•„

V V.

V .'-'

V ,".*

V

V

char *prmpt[] -

{

"WHERE ARE

mi

/* prompt for user's position

YOU?",

"Enter the six-digit coordinate for your position",

"[ r

};

char w[4];

char mask[] (0,0,79,3);

extern int illegal[58][65];

extern char window[];

extern char player;

extern char nplayers;

/* window for user's answer

/* window for text on video

/* bit map of illegal frames

/* useable portion of screens

/* currently active player

/* number of active players

'/

*/

*/

V

V

*/

V

>\

askpos(px,py,pz,dist)

int *px,*py,*pz;

float *dist;

{

int i,c; /*

int x,y,z; /*

int oldx,oldy,oldz; /*

int sameframe; /*

int found; /*

int ntries • 0; /*

int ansgotten; /*

int done; /*

int stat; /*

char pos[7]; /*

unsigned frameno; /*

unsigned calcframe(); /*

float d; /*

double sqrt(); /*

index and loop counter

local copies of coordinates

coords of previous position

flag to show no change

frame found on disc?

number of guesses by user

user has pressed RETURN key

user guessed correctly

input from joystick

user's guess at position

current video disc frame no

frame number calculator

distance from home position

square root function

V

V

V

V

*/

*/

*/

V

*/

V

V

V

V

*/

B-4

I.'.''-•'jw' •.•.:.L-.'.^ •- '«-'- -- ^''*-'*^-^t^•'w^^'v''c•'^'*«•^ «• • .-- 1- «-•'^••'»-VT"^--'^^»-' «• \m_:'m-\\ ".'. * m. <. A. l"^ %•>**.•- *- M • >- M. - »'- t
PAGE 2 May 30, 1985 09:01 AM B:ASKPOS.C

/* initialize */

x - *px; y « *py; z = *pz;

> *dist « 50000; /* some huge distance */

strcpy(pos,M");

done • FALSE;

/* find frame and display */

player • toggle(player,nplayers);

> frameno - calcframe(x,y,z);

findframe(player,frameno);

video(player);

videoscr();

/* put up navigation information */

> drawodom(x,y);

drawcompass(z);

/* display prompt, set up window in brackets */

clearw(mask,NORMAL);

for (i - 0; i <= mask[3] - mask[l]; i++)

l c " center(mask,i,prmpt[i]);

w[0] - c + 1;

w[l] - w[3] - mask[3];

w[2] - w[0] + 5;

/* accept and process input from joystick till button pressed

I while (Idone)

{

/* save old coords in case new ones are illegal */

oldx - x; oldy • y; oldz « z;

I /* reset flag indicating joystick movement */

sameframe • FALSE;

/* calculate new coords from joystick input */

switch(stat - joystat())

{

I case FIRE: /* joystick button pressed */

x - *px; y - *py;

break;

case FWD:

travel(&x,&y,z,0);

break;

- case REV:

travel(&x,&y,z,8);

break;

case RIGHT:

pivot(&z,15);

break;

case LEFT:

pivot(&z,1);

break;

default:

if (ansgotten - getdigit(w,pos))

done • chkpos(x,y,pos,dist,Entries);

I

B-5
PAGE 3 May 30, 1985 09:01 AM B:ASKPOS.C

*s

o)

}

sameframe • TRUE; .jyj

break; 'jjjj

/* if joystick in neutral position, restart loop */

if (sameframe)

continue;

/* if frame > 30m from home — sound tone, restart loop */

if ((d = 12*sqrt((double)(x - *px)*(x - *px) + (y - *py)*(y

{

tone(ERRFREQ,ERRTTME);

x • oldx; y • oldy; z • oldz;

continue;

}

/* if frame is illegal — sound tone,restart loop */

if (getbit(illegal[x][y],z))

{

tone(ERRFREQ,ERRTIME);

x * oldx; y • oldy; z • oldz;

continue;

}

/* search for frame */

player • toggle(player,nplayers);

frameno « calcframe(x,y,z);

found • findframe(player,frameno);

/* if error finding frame, restart loop */

if (!found)

{

x • oldx; y • oldy; z •• oldz;

player * toggle(player,nplayers);

continue;

)

/* if joystick position has changed, restart loop */

if (ioystat() !« stat)

{

x • oldx; y - oldy; z - oldz;

player - toggle(player,nplayers);

continue;

}

/* switch the video to the current player */

video(player);

/* update the compass bearing and odometer */

compass(z);

updtodom(x,y);

) /* end while */

/* pass values back to calling routine */

B-6
PAGE 4 May 30, 1985 09:01 AM

*px « x; *py = y; *pz - z;

B:ASKPOS.C

/* return # of guesses taken */

return(ntries);

*

Pft

B-7 v.

>'.%\-w>*. ?-»*•-* •.^..•v

^'-»'--»'•_» • J.'jAt ?-»>.-'.--»'--t '.>,«' J '•A^V'.''.•!•.• -r' ^-- v ^' _ 1\* -vT-r V-^- .^•.•:.-V.J..V-V\-V-^'/-V-V-iJ
PAGE 1 Kay 30, 1985 09:02 AM B:ATRNAV.C

/A***************************************************************/

/* Name: atrnav */

/* Description: */

/* This program is the driver for the ATR land navigation */

/* instruction system running on a modified Hazeltine */

/* MicroTICCIT workstation. The system components are */

/* described in the atrdefs.h file. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/* This program uses a full screen mode and the async port.*/

/****************************************^

#include "stdio.h"

#include "atrdefs.h"

v.

char window[] = {1,3,78,23}; /* useable portion of screen '/

main()

{

static char *menutext[] •

{

"MAIN OPTIONS",

"Free Travel",

"Skills Review",

"Land Navigation Training",

"Land Navigation Test",

"Shut Down ATR System"

>?

static char *routines[] *

{

Mil

"drive",

"navrevu",

"navlssn",

"navtest",

"shutdown"

int nchoices - 5;

int choice • 1;

/* main menu — title Oth line */

/* routines called from menu

/* number of available options

/* menu option selected

/* check files, link to serial interface; start players

forkl("startup",NULL);

if (wait() !« NULL) /* error code from process

return;

V

V

V

V

/* display menu of options - execute selected option */

while (choice « menu(window,menutext,nchoices,choice))

{clearlfMSGLN,0,80,REVIDEO);

printf("A[[34;47m Loading %s module*[[44;37m",menutext[cho

forkl(routir.es[choice],NULL) ;

wait();

if (choice •« nchoices) /* shutdown chosen from menu

return;

)

B-8

-1.^1..*.1 - *-.*-• 1 -I. A. •T^ *.'- •"- 1» >fc % . »' >*• •* t'm »'. 'dl W-*'* 'A~+ •dr.-Jir^^**.*• r* • •'••'•' *'».•'.•••*-^1
PAGE 1 May 30, 1985 09:02 AM B:AUTODRIV.C

/************************•**************^

/* Name: autodrive */

/* Description: */

/* This function starts driving at the given coordinates */

/* and drives using the given list of instructions until */

/* it encounters a HALT instruction. The instructions are */

/* the same as the statuses returned from the steering */

/* assembly. */

/* Inputs: x,y,z • starting position on virtual terrain */

/* drvlist - list of driving instructions */

/* Outputs: x,y,z - the position after the drive is over */

/* Side effects: */

/*****************************************^

#include "atrdefs.h"

extern char player; /* currently active player */

extern char nplayers; /* number of active players */

autodrive(px,py,pz,drvlist)

int *px,*py,*pz;

int drvlist[];

{

int i « 0; /* index for instruction list */

int try; /* number of attempts at frame */

int x,y,z; /* internal coordinates */

int oldx; /* previous value of x */

unsigned frameno; /* current video disc frame no. */

unsigned calcframe(); /* frame number calculator */

/* init local x,y,z from parameters */

oldx - x • *px; y « *py; z - *pz;

/* find frame on next player and switch video */

player « toggle(player,nplayers);

frameno •= calcframe(x,y,z);

for (try - 0; Ifindframe(player,frameno) && try < 3; try++);

video(player);

videoscr();

drawcompass(z);

drawodom(x,y);

do /* drive until HALT instruction */

{

£ ;itch(drvlist[i])

{

case FWD:

travel(&x,&y,z,0);

break;

case REV:

travel(&x,4y,z,8);

break;

case RIGHT:

pivot(&z,15);

break;

case LEFT:

pivot(&z,l);

B-9

• -' - • -»-—
PAGE 2 May 30, 1985 09:02 AM B:AUTODRIV.C

break?

default:

break;

}

/* find correct frame and display */

player - toggle(player,nplayers);

frameno - calcframe(x,y,z);

for (try • 0; Ifindframe(player,frameno) && try < 3; try+.+ ) ;

to

v."

/* set up delays to smooth out pivots/travels

if (x ** oldx) /* frames < 100 apart

nap(600);

/* save current x value */

oldx = x;

/* switch the video to the current player

video(player);

/* update the status line on the screen

compass(z);

updtodom(x,y);

) while (drvlist[++i] I« HALT);

/* pass values of x,y,z to calling routine */

*px • x; *py - y? *pz - z;

*/

*/

*/

*/

B-10

r*-* mZ »-' I^£MM *-*«-' fcJ «- »-" «-' » •-• ' »i~« -»-»-».;-• . - ' - t- -. ' - • -*•- *.-*.-*.- m-* - - •»• -*—• A — •* •*•
PAGE 1 May 30, 1985 09:03 AM B:AZIMUTH.C §j

HII

i

it

ii

ii

mi

i

•i

To figure out the direction you need to travel to go from p

to point B, you need a protractor, a black marker, and the map.

ection is measured in degrees and is called an azimuth.",

Mark point A at 290790 and point B at 287803 (center of tre

M

your map. Draw a line to connect points A and B. Find the poi

" where the line crosses a North-South grid line. Put the protra

H

at this point on the map. Make sure you line up the crossed ce

M

lines of the protractor with the grid lines. Read the azimuth

M

rees from the protractor. The line from A to B will point dire

" the azimuth on the protractor.11,

HII

I

H

What is the grid azimuth, in degrees, from point A to point

[ r

);

char *actxt[] • /* azimuth conversion text */

{

"

A

[[34;47m CONVERTING AZIMUTHS

A

[[44;37m",

•in

" The North-South grid lines on the map are different from the

M

netic north on your compass. You will need to convert grid azi

M

to magnetic azimuths and magnetic azimuths to grid azimuths.",

n II

II

II

H

Nil

/

N

B?H

N

The difference in degrees between magnetic north and grid n

the G-M angle. The G-M angle is pictured in the margin of the

This is a declination diagram. It also tells you how to change

azimuths to magnetic azimuths and magnetic azimuths to grid azi

What is the A[[36mraagneticA[[37m azimuth, in degrees, from poin

[ 3"

B-ll

.*.,*/, VW V, V'A'-'.'. .V.'-'A'.'.1 «W_'».'.V.*»*. 1*- •."-•>'-V*-'. -•» - .'- » -'•'.'•'A'-'»*-'»*-V'A1\ -*k -»•«'• > »..'* ^> «j| J!kV« ^m -*a -"> ^"» ..'k »a «\

/.

/* Name: azimuth */

/* Description: */

/* This function takes a student through a short lesson on */

/* azimuth determination, using a map and protractor, and */

/* conversion of that azimuth to a magnetic azimuth, which */

/* can then be used for navigation. The student interacts */

/* with the system by answering several questions. */

/* This lesson is part of a larger unit covering land nav- */

/* gation. */

/* Inputs: None */

/* Outputs: re - 0 if questions answered correctly */

/* - >0 if questions answered incorrectly */

/* Side effects: ~ */

#include "stdio.h"

Hnclude "atrdefs.h"

char *adtxt[] • /* azimuth determination text */

{

"

A

[[34;47m FINDING AZIMUTHS

A

[[44;37m",
PAGE 2 May 30, 1985 09:03 AM B:AZIMUTH.C

}?

extern char window[];

azimuth()

{

int azmth;

int deg;

int ntries • 0;

int re - 0;

char azmwndw[4];

/* useable portion of screen V

/* azimuth entered by user */

/* difference from actual azmth */

/* number of guesses made

/* return code to calling pgm

/* used to get azimuths

V

V

V

/* set up window for response to questions */

azmwndw[0] • window[0] + 38;

azmwndw[l] • azmwndw[3] • window[1] + 18;

azmwndw[2] - window[0] + 40;

/* azimuth determination review */

clearw(window,NORMAL);

disptext(window,adtxt,3,18);

/* get answer and evaluate */

while (ntries++ < 3)

{

azmth « getnum(azmwndw);

clearl(MSGLN,0,80,REVIDEO);

if (azmth — 346)

{

printf (

,IA[[34;47m Yes, that's right. A

[ [44;37m,?)

break;

)

else if ((deg • abs(azmth - 346)) <- 3)

{

printf (

,,A[[34;47m

346i.A[[44;37m",deg);

break;

)

else if (ntries — 1)

printf(

MA[[34;47m

ctor correctly.A[[44;37m");

else if (ntries •« 2)

printf(

MA[[34;47m

B correctly.A[[44;37m");

else printf (

,|A[[34;47m

)

if (ntries — 3)

rc++ ;

center(window,window[3] - window[1],MPress button on joystick t

);

joywait(FIRE);

clearl(MSGLN,0,80,REVIDEO);

/* azimuth conversion review

clearw(window,NORMAL);

Good, you're only \d\ off. The corr

Sorry, check to see that you lined u

Sorry, check to see that you marked

Sorry, the correct anwer is 346*.A[

7

B-12

->''.»_\jL*_.f 'A'-» •-*' -ft'-

»'*—-» '•> '-* -' -' -• -» Ü "-» tä '-* '-»

'.\/..

-»-•-•-»-«-?
PAGE 3 May 30, 1985 09:03 AM B:AZIMUTH.C

disptext(window,actxt,3,15);

/* get user1s response to azimuth question */

azmwndw[l] - azmwndw[3] • window[1] + 15;

ntries - 0;

while (ntries++ < 3)

{

azmth « getnum(azmwndw);

clearl(MSGLN,0,80,REVIDEO);

if (azmth — 338)

{

printf("A[[34;47m Yes, that's right.v[[44;37m");

break;

)

else if ((deg * abs(azmth - 338)) <• 3)

{

printf(,,A[[34;47m Good, you're only %di off. The corr

346i.A[[44;37m",deg);

break;

)

else if ((deg - abs(azmth - 354)) <- 3)

{

if (ntries -« 1)

printf("A[[34;47m Sorry, you should be converting

to a magnetic azimuth.A[[44;37m");

else if (ntries •• 2)

printf("A[[34;47m Sorry, please reread the explana

declination diagram.A[[44;37m");

}

else if (ntries < 3)

printf("A[[34;47m Sorry, please check the declination

the G-M angle.A[[44;37m");

else printf("A[[34;47m No, the magnetic azimuth is 338\ (3

muth - 81 G-M angle).A[[44;37m");

)

if (ntries »- 3)

rc++ ;

center(window,window[3] - window[1],NPress button on joystick t

);

joywait(FIRE);

/* clear window, message line */

clearl(MSGLN,0,80,REVIDEO);

clearw(window,NORMAL);

/* return whether question answered correctly */

return(re);

B-13

t2£*d2jLAmJätm^±Jk*i£»Mm£* f.uü^.''.''.«\i'.'' . •". •- . •'.•'.<• . im"'..'-.»•'. Ca jm •'> •."» •i^:'M.<m.:'mSmsJ*S*.±'~ . \Vw«- «> •,. i. i. >:- «- »'- i - •_ ». ^-«
PAGE 1 May 30, 1985 09:04 AM B:BOX2.C >J••i

/***************************************************************../

/* Name: box2 */

/* Description: */

/* Tfc Is function draws a double line box around the */

/* indicated window. */ MC

/* Inputs: window - left, top, right, bottom of window */ !jy

/* Outputs: None */

/* Side effects: */

/****************************************************************/

box2(window)

char window[];

{

register int row,col;

pcvscp(window[1],window[0]);

pcvwc(1,201);

pcvscp(window[l],window[0]+l);

pcvwc(window[2]-window[0]-1,205) ;

pcvscp(window[1],window[2]);

pcvwc(1,187);

for(row - window[l]+l; row < window[3]; row++)

{

pcvscp(row,window[0]);

pcvwc(1,186);

pcvscp(row,window[2]);

pcvwc(1,186);

}

pcvscp(window[3],window[0]);

pcvwc(1,200);

pcvscp(window[3],window[0]+l);

pcvwc 'window[2]-window[0]-l,205);

pcvscp(window[3],window[2]);

pcvwc(1,188);

pcvscp(window[3],window[0])

B-14

^ ^:_. «^ -f --. .'••.•••.'.V.^'v-'...'. --V- •- >'- »'-«•- »•> *. t". ».-•..i>>.^J
PAGE 1 May 30, 1985 09:04 AM B:CALCFRAM.C

/****************************************************************/

Name: calcframe

Description:

This function calculates a video disc frame number from

the three coordinates passed to it. In the process, it

corrects for two editing errors in the disc.

The (x,y) coordinates each have a minimum value of 2,

because values of 0 or 1 are used as a signal that the

south and east edges have been reached. The same twocoordinate pad is used for the maximum x and y values.

Inputs: x,y,z - position on virtual terrain

Outputs: frameno - frame number corresponding to x,y,z

/* Side effects:

/A***************************************************************/

fdefine STARTFRAME 361

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

V

V

V

V

V

V

V

V

V

V

*/

V

unsigned calcframe(x, y, z)

int x,y,z;

{

unsigned frameno;

/* make correction for video disc editing errors */

if (((x> 52) && (y > 42)) || (x > 53))

z • (z - 1) % 16;

else if (((x > 40) && (y > 16)) || (x > 41))

z - (z - 2) % 16;

/* calculate frame number */

framenc « 976 * (x - 2) + 16 * (y - 2) + z + STARTFRAME;

return(frameno);

B-15

\-

jkj .»^«^f -•»--»•- A - -- *• • - __-, »----*»»- v.a. .a. ,S--A^. <-.-»-.-«-
PAGE 1 May 30, 1985 09:04 AM B:CENTER.C

/**************************+***************

/* Name: center */

/* Description: */

/* This function writes the string provided to the screen, */

/* centering it on the given row of the given window. */

/* Inputs: window - borders within which to center string */

/* row - which line in the window to center string */ $

/* str - character string to be centered */

/* Outputs: col - column in which str begins */

/* Side effects: */

/* cursor is placed off the screen */

/A***************************************************************/

center(window,row,str)

char window[],row,*str;

(

int col;

curs_off();

col - 0.5 * (window[0] + window[2] - strlen(str));

pcvscp(window[l] + row,col);

printf(str);

return(col);

B-16

>*-»-»-»-« .•--»-V-.* V.-^V '-i .f.-'--'*- '-•*-• '-••-•- '--. '^-•'^-'-«••-f. --».^^--••^-•••^-^^J^—. . . ^^^^«^-»^i^^A^^^i^i^iAi
PAGE 1 May 30, 1985 09:04 AM B:CHECKPTS.C

/a***************************************************************/

/* Name: chkpts */

/* Description: */

/* This function presents text and videodisc pictures to */

/* explain the use of checkpoints in land navigation. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/A***************************************************************/

#include "atrdefs.h"

1

&

extern char window[]; /* useable portion of screen */

checkpts()

{

/* display text */

clearw(window,NORMAL);

disptxtf(window,"cptxt", 0,3,17) ;

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

clearw(window,NORMAL);

B-17

A\1

fc'A. • • -''VvV>-'/.'.'.'.-.'.'.'t'.V. l". V. •-". l'*<mSmJ''m.\mJ''- *- »'-V.. V- ** <- <*• C~t-t-t-tm *-*- V. * .» lT. rf. t'-.
PAGE 1 May 30, 1985 09:04 AM B:CHKLEG.C

/* Name: chkleg

/* Description:

/* This function checks to see if the student's position

/* (x,y) is within the limits of the checkpoint location.

/* If not, the student is placed at the checkpoint.

/* Inputs: x,y,z - student1s current position

/* pos - 6-digit coordinate of checkpoint

/* name - checkpoint name

/* limit - how far student may be from checkpt

/* Outputs: d - distance from checkpoint

/* Side effects:

/* This function must be declared as:

/* float chkleg();

/* It leaves the coordinates displayed on the bottom line

/A***************************************************************/

linclude "atrdefs.h"

JÄ

V

*/

V

V

V

V

*/

V

V

V

V

V

V

V

extern char mask[];

extern char window[];

extern char player?

extern char nplayers;

/* masked area of video screen

/* useable portion of screen

/* currently active player

/* number of active players

*/

V

V

V

float chkleg(px,py,pz,pos,name,limit)

int *px, *py, *pz, limit;

char *pos, *name;

{

int try;

float d;

float distance();

unsigned frameno;

unsigned calcframe();

/* number of attempts at frame

/* distance from checkpoint

/* distance calculator

/* current video disc frame no. */

/* frame number calculator */

V

V

V

/* check distance from checkpoints */

clearw(mask,NORMAL);

videoln(window[3]);

if ((d « distance(*px,*py,pos)) <« limit)

{

pos)

en.M)

cursor(mask[l] + l,mask[0J);

curs_off();

printf(" Good, you are within %d meters of the %s at Is."

cursor(mask[l] + 2,mask[0]);

curs_off();

printf(MYour current coordinates are shown at the bottom

drawcoord(*px,*py);

else /* move student to correct position '/

os)

)

{

cursor(mask[1],mask[0]);

cursoff();

printf (•• Sorry, you are %.0f meters away from the Is at

cursor(mask[l] + l,mask[0]);

cursoff();

B-18

•• ---•-•• • i - * -S .V - N _'• "•
PAGE 2 May 30, 1985 09:04 AM BrCHKLEG.C

printf (•• Your current coordinates are shown at the bottom

en.");

.",pos);

cursor(mask[l] + 3,mask[0]);

curs__off () ;

printf(" Press the button on the joystick and we will pia

drawcoord(*px,*py);

joywait(FIRE);

player « toggle(player,nplayers);

postoxy(px,py,pos);

frameno = calcframe(*px,*py,*pz);

for (try « 0; Ifindframe(player,frameno) && try < 3; try++);

delcoord();

video(player);

compass(*pz);

updtodom(*px,*py);

)

return(d);

> *

'v, .*

I * *

•M

B-19

. «*. •",. «"» •*. %". **. -*. •*. «* £— A.*«' .*» .*• .'• .*»' '» "• ••Ji**Vv.''!tN

V*-»''
•:v,

PAGE 1 May 30, 1985 09:03 AM B:CHKPOS.C

/* Name: chkpos */ 5

/* Description: */ g

/* This function checks the user's guesses at his position */ *

/* against his actual position. He gets up to 3 guesses. */ '".;

/* Inputs: x,y - user's actual position */ j!

/* pos - user's guess at his position */

/* Outputs: dist - how close best guess is to position */

/* ntries - number of guesses taken at position */

/* returns TRUE if correct or all guesses taken */

/* FALSE if he gets to try again */

/* Side effects: */

/•A**************************************************************/

#include "stdio.h"

#include "atrdefs.h"

chkpos(x,y,pos,dist,ntries)

char *pos;

int x,y,*ntries;

float *dist;

{

int match; /* user's answer matched smart answer */

float d; /* distance from exact position - local */

float distance(); /* routine to calculate distance */

/* messages to user */

static char success[] •

"

A

[[34;47m Good - your answer is within 30 meters of your

on,ArT44?37m";

static char notfar[] •

MA[[34;47m Sorry - your answer is %.0f meters from the cor

44;37m";

static char failure[] •

MA[[34;47m Sorry - that's not correct.A

[[44;37m";

static char rightup[] •

MA[[34;47m Remember - READ RIGHT, THEN UPA

[[44;37m";

static char exact[] «

MA[[34;47m Your exact coordinates are:A

[[44;37m";

static char retry[] -

"

A

[[34;47m Please try again*A[[44;37m";

/* increment number of guesses */

++(*ntries);

/* check for correct answer */

getln(MSGLN,0,80);

clearl(MSGLN,0,80,REVIDEO);

if ((d • distance(x,y,pos)) < 30 )

{

printf(success);

nap(3000);

clearl(MSGLN,0,80,REVIDEO);

printf(exact);

dispcoord(x,y);

*dist • min(*dist,d);

return(TRUE);

}

B-20

•*-• "-• ••"•• '«'-'*•• «'•'<-'j&'-t-'-'-i'. •'• ••-
PAGE 2 May 30, 1985 09:05 AM B:CHKPOS.C

else if (distance(-393 - y,-393 - x,pos) < 30) /* reversed coord

printf("%s%s",failure,rightup); $S

else /* check guess against smart answers */

printf(notfar,d);

/* if new guess better than old one, update best guess */

*dist « min(*dist,d);

/* see if user has used all his guesses */

nap(3000);

clearl(MSGLN,0,80,REVIDEO);

if (*ntries « 3)

{

printf(exact);

dispcoord(x,y);

++(*ntries); /* ntries > 3 means position not guessed */

return(TRUE);

)

else /* let user try again */

{

printf(retry);

nap(3000);

putln(MSGLN,0,80,REVIDEO);

strcpy(pos,,IH) ;

return(FALSE) ;

)

B-21
'.v

PAGE 1 May 30, 1985 09:05 AM B:CHKTAB.C

/* Name: chktab */

/* Description: */

/* This function checks to see if the file of illegal */

/* cooordinates can be opened. It aborts execution with */

/* a message if it cannot be opened. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/**************•*************************************************•/

#include "stdio.h"

#include "atrdefs.h"

extern char screen[]; /* screen definition V

chktab()

{

int fid;

if ((fid - openC'badframe.atr",©)) -« EOF)

{

clearl(MSGLN,0,80,REVIDEO);

printf (

,,A[ [34; 47m Can't open frame table file,., press any

programA[[4 4;3 7m");

getch();

clearw(screen,NORMAL);

cursor(0,0);

«•*• w \*> I I

)

close(fid);

B-22

- •
T*".'*T*VWVT".' »":

W"!"~iW,J»-J BVT3W3 <V r.'TJ l.»C

PAGE 1 May 30, 1985 09:05 AM B:COMPASS.C

B-23

/* Name: compass,drawcompass,delcompass,readcompass */

/* Description: */

/* These functions provide a digital compass on the screen */

/* to aid the user in orienting himself on the ATR grid. */ »££

/* Inputs: z - current direction user faces */

/* Outputs: None */

/* Side effects: */

/************************************************ *******

#include "atrdefs.h"

#include "stdio.h"

int offset =8; /* declination */

compass(z)

int z;

{

static int dir[] « /* numeric degrees */

{

360, 342, 315, 297, 270, 252, 225, 207,

180, 162, 135, 117, 90, 72, 45, 27

>i

/* display current bearing */

cursor(MSGLN,17);

curs_off();

printf (

,,A[[47;34m%03diA

[[44;37m",dir[z] - offset);

)

drawcompass(z)

int z;

(

/* display compass label */

cursor(MSGLN,0);

curs_off();

if (offset -« 0)

printf("A[[47;34m Grid Azimuth: ");

else

printf (

,lA[[47;34m Mag. Azimuth: ") ;

/* display current bearing */

compass(z);

)

delcompass()

(

clearl(MSGLN,0,25,REVIDEO);

)

^^P*^^1MI'1^P4^PV«F«F4>V|
• •T '«^U • j " ••! ••

VMW

JI " '•».«Ji wy J 'X^X^j .«"X?r? r?"v "v" ^TrTr.ri". r r.ir,'W7r,T,-»r»irr" *. T v>'

'.V.

'.V. flg

w

$

ft

*/

*/

&

1 V

V

• j»

V $

*/ $

V

*/ 1s V

«AJ

V Po

*-•vv

PAGE 1 May 30, 1985 09:05 AM B:COORDS.C

/*****************************************

/* Name: drawcoord,dispcoord,delcoord,xytopos,postoxy

/* Description:

/* These functions provide a display of the user's

/* position in the terrain.

/* Inputs: x,y - coordinates in internal format

/* Outputs: None

/* Side effects:

/* The internal x,y coordinates are mapped into the 100

/* meter map coordinate system for display purposes.

linclude "atrdefs.h"

#define XBASE 2505

Idefine YBASE 7901

dispcoord(x,y)

int x,y;

(

char pos[7]; /* 100 meter coordinate string */

/* convert x,y coordinates to 100 meter grid coordinate */

xytopos(pos,x,y);

/* display 100 meter grid coordinate */

cursor(MSGLN,38);

curs_off();

»•»— * «^# /MA r r Mf • o **»*•#. A r r A A • n»n *«<*«< \ .

}

drawcoord(x,y)

int x,y;

(

/* display coord label */

cursor(MSGLN,25);

curs_off();

printf(

MA[[47;34m Position: ") ;

/* display current coords */

dispcoord(x,y);

)

delcoord()

{

clearl(MSGLN,25,25,REVIDEO);

)

xytopos(pos,x,y) /* convert internal x,y to 100m grid */

char *pos;

int x,y;

{

X - (XBASE + 12 * (55 - x))/10;

y - (YBASE + 12 * (y - 2))/10;

sprintf(pos,"%3d%3dM,x,y);

)

B-24 ^

•••'• }
PAGE 2 May 30, 1985 09:05 AM B:COORDS.C

•;"...

postoxy(px,py,pos)

int *px,*py;

char *pos;

{

/* convert 100m grid to internal x,y y

sscanf (pos,*%3d%3dN

fpx,py);

*px - (660 + XBASE - 10 * (*px))/12;

*py - (24 - YBASE + 10 * (*py))/12;

P5j

v\\1

B-25

•»V

•. •

•> .N >% .'•

• ' - "
squares

mi

Remember to READ RIGHT, THEN UP. The three digits for East

M

coordinates come before the three digits for North-South coordi

till

24A[[36m5A[[37m790.'\

mi

M

Where would you be if you moved fifty meters north of 24079

H [ 1"

<<

PAGE 1 May 30, 1985 09:05 AM B:COORDSYS.C

/•••A************************************************************/

/* Name: coordsys */

/* Description: */

/* This function presents an introduction to the six-digit */

/* coordinate system used in conjunction with the map for */

/* identifying location. The student is asked to answer */ £>

/* an example question as part of the introduction. */

/* Inputs: None */

/* Outputs: re - 0 if question answered correctly */

/* - 1 if question not answered correctly */

/* Side effects: */

/•A**************************************************************/

#include "atrdefs.h"

char *ctxt[] - /* coordinate system introduction */

{

"

A

A

[[34;47m COORDINATE SYSTEM

[[44;37m",

mi

i

H Every point on a map is named by a six-digit number, a coor

H

To find a point's six-digit number or name, use the numbered bl

" lines on the map. These lines appear every 100 meters and form

n emiaroc "

Example:",

Suppose you are at 240790 (the lower left corner of the £v

If you moved A[ [36mfiftyA[ [37m meters toward the east, you •.£«

};

extern char window[]; /* useable portion of screen */

coordsys()

{

int i; /* index and loop counter */

int ntries - 0; /* number of guesses made */

int re • 0; /* return code tc calling pgm */

char poswndw[4]; /* used to get coordinates */

char str[10]; /* coordinate string */

/* set up windows for getpos() to use for coords */

poswndw[0] - window[0] + 35;

poswndw[l] - poswndw[3] • window[l] + 18;

poswndw[2] « window[0] + 40;

/* display first part of text */

clearw(window,NORMAL);

disptext(window,ctxt,3,ll);

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

B-26
B-27

PAGE 2 May 30, 1985 09:05 AM B:COORDSYS.C

clearl(window[3],window[0],window[2] - window[0] + 1,NORMAL);

/* display second part */

disptext(window,ctxt + 9,12,18);

/* get user's response to coordinate question */

while (ntries++ < 3)

{

getpos(poswndw,str);

clearl(MSGLN,0,80,REVIDEO);

if (strcmp("240795",str) «» 0) S

printf("A[[34;47m Yes, that's right.A[[44;37m");

break;

}

else if ((strcnp("245790",str) — 0) || strcmp("235790",str)

printf("A[[34;47m Sorry, the first three digits are fo

West coordinate.A[ [ 4 4; 3 7m");

else if ((strcmp("240740",str) — 0) j| strcmp("240840",str)

printf("A[[34;47m Sorry, fifty meters is equal to half

re.A[[44;37m");

else if (strcmp("240785",str) •« 0)

printf("A[[34;47m Sorry, remember to read up to get th

h coordinate.A[[44;37m");

else printf("A[[34;47m Sorry, please reread the example ca

4;37m");

nap(3000);

)

if (ntries > 3)

{

clearl(MSGLN,0,80,REVIDEO);

printf("A[[34;47m You would be at 24079A[[31m5A[[37.A[[44;

re - 1;

)

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

clearl(MSGLN,0,80,REVIDEO);

clearw(window,NORMAL);

/* return whether question answered correctly */

return(re);

'•>'^'^''%-N.'%^V!^V*v<N\*v'^>»wN">''lv,lN'lvS'S'l-»'X'>,i •••'.••'. • .-..-.-
PAGE 1 May 30, 1985 09:06 AM B:CURSOR.C

/•a*******************************A******************************/

/* Name: curs_on,curs_off, curs_get, curs__put */

/* Description: */

/* These functions use video interrupt 10 to manipulate */

/* the cursor. */

/* Inputs: row,col for cursj?ut */

/* Outputs: row,col for curs_get */

/* Side effects: */

/**************AA************************************************/

#include "dos.h"

union REGS regs; /* 8086 registers '/

yvyi

5&1

curs_on()

{

/* which video mode?

regs.h.ah • 15;

int86(0x10,firegs,«regs);

/* set cursor size

if (regs.h.al «« 0x07)

{

regs.h.ch - 12;

regs.h.cl - 13;

else

}

'/

'/

/* monochrome —

/* 9 x 14 pixel grid

regs.h.ch « regs.h.cl

/*

7;

6x8 pixel grid

V

*/

'/

/* turn on cursor

regs.h.ah • 1;

int86(0xl0,®s,®s);

'/

curs off()

{

/* make cursor invisible */

regs.h.ch • regs.h.cl - 15;

/* turn off cursor

regs.h.ah * 1;

int86(0xl0,®s,®s);

'/

curs_get(r,c)

char *r,*c;

(

/* get cursor position

regs.h.ah « 3;

int86(0xl0,®s,®s);

*r * regs.h.dh;

*c - regs.h.dl;

'/

B-28

te*?*:v*-+±:^*?*\'\:^^^^^ :^V^V1N - —. -- •*•»•* *\| ' n J ' j J|
PAGE 2 May 30, 1985 09:06 AM B:CURSOR.C

}

curs_put(r,c)

char r,c;

{

/* place cursor at (r,c) */

regs.h.ah • 2;

regs.h.dh « r;

regs.h.dl - c;

int86(0xl0,®s,®s);

B-29

» •+'-' ">--' '-? *-* '-* '•* *-» '-' m '-»--» '-'--: .•V.,.V-V '-' '•• V V..-.V. .•..' J./-Vw J.MV»V»'.•'.>.^. I'.V>.<V-,VI'A.''..W'I'.'-. I. i. •'.^'. »'. .". *'. 0-«*. iT-VJ
'. v - B " -. - H

PAGE 1 May 30, 1985 09:06 AM B:DEADRECK.C

/A***************************************************************/

/* Name: deadreck */

/* Description: */

/* This function presents text explaining the concept of */

/* dead reckoning as it is used in land navigation. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/a***********************************'a**************************/

#include "atrdefs.h"

extern char window[]; /* portion of screen for text */

deadreck()

{

struct logentry *log; /* log of route */

struct logentry *newlog(); /* function returning log */

/* display intro text */

clearw(window,NORMAL);

clearl(MSGLN,0,80,REVIDEO);

disptxtf(window,"drtxt",0,3,15) ;

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

/* show sample of a log */

clearv(window,NORMAL);

dispty- tf (window, "drtxt" ,14,2,4);

log - newlog();

drawlog(log);

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

/* show steps to plan a route for dead reckoning */

clearw(window,NORMAL);

disptxtf(window,"drtxt",18,3,17);

center(window,window[3] - window[l],"Press button on joystick to

joyw;iit(FIRE) ;

/* go through step by step example */

drckxampO ;

/* let user try one */

drckprob();

»-

B-30

-• '-• '-•*-'**-•* '-»%.''.*',-t*'j.^%..'>t

m

^''M' h>-/\_.T» .Y. « .*'->•• ^»V» «>V> mi .'.» .N »•*.» -•*>'• .•.*-«"..*-•.'- .'.V'.v-.v v - - - - ..'•-. ••~«A^1
PAGE 1 May 30, 1985 09:06 AM B:DETAZMTH.C

/

****************************************************************/

/* Name: detazmth

/* Description:

/* This function takes a student through the process of

/* determining the grid and magnetic azimuths from one

/* point to another.

/* Inputs: None

/* Outputs: None

/* Side effects:

/****************************************************************/

linclude "atrdefs.h"

*/

*/

*/

V

V

*/

V

V

extern char window[];

detazmth()

{

int azmth;

int deg;

int ntries * 0;

int re • 0;

char azmwndw[4];

/* useable portion of screen 7

/* azimuth entered by user */

/* difference from actual azmth */

/* number of guesses made */

/* return code to calling pgm */

/* used to get azimuths */

sV-

^ -•-

/* azimuth determination text

clearw(window,NORMAL);

disptxtf(window,"datxt",0,3,10);

»/

/* set up window for response to question */

azmwndw[0] - window[0] + 39;

azmwndwjl] - azmwndw[3] - window[l] + 10;

azmwndw[2] • window[0] + 41;

/* get user's response to azimuth question */"

while (ntriesf+ < 3)

{

azmth - qetnum(azmwndw);

clearl(MSGLN,0,80,REVIDEO);

if (azmth -- 150)

{

printf("A[[34;47m Yes, that's right.A[[44;37m");

break;

)

else if ((deg - abs(azmth - 150)) <- 3)

(

printf (

,,A[[34;47m

150i.A[[44;37m",deg);

break;

)

else if (ntries •• 1)

printf("A[[34;47m

ctor correctly.A[[44;37m");

else if (ntries •• 2)

printf("A[[34;47m

B correctly.A[[44;37a");

else printf("A[[34;47m

Good, you're only \d\ off. The corr

Sorry, check to see that you lined u

Sorry, check to see that you marked

Sorry, the correct anwer is 150i.A;

B-31

i —«. • •\^>.-\.> ..*-«-.-....« ..•i....-'f,'l,| Atilt'l mil - - • - — | - "
>•

PAGE 2 May 30, 1985 09:06 AM B:DETAZMTH.C

)

center(window,window[3] - window[1]," Press button on joystick t

);

joywait(FIRE) ;

/* put correct answer in brackets */

clearw(azmwndw,NORMAL);

cursor(azmwndw[1],azmwndw[0])?

printf("150");

clearl(MSGLN,0,80,REVIDEO);

/* azimuth conversion */

disptxtf(window,"datxt",8,11,16);

azmwndw[1] • azmwndw[3] • window[1] + 16;

ntries « 0;

while (ntries++ < 3)

{

azmth « getnum(azmwndw);

clearl(MSGLN,0,80,REVIDEO);

if (azmth — 142)

{

printf("A[[34;47m Yes, that's right.A[[44;37m");

break;

)

else if ((deg « abs(azmth - 142)) <« 3)

{

printf (

,,A[ [34; 47m Good, you're only %dj off. The corr

142j.A[[44;37m",deg);

break;

)

else if ((deg - abs(azmth - 158)) <- 3)

(

if (ntries « 1)

printf("A[[34;47m Sorry, you should be converting

to a magnetic azimuth.A[[44;37m");

else if (ntries *• 2)

printf("A[[34;47m Sorry, please reread the explana

declination diagram.A[[44;37m");

)

else if (ntries < 3)

printf("A[[34;47m Sorry, please check the declination

the G-M angle.A[[44;37m");

else printf("A[[34;47m No, the magnetic aziroutn is 142\ (1

muth - 8i G-M angle).A[[44;37m");

)

center(window,window[3j - window[1]," Press button on joystick t

);

joywait(FIRE);

/* clear window, message line */

clearl(MSGLN,0,80,AEVIDEO);

clearw(window,NORMAL);

B-32

r«A-'.»-.•- -• -• -V - j-.O.:. .•JL'.-.'AV..' '-^•.•-•---•,»-• J v •-.«:->• "

v.-^_ >.:-•_•-» •-• :_• •-» .» ^g^j^^Y^!^"^ •_.\k\.A .••-»\..j-t W^A AgAfr-^ ..\ J._. ] -j
PAGE 1 May 30, 1985 09:07 AM B:DISPTEXT.C

/A***************************************************************/

/* Name: disptext */

/* Description: */

/* This function displays text in the window passed to it. */

/* The text is assumed to fit in the window, and is not */

/* checked for length. */

/* Inputs: w - window in which to write text */

/* txt - array of pointers to text strings */

/* strt - offset from top of window for first line */

/* stop - offset from top of window for last line */

/* Outputs: None */

/* Side effects: */

/* The cursor is invisible after this routine returns. */

/••a***************************I*********************************/

linclude "atrdefs.h"

disptext(w,txt,strt,stop)

char w[],*txt[];

int strt,stop;

{

int i; /* index and loop counter */

curs__off ();

for (i - strt; i <- stop; i++)

{

pcvscp(w[l] + i,w[0]);

printf(*txt++);

)

B-33

Si

"»V^VLINLV•..»'.•»!.>!»'»*.NV»mr-'.-..... . , .-. ^'•J',

J>V'^V.'.-.'.--".••."«•-«•.'«•-4*jLm t".i^.»*-y*- w/-.-.-.• .<-£mi"^-%*.<~. •;>/- f-«".v.^-«'- .•-•:.«•-/^ t*^«
PAGE 1 May 30, 1985 09:10 AM BrDISPTXTF.C

/A************************************************************** */

/* Name: disptxtf */

/* Description: */

/* This function displays text from a file in the window. */

/* The text is assumed to fit in the window, and is not */

/* checked for length. */

/* Inputs: w - window in which to write text */

/* txtfile - name of file containing text */

/* offset - first line of file to display */

/* strt - offset from top of window for first line */

/* stop - offset from top of window for last line */

/* Outputs: None */

/* Side effects: */

/* The cursor is invisible after this routine returns. */

/•A**************************************************************/

#include "stdio.h"

linclude "atrdefs.h"

disptxtf(w,txtfile,offset,strt,stop)

char w[],*txtfile;

int offset,strt,stop;

{

int i; /* index and loop counter */

int fid; /* file identifier */

char c;

char line[101]; /* line of text */

/* open file */

sprintf(line,••%.8s.atr",txtfile);

if ((fid - cpen(line,0)) — EOF)

{

clearl(MSGLN,0,80,REVIDEO);

printf(

MA[[34;47m Not able to load text from disk: %sA

[[44

return;

> ft

/* skip past offset */ '/:',

for (i - C; i < offset; i++) .-;)

getline(fid,line,100); j^

/* display text */

curs_off (); 'v

;*

for (i - strt; i <- stop; i++)

{ W

getline(fid,line,100); _

pcvscp(w[l] + i,v[0]); •

printf(line);

) •:•:"

r *J

/* close file */ o

clor^(fid); im

B-34

•"* ^'^"•-•''-»"•-i-**-/ •-•"-•" wi'^ •-»'•--.>• -^•-^--•V-'**^'o -? ~-t •-* •_»* -* -• - •-••> -' •-•"•-- • -• _/-»•-. '.*--* •-. •-«'--» -* ••-. •^'•^•-± -.*
/* Name: distance */

/* Description: */

/* This function calculates the distance between the two */

/* points represented by (lng,lat) and the 6-digit coor- */

/* dinate pos. Both representations are converted to a */

/* common 100m scale before the distance calculation. */

/* Inputs: lng,lat - internal coordinates (2-55,2-62) */

/* pos - 6-digit coordinate pair for map position */

/* Outputs: distance between the two points in meters */

/* Side effects: pos cannot be less than 6-digits long. */

/****************************************************************/

Idefine XBASE 2500

Idefine YBASE 7900

9

:•;•

•>:

float distance(lng,lat,pos)

int lng,lat;

char pos[];

{

int a,b;

float x.y;

double d,sqrt();

/* convert (lngflat) to (x,y) on 100m scale */

x - XBASE + 12*(55 - lng);

y - YBASE + 12*(lat - 2);

/* separate 6 digit coordinate into (a,b) on 100m scale

sscanf(pos,"%3d %3dM,&a,&b);

a *- 10;

b *- 10;

'/

/* calculate distance from (x,y) to (a,b) */

d - sqrt((double) (x - a) * (x - a) + (y - b) * ( y - b));

/* return distance in meters */

return(d);

B-35

. »*-»'— .*-»"-« »- • ~ •' - »*- £- -*.
PAGE 1 May 30, 1985 09:11 AM B:DISTM£AS.C

/A***************************************************************/

/* Name: distmeas

/* Description:

/* This function takes a student throught the process of

/* measuring distance on a map. Measurement along both

/* straight and curved lines is covered. Instruction is

/* presented as text and the student must respond to two

/* questions.

/* Inputs: None

/* Outputs: re - 0 if both questions answered correctly

/* - >0 if either question answered incorrectly */

/* Side effects: */

/* The text screen is cleared at the end of this function. */

/**************•***************************************•**********/

•include "atrdefs.h"

Ä

vV»

'>'.\

N. V &

V Oft

V

*/

V Si V

V &

V

V

V 7\

char *dmtxt[]

{

it A

[[34;47m

[[44;37m",

/* distance mesurement text */

MEASURING DISTANCE

Nil

K

II

II

II

Nil

N

Nil

N

N

);

When you travel from one point to another, you need to know

distance between the two points. Use the black marker and stra

edge to measure the distance. Then use the bar scale in the ma

of the map to convert that distance to meters.H,

Mark point C at 260844 and point D at 256830.H,

What is the distance, in meters, from point C to point D?",

C 3"

char *cmtxt[] -

{H A

[[34;47m

A

[[44;37mM,

/* curved distance mesurement text */

MEASURING DISTANCE

Nil

I

N

M

N

II II

II

M

II

H

Mil

N

•I

);

You also need to know how to measure the distance between t

points around a curve in a road. Mark point E at 295800 and po

at 278810 on your map.M,

Make a tick mark on your straight edge, and aline the tick

with point E. Aline the paper along the road edge, and make a

mark on the straight edge and on the map when you come to a cur

Keep doing this until you get to point F.M,

What is the distance, in meters, from point E to point F?",

[ 3

M

extern char window[];

distmeasureO

{

int dist;

int ntries • 0;

/* useable portion of screen

/* distance entered by user

/* number of guesses made

'/

V

*/

B-36

•• *•• V-rf-V-*.•->.'.•-*«*. «*-•*. i*. t*. i~-«W. ^. ^i^tV.'twV ».• »_• •L »-' «-' «- •>-••<_•».• ».•'^•\_-.*»_' •_•*!_• _•-•-<- i. •_* ^ w' _ •-• -" - J
PAGE 2 May 30, 1985 09:11 AM

int re - 0;

char distwndw[4];

B:DISTM£AS.C

/* return code to calling pgm */

/* used to get distances */

/* set up window for response to questions */

distwndw[0] - window[0] + 37;

distwndw[l] • distwndw[3] • window[l] + 13;

distwndw[2] • window[0] + 41;

/* distance measurement review

clearw(window,NORMAL);

disptext(window,dmtxt,3,13) ;

'/

Yes, ..hat's right.A[[44;37mM);

Sorry, check to see that you marked

Sorry, measure the straight line dis

Sorry, the distance from C to D is

/* get user's response to distance question */

while (ntries++ < 3)

{

dist - getnum(distwndw);

clearl(MSGLN,0,80,REVTDEO);

if (abs(dist - 147) < 10)

{

printf(MA[[34;47m

break;

)

else if (ntries -• 1)

printf("A[[34;47m

D correctly.A[[44;37mM);

else if (ntries ~ 2)

printf(

MA[[34;47m

n points C and D.A[[44;37mM);

else printf(

MA[[34;47m

A

[[44;37m");

)

if (ntries — 3)

rc++ ;

center(window,window[3] - window[l],MPress button on joystick t

);

joywait(FIRE);

clearl(MSGLN,0,80,REVIDEO);

/* curved distance measurement review */

clearw(window,NORMAL);

disptext(window,cmtxt,3,15);

/* get user's response to azimuth question */

distwndw[l] - distwndv/[3] • window[l] + 15;

ntries - 0;

while (ntries++ < 3)

(

dist - getnum(distwndw);

clearl(MSGLN,0,80,REVIDEO);

if (abseist - 225) <- 10)

{

printf(

MA[[34;47m Yes, that's right.A

[[44;37mM);

break;

)

B-37

1

I

• ~ »i

*-' ^•'»•''^•'».•'•^''^-•'•-"^-•'^•'.-"'^»-•'^•'^•'«-r'»-'*^ •'*.• .-•^•w^- .-•. • -..«•. ••-»-'»*."»-'J.-»•-*»•-'.•_'»•.'«•_*.-'»*.«y'r- .-•'.• -«•-'-•- ••_*>;.''^ :. J
PAGE 3 May 30, 1985 09:11 AM

else if (ntries •« 1)

printf("A[[34;47m

F correctly.A[[44;37m");

else if (ntries •- 2)

printf(MA[[34;47m

A

[[44;37m") ;

else printf("A[[34;47m

A

[[44;37aM);

)

if (ntries

rc++ ;

3)

B:DISTMEAS.C

Sorry, check to see that you marked

Sorry, make tick marks more often an

Sorry, the distance from E to F is

center(window,window[3] - window[1],MPress button on joystick t

joywait(FIRE);

/* clear window, message line */

clearl(MSGLN,0,80,REVIDEO);

clearw(window,NORMAL);

/* return whether question answered correctly

return(re);

V

B-38

> .1

\»

je—• .«^'•Ak'iA'.'. .'A ».••>>••.'-•.*.'•. ~ •-' •.'.,.*A'A'.'.'.1.' \'.»V».'.'.,..i. -*» -'i -'» - » - I - ' -'» - » —'•». « fc | -V -V^ _-fc _'. _•. .,,„•> ..'» ,', ^\_", „i
PAGE 1 May 30, 1985 09:11 AM B:DRCKPROB.C

ii it

Nil

HII

HI!

t

A

[[44;37m",

We helped you through an example of dead reckoning, so now

ready to try one by yourself. As before, we'll place you at th

point and ask you to find your position on the map. We'll give

coordinates of the release point and help determine a route, bu

will drive each leg of the route to the release point. You wil

to keep your own log of the route. After you finish the proble

will show you what your completed log should look like.",

You are at your start point (314860 on the map). Mark this p

your destination (294835) on the map. Record the odometer readi

log. We choose not to travel directly to the destination to avo

vegetation and trees in our path. Let's go toward the south fir

Set the azimuth on the compass by turning to face south. Loo

map to see how far you should go along this azimuth. A good poi

for is the base of the hill at 314849. Measure the distance to

and after recording it and the azimuth in your log, drive to the

Record the odometer reading and the actual distance traveled

log. Looking at the map, you can see that you still need to tra

and west to get to the release point. Let's go west toward the

scrub at 294849. Record the azimuth and distance and drive to t

Record the odometer reading and the actual distance traveled

log. You now need to go south to the road at 294835. Set the a

the compass by turning left. Record the azimuth and the distanc

road (from the map) in your log. Now, drive to the release poin

You're at the release point, but you still have to finish log

route. Read the distance traveled off the odometer, calculate t

of the last leg, and enter both in the log. Now, your log is fi

B-39

•C*

/* Name: drckprob */ £

/* Description: */

/* This function takes the user interactively through */

/* navigation from one point to another using the tech- */

/* nique of dead reckoning. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/****************************************************************/

•include "stdio.h"

#include "atrdefs.h"

tdefine X 2

Idefine Y 61

#define Z 6

int drplst[] « /* driving instructions for problem */

(HALT, HALT);

char *drptxt[] - /* text for dead reckoning problem */

"

A

[[34;47m DEAD RECKONING PRACTI

r% .-
Wl^ff*1'1'."» ."• IflV*V*1'V" W~* if"n •>*.*•-> ".« TJI r.« rjp r* • an " rf" "W r*-.; *-. r r. tra » i i

PAGE 2 May 30, 1985 09:11 AM B:DRCKPROB.C

•in

mi

A

[[34;47m A

[[44;37m",

DEAD RECKONING PRÄCTI

" Your completed log should look something like this:"

);

extern char window[];

extern char mask[];

drckprob()

{

int x,y,z;

float navigate();

float readodom();

float chkleg();

struct logentry *log;

/* useable portion of screen */

/* mask over top part of video */

/* coordinates on terrain

/* routines returning float

/* log of route taken

struct logentry *newlog(); /* function returning log

V

V

*/

V

V

/* display explanation of problem

clearw(window,NORMAL);

disptext(window,drptxt,3,li);

center(window,window[3] - window[l] /'Press button on joystick to

joyvait(FIRE);

/* give user start and release point coordinates */

x - X; y - Y; z - Z;

resetodom(x,y);

autodriv(&x,&y,&z,drplst);

log - newlogO ;

log->point - *Af;

log->odom_rdg » readodom();

clearw(mask,NORMAL);

disptext(mask,drptxt + 10,0,3);

center(winde ,vindow[3] - window[l]," Press button on joystick t

joywait(FIRE);

/* figure out how far to travel along this azimuth; then do it

log->mag azmth - 172;

log->m_d!st * 125;

navigate(&x,&y,&z,drptxt + 15);

chkleg(&x,&y,&z,"314849","base of the hill",30);

center(window,window[3] - window[1]," Press button on joystick t

joywait(FIRE);

/* fill in log for first leg; prep for second and drive it */

(log + l)->point - 'B';

(log + l)->odom_rdg - readodom();

log->a_dist « (log + l)->odom_rdg - log->odom_rdg;

(log + l)->m_dist - 210;

(log • 1)->mag_azmth - 262;

navigate(&x,&y,&z,drptxt + 20);

chkl*g(&x,4y,fcz,"294849","patch of scrub",30);

B-40

*&te<>^
PAGE 3 May 30, 1985 09:11 AM B:DRCKPROB.C

center(window,window[3] - window[1],NPress button on joystick t

);

joywait(FIRE);

/* finish log for second leg; prep third leg and drive it */

(log + 2)->point « «C;

(log + 2)->odom_rdg • readodom();

(log + l)->a__dist « (log + 2)->odom__rdg - (log + l)->odom_rdg;

(log + 2)->m_dist - 140;

(log + 2)->mag_azmth • 172;

navigate(&x,&y,&z,drptxt + 25);

chkleg(&x,&y,&z,"294835","release point",50);

center(window,window[3] - window[1]," Press button on joystick t

);

joywait(FIRE);

/* finish up log entry for last leg */

(log + 3)->point - 'D';

(log + 3)->odom_rdg - readodom();

(log + 2)->a_dist - (log + 3)->odom_rdg - (log + 2)->odom_rdg;

clearw(mask,NORMAL);

disptext(mask,drptxt + 30,0,3);

center(window,window[3] - window[1]," Press button on joystick t

*„•»'

joywait(FIRE);

/* display completed log */

textscr();

disptext(window,drptxt + 34,2,4);

drawlog(log);

center(window,window[3] - window[1],"Press button on joystick to

joywait(FIRE);

clearw(window,NORMAL);

B-41

J «31 »» »'' fcl «J m.'. ^m^±-±L -« -»*-* '•* -•- -• "-• J "-' - -' - im 4m dm
/* Name: drckxamp */

/* Description; */

/* This function takes the student through an example of */

/* land navigation using the technique of dead reckoning. */

/* It consists of traveling several legs of a route under */

/* program control, with textual commentary on keeping a */

/* log of the route traveled. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/•A********************************************************** ****/

•include "atrdefs.h" •W

idefine X

tdefine Y

#define Z

34

50

13

/* coords of starting location */

int drxlstOU

{HALT,HALT);

/* lists of driving instructions '/

int drxlstl[] -

{LEFT, LEFT, LEFT, HALT);

int drxlst2[] -

(FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, HALT);

int drxlst3[] -

{RIGHT, RIGHT, RIGHT, RIGHT, HALT);

int drxlst4[] -

{FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FW

FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FW

};

int drxlst5[] -

{RIGHT, RIGHT, RIGHT, RIGHT, HALT);

int drxlst6[] -

{FWD, FWD, FWD, HALT};

char *drxtxt[]

{

"

A

[[34;47m

A

[[44;37m",

/* text for dead reckoning example */

DEAD RECKONING EXAMP

mi

i

it

fl

mi

H

N

Nil

II

t!

III!

N

We'll take you through a step-by-step example using dead re

to navigate:",

1) Your «tart point is at 275848. Your destination is at

Mark these two points on your map.H,

2) Record the odometer reading as point A in the first col

your log".

[[34;47m DEAD RECKONING EXAMP

B-42

-*« -»- I -V-'« -"« .». * -.•-.»-- ~» -.._._...-.-«-.

.-.-•- w.*. -.-.->•;•.•"<
^

PAGE 2 May 30, 1985 09:12 AM B:DRCKXAMP.C V

nit i

it

tin i

tt

mi

it

tut

ii

MM

Your log should look like this before the first leg:",

We are now at the start point, looking in the directir of th

point. You can see on the map that there are no good terrain fe

tween here and the release point that we can use as checkpoints.

Looking at the map, you can see that there are some trees (at

and 286855) which will be avoided if we travel to the north. Le

towards the north.",

Read the magnetic azimuth off the compass below. You need to

it to a grid azimuth in order to draw your route on the map. Re

azimuths and the declination in your log (columns 4 - 6).",

Looking at the map, you can see that there is a road to our n

edge of this road (275857) can be our first intermediate point,

the distance to the edge of the road and record it in your log.

are ready, we'll drive to the road's edge. Watch the odometer a

nit

ti According to the odometer, we've traveled 96 meters on the fi

" Record the current odometer reading and the actual distance trav

" the log. Looking at our new position on the map, you can see th

to go east and south to reach our release point. Let's go east

Hit

I

It

/

»i

/

I«

II

IIII

I

tt

II

II

II

llll

tt

H

II

•I

llll

II

lilt

llll

H

Record the magnetic and grid azimuths in your log. Draw a ii

present location due east. The point on the line which is due n

destination is our next intermediate point, point C. Record the

distance from here to point C. Watch the odometer as we drive t

We've arrived at intermediate point C. Record the odometer r

column 1 of your log. Subtract the previous odometer reading to

actual distance traveled on this leg and record it in column 3.

lease point is directly south« so let's turn south.",

Record the magnetic and grid azimuths in columns 4-6. Then

the distance from our present position to the release point and

in column 2. When you're ready, we'll drive to the release poin

ber to watch the odometer.",

We're here at the release point at 311844. Record the odomet

in column 1 of your log and fill out the rest of the line for th

A

[[34;47m DEAD RECKONING EXAMP

[[44;37m'\

Your completed log should something look like this:"

extern char player; /* currently active player */

extern char mask[]; /* masked area of video screen */

extern char window[]; /* useable portion of screen */

B-43
J> _• .- J- _« _-.«»' -J. J» -»« -* '.

PAGE 3 May 30, 1985 09:12 AM BiDRCKXAMP.C •JSfl

drckxamp()

{

int x,y,z; /* coordinates on terrain

float readodom(),navigate();/* routines returning float

struct logentry *log; /* log of route taken

struct logentry *newlog(); /* funtion returning log

*/

V

V

V

/* introduction to example */

x • X; y « Y; z • Z;

resetodom(x,y);

log - newlog();

log->point - 'A';

log->odom_rdg • readodom()?

clearw(window,NORMAL);

disptext(window,drxtxt,3,12);

center(window,window[3] - window[1],"Press button on joystick to

joywait(FIRE);

/* display partially filled in log */

clearw(window,NORMAL);

disptext(window,drxtxt + 11,2,4);

drawlog(log);

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

/* show terrain at start point facing release point */

autodriv(&x,&y,&z,drxlstO);

clearw(mask,NORMAL);

disptext(mask,drxtxt + 15,0,3);

center(window,window[3] - window[l],HPress button on joystick t

joywait(FIRE);

videoln(window[ 3 ]);

• -.Si

• - »

/* decide to go north */

clearw(mask,NORMAL);

disptext(mask,drxtxt + 19,0,3);

center(window,window[3] - window[l]," Press button on joystick t

joywait(FIRE);

autodrive(&x,&y,&z,drxlstl);

/* figure out and record azimuths '/

clearw(mask,NORMAL);

log->mag_azmth • 352;

disptext(mask,drxtxt + 23,0,3);

center(window,window[3] - windov[l]," Press button on joystick t

joywait(FIRE);

videoln(window[3]);

/* measure distance to checkpoint and drive to it */

clearw(mask,NORMAL);

log->m_dist « 80;

disptext(mask,drxtxt + 27,0,3);

B-44

•W.*.;±\±\-*.\ -w •*. «*. •". •" *•"••*-"• <-"- il »-* *-* *-^*- •-* »-'• »-* . a-'. •• t. >-' •-'- .-..-•.. t . i- i- • - •: -•---« •* ' - •*-
PAGE 4 May 30, 1985 09:12 AM B:DRCKXAMP.C

center(window,window[3] - window[1]," Press button on joystick t

);

joywait(FIRE) ;

autodrive(&x,&y,&z,drxlst2);

/* stop at road edge; turn east */

clearw(mask,NORMAL);

(log + l)->point - »B»;

(log + l)->odom_rdg • readodom();

log->a__dist • (log + l)->odom_rdg - log->odom_rdg;

disptext(mask,drxtxt + 32,0,3);

center(window,window[3] - window[1],NPress button on joystick t

);

joywait(FIRE);

autodrive(&x,&y,&z,drxlst3);

/* record azimuths and distance to next checkpoint; drive tö it

clearw(mask,NORMAL);

(log + l)->m_dist « 367;

(log + l)->mag_azmth • 82;

disptext(mask,drxtxt + 37,0,3);

center(window,window[3J - window[1],MPress button on joystick t

)?

joywait(FIRE) ;

autodrive(&x,&y,& z,drxlst4);

/* arrive at second checkpoint; turn to face release point */

clearw(mask,NORMAL);

(log + 2)->point « »C1?

(log + 2)->odoir rdg - readodom();

(log + l)->a_dist « (log + 2)->odom_rdg - (log + l)->odom_rdg;

disptext(mask,drxtxt +42,0,3);

center(window,window[3] - window[i],NPress button on joystick t

)?

joywait(FIRE);

autodrive(fcx,4y,&z,drxlst5);

/* record azimuths and distance to release point; drive to it

clearw(mask,NORMAL);

(log + 2)->m_dist « 65;

(log + 2)->mag_azmth « 172;

disptext(mask,drxtxt + 47,0,3);

center(window,window[3] - window[1],HPress button on joystick t

);

joywait(FIRE);

autodrive(&x,4y,&z,drxlst6);

/* record odometer; finish filling out log */

clearw(mask,NORMAL);

(log + 3)->point - 'D';

(log + 3)->odom_rdg • readodom() ;

(log + 2)->a_dist - (log + 3)->odom_rdg - (log + 2)->odom_rdg;

disptext(mask,drxtxt + 52,0,2);

center(window,window[3] - window[1],* Press button on joystick t

);

joywait(FIRE) ;

B-45
PAGE 5 May 30, 1985 09:12 AM B:DRCKXAMP.C

.'A

/* show completed log */

textscr();

disptext(window,drxtxt + 55,2,4);

drawlog(log);

center(window,window[3] - window[l],"Press button on joystick tc

joywait(FIRE)?

clearw(window,NORMAL);

B-46

££J£^ -* '-* -*>-' *-» *-»Ji *-« *-^ • -« • • -*

^: *-i•»^•-^•>^: i^k^
PAGE 1 May 30, 1985 09:13 AM B:DRIVE.C

/*************Tk******************************A*******************/

Name: drive

Description:

This function takes input from the steering assembly

and translates it first into coordinates and then into

frame numbers for the video disc player. It checks

for illegal action by the driver, signals them by a

tone from the computer, and ignores those actions.

Inputs: x,y,z - starting position on virtual terrain

Outputs: None

Side effects:

^include "atrdefs.h"

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

V

V

V

V

V

V

V

V

*/

V

char *pg[] •

{

"

A

[[34;47m

A

[[44;37m",

/* introductory text V

FREE TRAVEL

mi

ii

ii

III!

II

II

II

II

II

mi

II

II

H

};

This segment is a demonstration of ATR's capability to simu

travel.",

You may travel over the simulated terrain using the joystic

control your movement. Moving tho joystick forward or backward

move you in that direction. Moving the joystick to the right o

will only turn you toward that direction; you will not move for

or backward.*',

Note: Sometimes, you may attempt to travel over terrain that c

be traversed using this system; if this happens, the com

will sound a tone, and you will stay where you are."

.>

/* global variables */

int illegal[58][65];

char player • 0;

char nplayers - 1;

char screen[] - {0,0,79,24}

char windown • (1.3,78.231

/*

/*

/*

/*

bit map of illegal frames

currently active player

number of active players

screen definition

V

V

V

V

/* portion of screen for text */

mainQ

{

unsigned framero;

unsigned calcframe();

int x,y,z;

int oldx,oldy,oldz;

int sameframe;

int found;

int stat;

int i;

/* current video disc frame no

/* declare calcframe function

/* coords of current position

/* coords of previous position

/* flag to show no change

/* frame found on disc?

/* input from joystick

/* index and loop counter

V

V

*/

V

V

V

V

V

/* load illegal frame table */

loadtab();

/* introductory text */

clearw(window,NORMAL);

B-47

»"•-»^-.«'•^^.^-^•.•-V-V-V-'.'-V-±..•-.V.'t'..^-/.Vi<f-»--V.i^LA^AA j^s£aJ^»*>.«r>V-*. . «•.'w\'-:.'»'. '. •*. i'JV.V.V^t'.\'.V.V.'i.'-'.*-'.'-:.'i.\'.'.'.'i
&

,\VJ

."* .1

PAGE 2 May 30, 1985 09:13 AM B:DRIVE.C

clearl(MSGLN,0,80,REVIDEO);

disptext(window,pg,3,16);

i center(window,window[3] - window[l],nPress button on joystick t

joywait(FIRE);

/* start somewhere in terrain */

randloc(&x,&y,&z);

t /* find frame on next player and switch video */

player • toggle(player,nplayers);

frameno * calcframe(x,y,z);

findframe(player,frameno);

video(player);

videoscr();

/* display compass, odometer and coordinates */

drawcompass(z);

drawcoord(x,y);

resetodom(x,y);

drawodom(x,y);

• center(window,window[3] - window[1],HPress button on joystick t

while (TRUE) /* let user drive till button hit */

{

v

/* save old coords in case new ones are illegal */ ä£

• oldx • x; oldy • y; oldz • z;

/* reset flag indicating joystick movement */

sameframe • FALSE;

/* calculate new coords from joystick input */

• switch(stat - joystat())

{ '>

case FIRE: /* joystick button pressed */ J--J!

delcoord (); £JA

delcompass();

delodoir () ;

• textscr();

return;

break;

case FWD:

travel(&x,&y,z,0);

break;

• case REV:

travel(ix,&y,z,8);

break;

case RIGHT:

pivot(&z,15);

break;

• case LEFT:

pivot(&z,l);

break;

default:

sameframe • TRUE;

break;

•

B-48
PAGE 3 May 30, 1985 09:13 AM B:DRIVE.C

)

/* if joystick in neutral position, restart loop */

if (sameframe)

continue;

/* if frame is illegal — sound tone, restart loop */

if (getbit(illegal[x][y],z))

(

tone(ERRFREQ,ERRTIME);

x - oldx; y • oldy; z - oldz;

continue;

)

/* search for frame */

player - toggle(player,nplayers);

frameno • calcframe(x,y,z);

found • findframe(player,frameno);

/* if error finding frame, restart loop */

if (!found)

{

x • oldx; y • oldy; z - oldz;

player - toggle(player,nplayers);

continue;

)

/* if joystick position has changed, restart loop */

if (joystat() !- stat)

{

x • oldx; y - oldy; z - oldz;

player • toggle(player,nplayers);

continue;

)

/* set up delays to smooth out travels */

switch(stat)

{

case FWD:

case REV:

if (x «- oldx) /* frames < 100 apart */

nap (4 00); •••

break; ;>

default: w*.

break;

)

/* switch the video to the current player */

video(player);

/* update the status line on the screen */

compass(z);

dispcoord(x,y);

updtodom(x,y);

) /* end of drive loop */

B-49
PAGE 4 May 30, 1985 09:13 AM B:DRIVE.C

}

1

B-5C

•, •

v

V*V«V.% .\V.VV*. »'•. >\••^•-'*^^^•!.%

^

v

V-ls^

NV•^^^!/«V•V^Vrlv

l^>V^»?\•^^^^VA\^V^V^-:«••-•^- .V.W.v . .v^ jJ .\%r'.
PAGE 1 May 30, 1985 09:14 AM B:FINDFRAM.C

/•A**************************************************************/

/* Name: findframe

/* Description:

/* This function causes the LDP-1000A to search for the

/* given frame number. It waits until the frame is found,

/* as indicated by a return code from the player.

/* Inputs: player - which player to use

/* frameno - which frame to search for

/* Outputs: TRUE - if frame was successfully found

/* FALSE - if error occurred

/* Side effects:

/A***************************************************************/

#include "atrdefs.h"

#define RETRY 3

char vddigits[] •

{0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39);

findframe(player, frameno)

char player;

unsigned frameno;

{

int sc; /* status code from player */

int ntries - 0; /* number of retries */

/* send command sequence to find frame */

while (ntries++ < RETRY)

(

/* send search command */

if ((sc - vdcmd(player,SEARCH)) !- ACK) /* search not accept

{

sc » vdcmd(player,CLEAR);

continue;

)

/* send frame number */

sendfnum(player,frameno);

/* send enter command */

if ((sc - vdcad(player,ENTER)) — ACK)

break;

6C - vdcmd(player,CLEAR);

)

V <w

*/

V v-:-

*/ «•«

V «•.

V

V V«

V 01 V w

*/ >>

if (ntries >« RETRY) /* not able to complete sequence

return(FALSE);

if (sc •- DONE) /* frame found */

return(TRUE);

return(FALSE);

B-51

.*'

.V* «^

>;.

while (((sc - pcarc(O)) » 8) ( 0x80)/* TICCIT modification

; /* ignore time-out status V

^'»'* «-»*»*>'»V'..JY.'»!»'»^'»L'f.l'.'-NVi .'•...••• - - -•-."•^ *-** •» '* -'-•-'---*-•-*«•-'«•-••- •'- «"- t'~ t. «•-«*^\'- V. •'.••.^>V.|'. *-«'. t'. f_^-«*_^. ^.». «'.a', >''..'>. d
'V

PAGE 1 May 30, 1985 09:15 AM B:GETBIT.C

/A***************************************************************/

/* Name: getbit */

/* Description: */

/* This function gets the value of the bit in position */

/* pos from number and returns it as an integer. */

/* Inputs: pos - position of bit in number (0-15) */

/* number - 16 bit integer */

/* Outputs: whether bit in position pos is lit or not */

/* Side effects: */

/**************************•*************************************/

int getbit(number, pos)

int number, pos;

{

return((number » pos) & 01);

)

B-52

•A •-» '-« '-%/J». ".A M '-• *-» -M ZM -f *-• *^> '-»-'-• -» ~-r. ~-i'-' -' -» '-• '->•-? "-» •-» '-« -* * . -- "-».-•' -r . _» .-_•-»•. • '-• -»'-«'-- -. j _ .:,. '^ »^ •.. ' . '^ •
•

PAGE 1 May 30, 1985 09:15 AM B:GETDIGIT.C

/************************************^

/* Name: getdigit() */

/* Description: */

/* This function accepts one key from the keypad each */

/* time it is called. It returns a FALSE value until 6 */

/* digits have been entered and the RETURN key pressed, at */

/* which point it returns a TRUE value. Only digits 0-9, */

/* carriage return and backspace are allowed as input. */

/* Inputs: w - field where 6 digit number is to be entered */

/* str - variable which will contain the number */

/* Outputs: str - contains the number entered by the user */

/* Side effects: */

/* If the str parameter is empty (i.e. has length 0), the */

/* function reinitializes. */

/* Error messages are displayed on MSGLN as defined in the */

/* atrdefs.h file. */

/A**************************«************************************/

•include "atrdefs.h"

if include "ctype.h"

extern char window[];

getdigit(w,str)

char w[],str[];

{

int c;

static int ndigits;

static char col;

static char ncols;

/* useable portion of screen 7

/* character entered from keypad*/

/* number of digits entered " */

/* position of cursor in window */

/* number of columns in window */

/* initialize variables, blank input window */

if (strlen(str) — 0)

{

strcpy(str," ");

ndigits - 0;

col - w[0];

ncols • w[2] - w[0] + 1;

clearw(w,NORMAL);

center(window,window[3] - window[1]," Press •*• to backspace

nter answer ");

)

/* process keypad key if one has been hit */

cursor(w[l],col);

if (isdigit(c - joystat()))

(tone(1000,1);

str [ndigits] •« c;

p^itch(c) ;

if (col < w[2];

col++;

if (ndigits < ncols) /* not in last column */

ndigits++;

cursor(w[l],col);

keywait(c); /* wait till keypad character releas

)

B-53

.«v^^••>-•• — •. a.! ».*•«-* »^ •.»..••».•., • -.'*•'*'-•---.*.:-*-*-*.*'. . L.t-i.i'.i'.i-i.n. »*-«*-» - .'- »—'_ »'- m' - •»' »* »*-»"- »*- •'. ail • . • •
B-54

>'

PAGE 2 May 30, 1985 09:15 AM B:GETDIGIT.C

else if ((c «• '\b') && (col > w[0])) /* backspace charact

{

tone(500,1);

ndigits—;

if (ndigits < ncols - 1) Jjfl

col—;

cursor(w[l],col);

putch(' •)?

cursor(w[l],col);

keywait(c); /* wait till keypad character releas } - ' ' ~ ;£

else if (c •• 'Xn') /* carriage return */

{ sS

tone(750,1); *

keywait(c); /* wait till keypad character releas g|

if (ndigits — ncols) 1^

•- *- •

/* terminate string, clear "Press...Mmessage and return |vj

str[ndigits] - *\0*; :<

videoln(window[3]);

return(TRUE);

}

/* present error message, restore intructions */

getln(MSGLN,0,80);

clearl(MSGLN,0,80,REVIDEO);

printf (

,,A[[34;47m Please enter a 6 digit coordinate*[[44;37m

nap(3000);

putln(MSGLN,0,80);

cursor(w[1],col);

)

/* user has not entered all digits */

return(FALSE);

wV- :. ".-.V.rf.VJ.\','.'-\".•.*••. •:. i - •'• • - •'- - • •'- -VfcV».•*«•%*.-•'%.' —• «-•.*!- m.'.»j «.' »_• •-• o. «-•"«-•">-'*•-•• »-'"A-

- •-•- '-•. %-' c. »-• •- •- - -. ... . _' . J
PAGE 1 May 30, 1985 09:16 AM B:GETLINE.C

/* ******* •%*******************************************************/

/* Name: getline

/* Description:

/* This function reads a line from a file and puts it in

/* the buffer passed to it.

/* Inputs: fid - file to read from

/* buf - buffer to read line into

/* lim - length of buffer

/* Outputs: i - number of characters read

/* Side effects:

/* \n character is stripped from line

/•A**************************************************************/

#include "stdio.h"

*/

»

*/

*/ . -J

*/

*/ •« "

*/

*>

*/ y

*/

V

*/ •-

getline(fid,buf,lim)

int fid,lim;

char buf[];

{

int c • 0;

int i - 0;

/* character read

/* number of characters read

*/

V

c

while ((i < lim) && (c I« %\r\%))

i

read(fid,&c,1) ;

if (c !- »Xn»)

buf[i++] - c;

)

/* terminate string */

buf[i] -

,\0I

?

return(i);

B-55

: V.V-%.'. <U•«_ *-' bM •-' *-'»- «-" •-----• m&ai •- • *- «- »-

. • . < . i. t_ • . . _• . . * . i. .. •. . •-•-•-'--•- J
us

PAGE 1 May 30, 1985 09:16 AM B:GETNAME.C

•

/* Name: getname */

/* Description: */

/* This function gets a name from the TICCIT keyboard. */

/* Inputs: name - user's name */

/* Outputs: None */

/* Side effects: */

/* Name limited to 25 characters */

/ A************************************************-***************/

#include "atrdefs.h"

#include "ctype.h"

extern char window[]; /* useable portion of screen */

getname(name)

char name[];

{

int c;

int len;

int nchars;

int ntries;

char row,col;

/* keyboard character entered

/* number of chars in password

/* number of chars entered

/* number of guesses allowed

/* position of cursor in window */

V

*/

V

V

/* initialize variables, blank input window */

pcvgcp(&row,&col);

curs_off();

nchars - ntries - 0;

len - 25;

pcvwca(len,' •,REVIDEO);

/* process keys till user hits carriage return */

while (c « getch())

{

clearl(MSGLN,0,80,REVIDEO);

if (nchars < len && isprint(c))

{

pcvscp(row,col + nchars);

pcvwca(1,c,NORMAL);

name[nchars++] * c;

)

else if (c -= '\r')

{

if (nchars •• 0)

name[nchars++] « • *;

name[nchars] • *\0';

pcvscp(row,col + nchars);

pcvwca(len - nchars,' ',NORMAL)

return;

)

else if (c — '\b' && nchars > 0)

(

pcvscp(row,col + —nchars);

pcvwca(1,• ',REVIDEO);

)

) /* end while */

/* carriage return '/

/* backspace charact

SB

B-56

tV-' \ v .\ , m'\ m\ m'\ MI .».»A^—» Ik-ot« •• »• ».^ • '»-^-•-•.. - ».*» .V.'tA »'-'•- ' -'• - «-»-' -"»-'» -'» - m -V-* -•».-•»-j ..-'.-. -^ ."»-'l
PAGE 1 May 30, 1985 09:16 AM B:GETNUM.C

/**********************************^

/* Name: getnum */

/* Description: */

/* This function gets a number from the user as it is */

/* entered from the keypad on the joystick. */ £vj

/* Only digits 0-9, carriage return (•#' on the keypad), */ [8^

/* and backspace (•*• on the keypad) are allowed as input. */ >£

/* Inputs: w - field where 6 digit number is to be entered */

/* str - variable which will contain the number */

/* Outputs: str - contains the number entered by the user */

/* Side effects: */

/* Error messages are displayed on MSGLN as defined in the */

/* atrdefs.h file. */

/***********************************^

#include "atrdefs.h"

#include "ctype.h"

extern char window[]; /* useable portion of screen */

getnum(w)

char w [ ];

{

int num; /* user*s repsonse */

int c; /* character entered from keypad*/

int ncols; /* number of columns in window */

int ndigits; /* number of digits entered */

char col; /* position of cursor in window */

/* initialize variables, blank input window */

ndigits • num • 0;

col « w[0];

ncols - w[2] - w[0] + 1;

clearw(w,NORMAL);

center(window,window[3] - window[1],"Press •*• to backspace or '

answer");

cursor(w[l],col);

/* process keys till user hits carriage return */

while (TRUE)

{

if (isdigit(c - joystat()))

{

tone(1000,1);

num - 10 * num + (c - '0');

putch(c);

if (col < w[2])

col++;

if (ndigits < ncols) /* not in last column */

ndigits++;

)

else if ((c •«• '\b') && (col > w[0])) /* backspace charact

{

tone(500,1);

num /- 10;

if (ndigits— < ncols) /* don't move cursor if last

col—;

B-57

v->'-»'-* ^. - - -»'-• -»^- ' ^*'
PAGE 2 May 30, 1985 09:16 AM BtGETNUM.C

cursor(w[l],col);

putch(» •)?

cursor(w[l]?col);

}

else if ((c •- '\n') && (col > w[0])) /* carriage return

{

tone(750,l);

keywait(c);

clearl(window[3],window[0],window[2] - window[0] + 1,N0R

return(num);

}

/* reposition cursor in window */

cursor(w[l],col);

keywait(c); /* wait till keypad character releas

} /* end while */

B-58

'*""**- -
PAGE 1 May 30, 1985 09:16 AM B:GETPOS.C

/* Name: getpos */

/* Description: */

/* This function gets the user's position on the terrain */

/* board as it is entered from the keypad on the joystick. */

/* Only digits 0-9, carriage return ('#' on the keypad), */

/* and backspace (•*' on the keypad) are allowed as input. */

/* Inputs: w - field where 6 digit number is to be entered */

/* str - variables which will contain the number */

/* Outputs: str - contains the number entered by the user */

/* Side effects: */

/* Error messages are displayed on MSGLN as defined in the */

/* atrdefs.h file. */

#include "atrdefs.h"

•include "ctype.h"

STextern char window[]j

getpos(w,str)

char w[],str[];

/* useable portion of screen '/

{

int c;

int ncols;

int ndigits;

char col;

/* character entered from keypad*/

/* number of columns in window */

/* number of digits entered */

/* position of cursor in window */

/* initialize variables, blank input window */

ndigits * 0;

col - w[0];

ncols • w[2] - w[0] + 1;

clearw(w,NORMAL);

center(window,windowf3] - window[l],"Press '*' to backspace or

answer");

cursor(w[l],col) :

/* process keys till user hits carriage return */

while (TRUE)

{

if (isdigit(c joystatO);

{

tone(1000,l);

str[ndigits] - c;

putch(c);

if (col < w[2])

col++;

if (ndigits < ncols)

ndigits++;

)

else if ((c »• '\b') && (col > w[0]))

{

tone(500,1);

if (ndigits— < ncols) /* don't move cursor if last

col—;

cursor(w[l),col);

putch(' •);

/* not in last column */

/* backspace charact

•A

• *-'d

B-59

^^•v: V-l»•I>l«>I-',"»%

-.

%

L>'-^>^>L»>^\^V»V'*kVVi!lv*,Vi•.-\l-'.\>s'/wi*»•-•.'!.l\Xlv--.V.'.-.•l^l.'l.:.-Iv- v- > .' • ^-«..
J\\

PAGE 2 May 30, 1985 09:16 AM B:GETPOS.C 38

cursor(w[l],col);

)

else if (c •• 'Xn1) /* carriage return */

{

tone(750,l);

keywait(c);

if (ndigits «« ncols)

{

/* terminate string, clear message line and return

str[ndigits] - *\0*;

clearl(window[3],window[0],window[2] - window[0] + 1

return;

)

.v.

s.

/* present error message */

getln(MSGLN,0,80);

clearl(MSGLN,0,80,REVIDEO);

printf (

,,A[[34;47m Please enter a 6 digit coordinate^ [44

nap(3000);

putln(MSGLN,0,80) ;

)

/* reposition cursor in window */

cursor(w[l],col);

keywait(c);

) /* end while */

B-60

-—•' A**•- -Cä&j••>-' «-- -' ^' -' -' -'•>-•>-• -'-W '-"'-•J
PAGE 1 May 30, 1985 09:17 AM B:GETPW.C

/* Name: getpw */

/* Description: */

/* This function gets a password from the TICCIT keyboard. */

/* The user is given three tries to correctly enter the */

/* password. */

/* Inputs: passwd - password to compare userfs entry to */

/* Outputs: TRUE - if password entered correctly */

/* FALSE - if password not entered correctly */

/* Side effects: */

/A***************************************************************/

•include "atrdefs.h"

#include "ctype.h"

extern char window[]; /* useable portion of screen */

1i

getpw(passwd)

char passwd[];

{

int c;

int len;

int nchars;

int ntries;

char row,col;

char str[10];

/* keyboard character entered */

/* number of chars in password */

/* number of chars entered */

/* number of guesses allowed */

/* position of cursor in window */

/* string to hold user's entry */

/* initialize variables, blank input window */

pcvgcp(&row,*col);

curs_off();

nchars - ntries - 0;

len « strlen(passwd);

pcvwca(len,• *,REVIDEO);

/* process keys till user hits carriage return */

while (TRUE)

{

c • getch();

clearl(MSGLN,0,80,REVIDEO);

if (isalpha(c) && nchars < len)

(

pcvscp(row,col + nchars);

pcvwca(l,' •,NORMAL);

str[nchars++] - toupper(c);

)

else if (c •• ' \b» && nchars > 0) /* backspace charact

{

pcvscp(row,col + —nchars);

pcvwca(1,• •,REVIDEO);

)

else if (c «« ' \r*) /* carriage return 7

{

str[nchars] - *\0';

if (strcmp(passwd,str)

return(TRUE);

else if (ntries++ < 2)

{

0) /* correct */

/* try again */

B-61

«*- «*- «*- •*-• -»" -'- • -*- -"- -- -* -» - •* -* -' - -- -' -* -

'•-•-•-•-'•---*-' -f ->"*-»'-->"•->-*' y - '-- -? ."-• -» -» •-»*•-«*-^ •-.'•_»-•*•:_» _.'-fc\."- ^- • - • -«-;- A
PAGE 2 May 30, 1985 09:17 AM B:GETPW.C

printf (

,,A[[34;47m Sorry, please try againA

[ [44;37m

nchars - 0;

pcvscp(row,col);

pcvwca(len,» •,REVIDEO);

)

else /* no more chances */

return(FALSE);

\

} /* end while */

$

B-62

.". /, •. A-^ -» •» -• '•'-'''- jmi^jim«-V-V-V-'«•-V.V.V.'VJ»'."I'-V-t-k
PAGE 1 May 30, 1985 09:17 AM B:GETTRY.C

/***********************************************^

/* Name: gettry */

/* Description: */

/* This function gets a number the TICCIT keyboard. Only */

/* 1,2 or 3 are accepted. */

/* Inputs: None */

/* Outputs: num - number entered */

/* Side effects: */

/•A************************************************************* */

#include "atrdefs.h"

gettry()

{

int c; /* keyboard character entered */

int num «0; /* number entered by user */

char row,col; /* position of cursor in window */

./* initialize variables, blank input window */

pcvgcp(&row,&col);

curs off();

pcvwca(1,• •,REVIDEO);

/* process keys till user hits carriage return */

while (1)

(

if (»l1<- (c - getch()) && c <- «3»)

{

num - c - '0';

pcvwca(1,c,NORMAL);

)

else if (c -• ' \bf) /* backspace character */

pcvwca(1,' •,REVIDEO);

else if (c •• '\r* && num > 0) /* carriage return

return(num);

) /* end while */

B-63

• »_" »_* ^_" %»* • . - ' • * • " %.*«_"• " •_* V ' • " •_* • • • * * «».* •_" -_* *.*•_* • * <" » * *.* V" • * •-" •_* •>

w

-•_.*_ '»^•V^V-V'V'^-'ji ^Q.-rV->^'\M''^'^'^:\M>'J'L'<^\M,'>»V-\ -^ r^ ^'^ •'••:>->. / / VVV ;... •. .;/ V-l
PAGE 1 May 30, 1985 09:18 AM B:HLINE.C

hline(row,col,n)

char row,col,n;

/* draws horizontal line with -| ends */

i

pcvscp(row,col);

pcvwc(l,,ü

l

);

pcvscp(row,col+1);

pcvwc(n - 1,»a»);

pcvscp(row,col+n);

pcvwc(1,•ft');

EHI

B-64

>•.

u'i'.V. i.'i'.'i.V. lo/.-l-iviv:^: A^V
PAGE 1 May 30, 1985 09:18 AM B:INITLINK.C

/* Name: initlink */

/* Description: */

/* This function initializes the link through the serial */

/* port to the switching device. If power to the switch */

/* is not on, a message is displayed until power is turned */

/* on. The serial buffer is cleared and the switch reset. */

/* Inputs: None */

/* Outputs: Noi e */

/* Side effects: */

/A***************************************************************/

#include Mstdio.hM

#include "atrdefs.h"

initlink()

{

/* set up serial port mode — bps, parity, data/stop bits */

pcasm(0,MODE);

/* clear serial port buffer */

while (pcags(O) & 0x0100)

pcarc(O);

/* check interface unit for power */

while (TRUE)

{

select(JOYSTICK);

nap(1000);

/* if buffer contains joystick statuses, power is on */

if ((pcags(O) 6 0x0100) && ((pcarc(O) & Oxff) >- 0x80))

break;

/* interface unit not powered up — display message */

cursor(MSGLN,1);

curs_off();

printf(

MA[[34;47m Please switch on power to the interface u

M

)

)

/* reset multiplexor */

select(NULL);

/* clear serial port buffer */

while (pcags(O) & 0x0100)

pcarc(O);

/* clear message line */

clearl(MSGLN,0,80,REVIDEO);

B-65
PAGE 1 May 30, 1985 09:18 AM B:JOYSTAT.C

/A***************************************************************/

/* Name: joystat */

/* Description: */

/* This function reads and decodes the joystick status, */

/* then sets return codes depending on that status. */

/* Inputs: None */

/* Outputs: 4 bit direction - if joystick moved */

/* ASCII code - if keypad pressed */

/* -1 - if fire button pressed */

/* 0 default */

/* Side effects: */

/* This function assumes that the joystick is selected. */

/**************************************************************• ^/

•include "atrdefs.h"

char kpdigits[] • /* digits from joystick keypad */

{•\0','l','2,,

,

7

,

/6,,

,

3

,

,'\n,,

,

\0',,9

,

,

,

\b,,'5'/8',,0

,

,

,

\0,

/

,

4

j oystat()

{

int sc; /* status code from joystick */

/* select joystick */

selact(JOYSTICK);

/* set return code based on joystick status read */

sc • pcarc(O) & Oxff;

if ((sc >- 0x80) && (sc <- 0x8e)) /* keypad press

sc - kpdigits[sc & OxOf];

else if ((sc >- Oxal) && (sc <- Oxaa)) /* joystick movement

sc 6- Oxff;

else if ((sc — OxaO) || ((sc >« OxbO) && (sc <- 0xb8)))

sc - -1; /* fire button press

else /* nr action

sc - 0;

/* return status from joystick */

return(sc);

B-66

'--'-»*-.'• /..'-•A •»_..'.•.•_• >_^V._^ _•..•.'_:,/_ ._•..•._•. V-.V'%. •- V •W •' •- »- •-•«-''-. ^' ».• «.'. »'«.-..••.• f«_* »•••^:.'*.VJ1..'^.».3_V^«> \m\m l". •*. «- «. • • l^jj
PAGE 1 May 30, 1985 09:18 AM B:LINEBUF.C

/A***************************************************************/

/* Name: getln(),putIn()

/* Description:

/* These function read/write and buffer one line from

/* the screen.

/* Inputs: row,col - starting coordinates for read/write

/* n - number of characters to buffer

/* Outputs: None

/* Side effects:

/* cursor positioned off the screen

/* attributes left unchanged

/A***************************************************************/

char ln[80]; /* line buffer */

getln(row,col,n)

char row,col;

int n;

{

register int i;

register char a,c;

register short ac;

curs_off();

for (i - 0; i < n; i++)

{

pcvscp(row,col + i);

ln[i] - pcvrca() £ Oxff;

)

)

putln(row,col,n)

char row,col;

int n;

(

register int i;

register char a,c;

register short ac;

curs off();

for (i - 0; i < n; i*+)

{

pcvscp(row,col +1);

pcvwc(l,ln[i]);

)

>1

X"*

hV

Ss

V m

*/

V

V

•&

V 1

m

*/ iffv

*/

*/

V v.

*/

*/

B-67

• <,

i>:l>:^:v:\iys:%v^^
PAGE 1 May 30, 1985 09:18 AM B:LOADTAB.C

/* Name: loadtab */

/* Description: */

/* This function opens the file of illegal coordinates */

/* for the ATR grid and loads a reference table. The */

/* table contains an entry for each grid center which is */

/* 16 bits deep, one for each direction. A 0 value means */

/* that display of that frame is allowed; a 1 value means */

/* that the frame cannot be displayed, usually because of */

/* editting errors in the disk or physical obstructions. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/* This routine assumes the file exists. This is checked */

/* for in startup routine. */

/****************************************************•***********/

•V i

extern int illegal[58][65]; /* illegal frame table */

loadtab()

{

int fid;

>.1

/* open file */

fid • open(Mbadframe.atr",0)

/* load table from disk file

read(fid,illegal,2*58*65);

close(fid);

V

'Of'

B-68

• ^ffifrffift^ •MM
PAGE 1 May 30, 1985 09:18 AM B:MENU.C

/****************************************************************/

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

Name: menu

Description:

This function presents an unnumbered menu of choices.

The current choice is highlighted and can be changed

using some input device (keyboard, joystick, mouse).

Modify the #defines and the entermsg variable to match

the input device.

Inputs: w - portion of screen available for menu

body - list of menu choices (0th is title)

npicks - number of available choices

curpick - last choice made

Outputs: curpick - new choice

Side effects:

Strings longer than the window is wide are truncated.

Assumes bottom line available for messages.

/A***************************************************************/

#include "stdio.h"

#include "atrdefs.h"

Sä

V

•JT*

V t-Jk

V

*/ '- *\

*/ ^ib V jy^

*/ t«

V &

*/ •»

*/ %*.-.

*/ ,v„"

*/ ',"

V v>

*/ v;

*/

V

«define

#define

«define

«define

«define

DOWN 0xa8

UP 0xa4

ENTER FIRE

getinput()

clrinput()

j oystat()

select(JOYSTICK) while (joystat() FIRE)

char entermsg[] • /* menu prompt

MA[[34;47m Use the joystick to highlight your choice, then press th

onA[[44;37m";

menu(w,body,npicks,curpick)

char w[],*body[];

int npicks,curpick;

{

char mw[4];

int i;

int width,height;

int oldpick;

/* window for centered menu display

/* index and loop counter

/* dimensions of menu window

/* previous menu choice

/* width of window is longest string — plus spaces and borders

width « strlen(bcdy[0]);

for (i • 1; i <- npicks; i++)

width « max(width,strlen(body[i]));

width +~ 4;

/* height is number of choices plus title and borders */

height - npicks + 3;

/* set up menu window — centered horizontally and vertically

mw[0] - 0.5 * (w[0] + w[2] - width);

mw[2] - mw[0] + width;

mw[l] - 0.5 * (w[l] + w[3] - (4 + npicks));

mw[3] • mw[l] + height;

/* draw box around window, display menu title and choices */

clearl(MSGLN,0,80,REVIDEO);

B-69

L-\ .-.-• L^lX
PAGE 2 May 30, 1985 09:18 AM B:MENU.C

clearw(mw,NORMAL);

box2(mw);

hline(mw[l] + 2,mw[0],width);

center(mw,1,body[0]);

for (i • 1; i <« npicks; i++)

{

cursor(mw[l] + 2 + i,mw[0] + 2);

printf(body[i]);

}

/* left justify */

/* display instructions, mark previous choice */

cursor(MSGLN,1);

curs_off();

printf(entermsg);

revideo(mw[l] + 2 + curpick,mw[0] + 1,width - 1);

/* process input */

clrinput();

while (TRUE)

{

oldpick - curpick;

switch(getinput())

{

case DOWN:

if (++curpick > npicks)

curpick - 1; /* wrap to top

break;

case UP:

if (—curpick < 1)

curpick • 1; /* don*t wrap

break;

case ENTER: /* remove menu, clear msg line

clearl(MSGLN,0,80,REVIDEO);

clearw(mw,NORMAL);

return(curpick);

break;

default:

break;

)

/* unroark previous choice, mark current one */

if (curpick !- oldpick)

{

normal(mw[l] + 2 + oldpick,mw[0] + 1,width - 1);

reviueo(mw[l] + 2 + curpick,mw[0] + 1,width - 1);

r>ap(200) ;

)

>S

V

*/

V

Ä

B-70

%" • V*.\\'a«AV *-"•*-'• /•"."• *w* '-", i^i^^liiil^iL^^
PAGE 1 May 30, 1985 09:19 AM B:NAP.C

/* Name: nap */

/* Description: */

/* This routine waits for approximately the number of */

/* milliseconds passed to it. It is completely dependent */

/* on the clock rate of the computer. */

/* Inputs: msecs - the number of milliseconds to wait */

/* Outputs: None */

/* Side effects: */

/A***************************************************************/

nap(msecs)

int msecs;

{

int i,j;

>?,

for (i • 0; i < msecs; i++)

for (j « 0; j < 50; j++); /* 50 loops « l/1000th? */

B-71

.*» ,

A•k'-V-'i.'..»-.-•.—v-'-".%.';.\v.'.-.'.%i' •-* *-• •-* '-'j~'.^^'-•-»'.:,».•»",• >.>'„-VA*»-»---» •IM v,«-^>> •- -'- -V •'* —«-—*•- ' •---•ii-i'-*- -r'1

-i'- -* -*»- *-'* -'* •
PAGE 1 May 30, 1985 09:19 AM B:NAVIGATE.C

/A***************************************************************/

*/

*/

*/

*/

*/

*/

V

*/

V

V

*/

*/

V

V

*/

Name: navigate

Description:

This function takes input from the steering assembly

and translates it first into coordinates and then into

frame numbers for the video disc player. It checks

for illegal action by the driver, signals them by a

tone from the computer, and ignores those actions.

/* Inputs: x,y,z " starting position on virtual terrain

/* msktxt - 4 lines of text to be displayed at the

top of the screen

Outputs: mileage - distance travelled by user

/*

/*

/*

/*

/*

/*

/*

/*

/*

/* Side effects:

This function must be declared in the calling routine

as:

float navigate();

/A************************************************************** */

#include "atrdefs.h"

/*

/*

/*

\ • C

extern int illegal[58][65];

extern char player;

extern char nplayers;

extern char mask[];

extern char window[];

float navigate(px,py,pz,msktxt)

char *msktxt[];

int *px,*py,*pz;

{

bit map of illegal frames

currently active player

number of active players

/* masked area over video

/* portion of screen for text

/*

/*

/*

unsigned frameno; /*

unsigned calcframe(); /*

float readodom(); /*

int x,y,z; /*

int oldx,oldy,oldz; /*

int sameframe; /*

int found; /*

int stat; /*

int try; /*

current video disc frame no.

declare calcframe function

get elapsed mileage function

coords of current position

coords of previous position

flag to show no change

frame found on disc?

input from joystick

number of attempts at frame

*/

*/

*/

*/

V

V

*/

V

*/

*/

V

V

V

V

/* start at parameters */

x - *px; y - *py; z - *pz;

/* find frame on next player and switch video */

player - toggle(player,nplayers);

frameno • calcframe(x,y,z);

for (try • 0; !findframe(player,frameno) && try < 2; try++);

video(player);

videoscr();

/* display compass, odometer */

clearw(mask,NORMAL);

disptext(mask,msktxt,0,3);

drawcompass(z);

drawodom(x,y);

center(window,window[3] - window[1],MPress button on joystick w

B-72

»*.»—y.y.^..* •^_«*i »*=.«'- •*- .*.''.- «*. i. .a*..; • *- sT.
PAGE 2 May 30, 1985 09:19 AM B:NAVIGATE.C

while (TRUE) /* let user drive till button hit */

(

/* save old coords in case new ones are illegal */

oldx * x? oldy « y; oldz • z;

/* reset flag indicating joystick movement */

sameframe • FALSE; M

Aj

*^m

/* calculate new coords from joystick input */

switch(stat « joystat()) '?

case FIRE: /* joystick button pressed */ ||

videoln(window[3]); *y

*px « x; *py - y; *pz • z;

return (readodom ()); ;".;-

break; !;-j

case FWD:

travel(&x,&y,z,0);

break;

case REV:

travel(&x,&y,z,8);

break;

case RIGHT:

pivot(&z,15);

break;

case LEFT:

pivot(&z,l);

break;

default:

sameframe - TRUE;

break;

)

/* if joystick in neutral position, restart loop */

if (sameframe)

continue;

/* if frame is illegal — sound tone, restart looo */

if (getbit(illegal[x][y],z))

{

tone(ERRFREQ,ERRTIME);

x « oldx; y « oldy; z = oldz;

continue;

}

/* search for frame */

player « toggle(player,nplayers);

frameno - calcframe(x,y,z);

found - findframe(player,frameno);

/* if error finding frame, restart loop */

if ('found)

{ wm

B-73 >yl

•-': ]
PAGE 3 May 30, 1985 09:19 AM B:NAVIGATE.C

x • oldx; y • oldy; z • oldz;

player - toggle(player,nplayers);

continue;

}

/* if joystick position has changed, restart loop */

if (joystat() 1- stat)

{

x • oldx; y • oldy; z = oldz;

player • toggle(player,nplayers);

continue;

}

/* set up delays to smooth out travels */

switch(stat)

{

case FWD: fc

case REV: j»

if (x « oldx) /* frames < 100 apart */

nap(400); J

break;

default:

break;

}

/* switch the video to the current player */

video(player);

/* update the status line on the screen */

compass(z);

updtodom(x,y);

} /* end of drive loop */

C

B-74

^^••-a'->^>.l«''->Nl»'^.'-V. V. -j.^viNl-:-^ '.•'•-*' > 'J^^tätkj^&Aj^tL^^SM^ijü^^
PAGE 1 May 30, 1985 09:20 AM B:NAVLSSN.C

/****************************************************************/

/* Name: navlssn */

/* Description: */

/* This function serves as the driver for a lesson in land */

/* navigation training. The lesson covers both terrain */

/* association and dead reckoning, and includes a practice */

/* problem encompassing both techniques. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/****************************************************************/

#include "stdio.h"

#include "atrdefs.h"

m

/* global variables */ Wk

int illegal[58][65]; /* bit map of illegal frames */

char player «0; /* currently active player */ !vj

char nplayers * 1; /* number of active players */ ':V\

char screen[] - {0,0,79,24}; /* screen definition */ •£]

char window[] - (1,3,78,23); /* portion of screen for text */ jij

main() H

( t'-:" static char *lssnmenu[] - /* navigation training menu */ ;V;

"LAND NAVIGATION TRAINING", 'il

' "Terrain Association", pj

••Dead Reckoning",

"Return to Main Menu" *>.

int nchoices «3; /* number of menu choices */

int choice - 1; /* menu option selected */ £d

m

/* load illegal frame table */

loadtab(); ;!•;

/* display navigation introduction */ /£

clearw (window,NORMAL) ; ••*«

> clear!(MSGLH,0,80,R£V1D£0); JS

disptxtf(window,"nltxt",0,2,18); /?]

drawcompass (0) ; £<

resetodom(0,0); !>£

drawodom (0,0) ; ;A

center (window, window[ 3] - window[l], "Press button on joystick to Sri

» joywait(FIRE); •

clearw(window,NORMAL); v^

delcompass(); -^

delodom(); >y

/* display menu of options - execute selected option */ ijj

> while (choice - menu (window, lssnmenu, nchoices, choice)) jj£

switch(choice)

case 1: /* terrain association lesson & problem */

trrnassn () ; :>\

break; fcj

B-7 5 •;•/
PAGE 2 May 30, 1985 09:20 AM BrNAVLSSN.C

case 2: /* dead reckoning lesson & problem */ V deadreck();

break;

case 3: /* return to main menu V .••vi

navsum(); :>;

return; "obreak; :«

default: Ü

break;

}?

•

B-76

V.

V.4

> »N .^.V >'• »

v« /« ..» .»*>'•'. .".V-V-V. •-• -• -» -*'-*-> J "^ • -*-'•*- --
PAGE 1 May 30, 1985 09:20 AM B:NAVREVU.C

/************** **************************************************/

/* Name: navrevu

/* Description:

/* This function serves as the driver for a review of

/* map and compass skills needed for land navigation.

/* If the student does not answer the questions in each

/* skill area correctly, a list of references is provided

/* to allow the student to relearn the skills.

/* Inputs: None

/* Outputs: None

/* Side effects:

/* The text part of the screen is cleared on return

/4**************A*********************************************** *^

tinclude "atrdefs.h"

AS L*!Ü

M

; S

\V,

*/

*/ *JUL

V

V • * *

V

V *»"i.N

V "• v.'*

V VIA

V

*/

*/

*/ ;•.•;

char *irtxt[] -

{

"

A

[[34;47m A

[[44;37m",

/* introductory review text */

SKILLS REVIEW

Mil

II

llll

II

II

II

II

llll

II

};

This segment reviews the skills you will need for land navi

You are given:",

1) a map of the terrain",

2) a black marker, and",

3) a protractor.",

Compass bearings appear on the bottom line of this screen."

char *refs[] /* list of references for prerequisite skills */

{

Now you have reviewed the skills you need to navigate from

point to another. For more information about topics covered, y

should consult these references:",

ii

it

II

llll

II

II

•I

llll

I

II

II

llll

J

II

•I

llll

M

II

II

mi

II

II

);

A

[[34;47m

C[44;37m",

Topic

Coordinate System

Azimuth Determination

Azimuth Conversion

Distance Measurement

Self Location

Reference

GTA 5-2-13: Pages 5-7,",

FM 21-26: Chap 3, Page 3-8, Par

GTA 5-2-13: Pages 17-21,",

FM 21-26: Chap 5, Page 5-1, Par

GTA 5-2-13: Pages 21 -23,",

FM 21-26: Chap 5, Page 5-2, Par

GTA 5-2-13: Pages 10-13,",

TEC Lesson 071-329-1008",

FM 21-26: Chap 4, Page 4-2, Par

GTA 5-2-13: Pages 35-41,",

FM 21-26: Chap 5, Page 5-15, Pa

/* global variables 7

+.

B-77

%_•. V-y--.'.-.- •••,-. ' _»• / .•.'•--•• ^-•.'•^•.V.^.-^-' •...•.-••••.•.V..-\i,.k-'. ^ v- J ._*.-.-_-^ j_ ^•^^•^••jr^'^i^-.^
PAGE 2 May 30, 1985 09:20 AM B:NAVREVU.C

int illegal[58][65];

char player • 0;

char nplayers « 1;

char screen[] • {0,0,79,24}

char window[] - {1,3,78,23}

/* bit map of illegal frames

/* currently active player

/* number of active players

/* screen definition

/* portion of screen for text

V

*/

*/

*/

V

main()

{

int nogo • 0; /* go/nogo for each review segment

/* load illegal frame table */

loadtab();

7

e")

/* text introduction for this review

clearw(window,NORMAL);

clearl(MSGLN,0,80,REVIDEO);

disptext(window,irtxt,3,12);

drawcompass(O);

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

delcompass();

clearw(window,NORMAL);

/* go through each review segment */

nogo +• coordsys();

nogo +• azimuth();

nogo +« distmeasure();

nogo +• resection();

/* display references if at least one segment missed */

if (nogo > 0)

{

clearw(window,NORMAL);

disptext(window,refs,0,19);

center(window,window[3] - window[l],"Press button on joystic

joywait(FIRE);

)

clearw(window,NORMAL);

r-j

yB-78

.VVL'^'.'A''^'i'^'ltJ"'. v'v'*v"*v*!v*":-'.* *>W*\AV1\.\VJV"-V'.v*lv\ •»".•w"*^"-*»".*» J-'.'vV.'"vVvV/-V*^vV^k.v Iv* "." -'\* vV« " c - * . m 

*• .''ft - • -"* - • -' .' • A. A
PAGE 1 May 30, 1985 09:21 AM B:NAVSUM.C

/A***************************************************************/

/* Name: navsum */

/* Description: */

/* This function presents text summarizing the two methods */

/* of land navigation. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/****************************************************************/

#include "atrdefs.h"

extern char window[]; /* useable portion of screen */

navsum()

{

/* land navigation summary */

disptxtf(window,"nstxt",0,2,18);

center(window,window[3] - window[l] ," Press button on joystick to

joywait(FIRE);

clearw(window,NORMAL);

disptxtf(window,"nstxt",18,3,17) ;

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

clearw(window,NORMAL);

)

B-79

&

,.N

»'•'.vV.- '.•** v \\'jt'j-':jL'^ •-». ^.'••»'^'»-I'.'JV.'.I '-^ - - - ..«-•->V-' _» w.'•-«* .jt _«* _. -. •^'.'^**_. ^ •-/•-•' _»>-i**-»' -> •-a'*.
PAGE 1 May 30, 1985 09:21 AM B:NAVTEST.C

/A***************************************************************/

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

Name: navtest

Description:

This function serves as the driver for a series of test

problems which the student does after taking the land

navigation training. Results of the land navigation

test problems are measured according to how close to

the destination the student comes. Results are reported as GÖ/N0G0 for each problem.

Inputs: None

Outputs: None

Side effects:

linclude "atrdefs.h"

*$£

>\\

V flfi V JCV 1 V 32

*/

*/

V

*/ Sä

*/ H

*/ $

V

V 5^

char *ntsttxt[]

A

[[34;47m

[[44;37m",

/* text intro to test proble

LAND NAVIGATION TEST

»Ml

I

It

H

II

Nil

II

II

II

II

II

II

H

M

Nil

i

H

II

It

Nil

It

N II

It

till

N

II

);

This test is designed to evaluate your ability to navigate

point to another in unfamiliar terrain. You may use terrain as

dead reckoning, or a combination of the two methods.M,

There are three navigation problems in this test. For each

we will place you at a location on the terrain which will be th

point. We will give you its coordinates and the coordinates of

lease point. You will plan a route from this start point to th

point using the map, protractor and marker, and then drive it.

free to take any route you wish, but your objective is to navig

best route to reach your destination within 50 meters. When yo

you have arrived at the destination, press the button on the jo

After you've completed all three of the problems, we'll dis

chart of results for each problem and an overall test result (G

to be entered in the Master Record.",

A

[[34;47m

[[44;37mM,

LAND NAVIGATION TEST R E

Student Name:

Problem

Attempt:",

Distance from Release Pt. Pass/Fail",

/* global variables 7

int illegal[58][65];

char player - 0;

char nplayers « 1;

char screen[] - (0,0,79,24);

char window[] - (1,3,76,23);

main()

(

char go_nogo;

/*

/*

/*

/*

/*

bit map of illegal frames

currently active player

number of active players

screen definition

portion of screen for text

/* result for test

V

V

V

V

V

*/

B-80
PAGE 2 May 30, 1985 09:21 AM

char name[80];

int i;

int try;

float howfar[4];

B:NAVTEST.C

/* student name */

/* loop counter and index */

/* test attempt number */

/* results of test problems */

/* load illegal frame table */

loadtab();

/* get password to continue */

clearw(window,NORMAL);

cursor(window[l] + 5,window[0] + 8) ;

printf("Please have your intructor enter access password: ");

if (!getpw("HAGGARD"))

{

clearw(window,NORMAL);

return;

)

/* get studentfs name */

cursor(window[l] + 7,window[0] + 8) ;

printf ("Please enter students name: ");

getname(name);

/* find out which attempt this is */

cursor(window[l] + 9,window[0] +8);

printf("Which attempt at the test is this (1/2/3)? ");

try - gettry();

/* display intro text */

clearw(window,NORMAL);

clearl(MSGLN,0,80,REVIDEO);

disptext(window,ntsttxt,2,19);

center(window,window[3] - window[1],"Press button on joystick to

joywait(FIRE);

/•do appropriate problem set

switch(try)

{

case 1;

navtstl(howfar);

break;

case 2:

navtst2(howfar);

break;

case 3:

navtst3(howfar);

break;

default:

break;

)?

V

8Sa

I

^ V

\>.

/* present results */

textscr();

disptext(window,ntsttxt T 19,2,7);

cursor(window[lj + 4,window[0] + 25)

printf("%-25sw,name);

B-81

-*«*-»"-•«*-'•'- -"-V* v" -»•• «-•*..- '-» _l_"^.JL fcj^ '*A 'j *•• .V—^.V."^dJd-\:'£m'*SiStL i. tiliUii
/* get password to continue */

do {

cursor(vindov[l] + l9,vindow[0] + 8);

curs_off();

printf("Please enter exit password: ") ;

) while (!getpw("BLASCHE")5;

clearw(window,NORMAL);

B-82

N

PAGE 3 May 30, 1985 09:21 AM B:NAVTEST.C

cursor(window[l] + 4,window[0] + 61);

printf("%d",try);

howfar[0] - 0;

for (i - 1; i <= 3; i++)

{

cursor(window[l] + 7 + i,window[0] + 17);

curs_off();

printf("%d %6.0f meters",i,howfar[i]);

if (howfar[i] <« 50)

{ :>2

printf("%21s","PASS"); £

howfar[0]++;

}

else printf("%21s","FAIL");

)

cursor(window[l] + 12,window[0] + 57);

if (howfar[0] >« 2) /* student passes */

(

printf("A[[34;47m GO A[[44;37m");

go_nogo « • G •; fcä«

)

else

{

printf("A[[34;47m NOGO A[[44;37m");

go_nogo * 'N•;

}

cursor(window[l] + 13, window[0] + 4);

printf("Intructor,");

cursor(window[l] + 14, window[0] + 8);

printf("Please enter %c%d for Unit 3, Lesson 9 in this student's

rd.",go_nogo,try);

cursor(window[l] + 16,window[0] + 8);

if (go nogo — »N1 && try < 3)

printf("The test for this lesson may be taken %d more time(s

•W-
i.r A..- A- «-- *

PAGE 1 May 30, 1985 09:21 AM B:NAVTST1.C

/A******************************************«********************/

/* Name: navtstl */

/* Description: */

/* This function presents a set of three test problems to */

/* the student which test his land navigation ability. */

/* Inputs: None */

/* Outputs: dist - array of distances from release points */

/* Side effects: */

/*************************&***********************************•**/

#include "atrdefs.h"

#define XI

«define Yl

«define Zl

«define X2

«define Y2

«define Z2

«define X3

«define Y3

«define Z3

6

30

10

28

39

0

53

21

10

/* start point for first test problem */

/* start point for second test problem */

/* start point for third test problem */

char *ntltxt[]

{

II A [[34; 47m

/* text for first set of problems */

NAVIGATION PROBLEM O

[[44;37m",

III!

H

Your start point is 309824. Use the map, compass and odomete

" plan and navigate a route to your release point .it 314802.",

Nil

HA[[34;47m NAVIGATION PROBLEM T

A

[[44;37m",

IMI

I

" Your start point is 282834. Use the map, compass and odomete

" plan and navigate a route to your release point at 257862.",

Nil

»•Af T34;47E NAVIGATION PROBLEM T H

[[44;37m",

UN

" Your start point is 252813. Use the map, compass and odomete

" plan and navigate a route to your release point at 264790.",

);

extern char window[]; /* useable portion of screen V

navtstl(dist)

float distf];

{

int x,y,z; /* coordinates on terrain board */

float navigate(), chkleg(); /* routines returning float */

/* present first problem

x - XI; y « Yl; z - Zl;

resetodom(x,y);

navigate(&x,fcy,&z,ntltxt);

'/

B-83

.'..-.'.--''.•-V .V-*--.'W^.-V^L.>.."-.-_'-' '-• .''JLJ:.''^'.~ '^•-»-«'-. -."-»r .r .•..-.-• ti , |. •..-.*- ••.._• • •.•._••.•»---., . . JkA. • - -*-' I
PAGE 2 May 30, 1985 09:21 AM B:NAVTST1.C

dist[l] « chkleg(&x,&y,&z,"314802","release point",50);

center(window,window[3] - window[1]," Press button on joystick t

nd problem ");

joywait(FIRE);

delcoord();

/* present second problem */

x « X2; y = Y2; z = Z2;

resetodom(x,y);

navigate(&x,&y,&z,ntltxt +5);

dist[2] «= chkleg(&x,&y,&z,"257862","release point",50);

center(window,window[3] - window[l]," Press button on joystick t

d problem ");

joywait(FIRE);

delcoord();

/* present third problem */

x - X3; y - Y3; z - Z3;

resetodom(x,y);

navigate(&x,&y,&z,ntltxt + 10);

dist[3] « chkleg(£x,&y,&z,"264790",''release point",50);

center(window,window[3] - window[1]," Press button on joystick t

);

joywait(FIRE);

delcoord();

S

I

B-84

J'J'-J^JZ J'f-'-'.'---*.*.V_V.V.V.. £m l'.l'^''^'. CmJLm •*-•'- <»V- r.V. <T. v'-/- f.HVM". tmjCm t'.«."-. t*-rf. t'-V.e. «'-''-•-V.V^^.'«'-V.*«*. >-. V ."»'..*•
PAGE 1 May 30, 1985 09:23 AM B:NAVTST2.C Mi

/****************************************************************/

/* Name: navtst2 */

/* Description: */

/* This function presents a set of three test problems to */

/* the student which test his land navigation ability. */

/* Inputs: None */

/* Outputs: dist - array of distances from release points */

/* Side effects: "* */

/A***************************************************************/

#include "atrdefs.h"

#define XI

#define Yl

fdefine Zl

#define X2

#define Y2

#define Z2

#define X3

#define Y3

#define Z3

5

36

7

43

26

10

54

47

0

/* start point for first test problem */

/* start point for second test problem */

/* start point for third test problem */

char *nt2txt[]

{

HA [[34;47m

/* text for first set of problems */

NAVIGATION PROBLEM 0

[[44;37m",

III!

I

•' Your start point is 310831. Use the map, compass and odomete

" plan and navigate a route to your release point at 306806.",

III!

II A [[34;47m

[[44;37m",

NAVIGATION PROBLEM

mi

i

" Your start point is 264819. Use the map, compass and odomete

" plan and navigate a route to your release point at 284792.",

Illl

"

A

[[34;47m NAVIGATION PROBLEM T H

[[44;j7m%

mi

" Your start point is 251844. Use the map, compass and odomete

" plan and navigate a route to your release point at 291862.",

extern char window[]; /* useable portion of screen 7

navtst2(dist)

float dist[];

(

int x,y,z; /* coordinates on terrain board */

float navigate(), chkleg(); /* routines returning float */

/* present first problem

x - XI; y - Yl; z"« Zl;

resetodom(x,y);

navigate(&x,&y,iz,nt2txt);

*/

B-85

-V>JI>-, I

%

J»^ >

%

J»"O"'J>'"-»"•-» •-»**-* •..*-•-?•"*-«> ->*•-»*-» -- •-.*--»•-• Li £J •-» '-a "-•..*•.»'.^.lu Va'-t V.'-« 'J-'^'J '*. V.'--.*J> :^.J .'jt.af. .•'•&.'••.'»* -V V *•' 'dii
PAGE 2 May 30, 1985 09:23 AM B:NAVTST2.C

dist[l] « chkleg(£x,&y,&z,"306806","release point",50);

center(window,window[3] - window[1]," Press button on joystick t

nd problem ");

joywait(FIRE);

delcoord();

/* present second problem */

x = X2; y • Y2; z • Z2;

resetodom(x,y);

navigate(&x,&y,&z,nt2txt + 5);

dist[2] - chkleg(&x,&y,&z,"284792","release point",50);

center(window,window[3] - window[1]," Press button on joystick t

d problem ");

joywait(FIRE);

delcoord();

/* present third problem */

x - X3; y - Y3; z - Z3;

resetodom(x,y);

navigate(&x,&y,&z,nt2txt + 10);

dist[3] - chkleg(&x,&y,&z,"291862","release poi t",50);

center (window, window[ 3] - window[l],MPress butt-on on joystick t

);

joywait(FIRE);

delcoord();

ra

B-86

»"-« « - • - » - »*- ^- -*- »'- »* ».' i"- «*--*- W•'. «^ -" -' >"*^>-«*,l'' »'• •»'-'•-»'^'^',

,«>-
PAGE 1 May 30, 1985 09:23 AM B:NAVTST3.C

/*******************************************

/* Name: navtst3 */

/* Description: */

/* This function presents a set of three test problems to */

/* the student which test his land navigation ability. */

/* Inputs: None */

/* Outputs: dist - array of distances from release points */

/* Side effects: */

/I»******«********************************************************/

#include "atrdefs.h"

#define XI 18 /* start point for first test problem */

#define Yl 22

«define Zl 2

#define X2 55 /* start point for second test problem */

Idefine Y2 31

#define Z2 13

Idefine X3 28 /* start point for third test problem */

#define Y3 17

tdefine Z3 14

char *nt3txt[] • /* text for first set of problems */

{

,,A[[34;47m NAVIGATION PROBLEM 0

A

[[44;37m",

mi

i

" Your start point is 294814. Use the map, compass and odomete

" plan and navigate a route to your release point at 269830.",

ii ii

MA[[34;47m NAVIGATION PROBLEM T

A

[[44;37m",

mi

" Your start point is 250824. Use the map, compass and odomete

M

plan and navigate a route to your release point at 276837.",

•Ml

I

II A

[[34;47m NAVIGATION PROBLEM TH

A

[[44;37m",

llll /

II Your start point is 282808. Use the map, compass and odomete

" plan and navigate a route to your release point at 314839.",

)?

extern char window[]; /* useable portion of screen */

navtst3(dist)

float dist[];

(

int x,y,z; /* coordinates on terrain board */

float navigate(), chkleg(); /* routines returning float */

/* present first problem */

x - XI; y * Yl; z * Zl;

resetodom(x,y);

navigate(&x,iy,4z,nt3txt);

B-87
PAGE 2 May 30, 1985 09:23 AM B:NAVTST3.C

dist[l] » chkleg(&x,&y,&z,"269830","release point",50);

center(window,window[3] - window[1]," Press button on joystick t

nd problem ");

joywait(FIRE);

delcoord();

/* present second problem */

x - X2; y - Y2; z - Z2;

resetodom(x,y);

navigate(&x,&y,&z,nt3txt + 5);

dist[2] - chkleg(&x,&y,&z,"276837","rcease point",50);

center(window,window[3] - window[1],Hi/ess button on joystick t

d problem ");

joywait(FIRE);

delcoord();

/* present third problem */

x - X3; y - Y3; z • Z3;

resetodom(x,y);

navigate(&x,&y,&z,nt3txt + 10);

dist[3] - chkleg(&x,&y,&z,"314839","release point",50);

center(window,window[3] - window[1]," Press button on joystick t

);

joywait(FIRE) ;

delcoord();

B-88

• ••

•''t.' *.'».'Vv''t Ü'^'V1 .-V. • ^J'. • • »'. ••'•'. I*- »'- •- •'- • -« • '"- > . i.i..«.. -»'- >'- «•-'.•- •-'• •' '• '• -? - - »•.'-• - -^-• - - v. - -» -' -• *-- -»
FAGE 1 May 30, 1985 09:24 AM B:NORMAL.C

/A***************************************************************/

/* Name: normal */

/* Description: */

/* This function sets the attributes for a row from col */

/* to col + n to normal video. */

/* Inputs: row,col - starting coordinate for lowlighting */

/* n - number of characters to lowlight */

/* Outputs: None */

/* Side effects: cursor positioned off the screen */

/A***************************************************************/

#include "atrdefs.h"

normal(row,col,n)

char row,col;

int n;

{

register int i;

register char a,c;

register short ac;

curs_off();

for (i - 0; i < n; i++)

{

pcvscp(row,col + i);

ac • pcvrca();

c • ac & Oxff;

a - NORMAL;

pcvwca(l,c,a);

)

)

B-89

r. -*,

*'-' '-' *-'-*»'.%''-%*-••*-•»'-:..". .'-•»'.'»V« - «V« -t. -*» .'»V» . »V» -•/_•» .•» .« - | -". -. J» -a*-'» ~*W -^Vfr r'*-'»-''1- »-*» -•*» -** -"* -* -'» -*» -'* -'•*** -'-» -

v

- '» - - ••
PAGE 1 May 30, 1985 09:24 AM B:ODOMETER.C

/* Name: drawodom,updtodom,resetodom,delodom,readodom */

/* Description: */

/* These functions provide a display of the user's */

/* position in the terrain. */

/* Inputs: x,y - coordinates in internal format */

/* Outputs: None */

/* Side effects: */

/* These routines all reference the mileage variable, */

/* which is global to these routines. */

/A***************************************************************/

#include "atrdefs.h"

static float mileage =0; /* distance traveled */

static int x0,y0; /* previous coordinates */

updtodom(x,y)

int x,y;

{

double sqrt(); /* square root calculator */

/* display updated distance traveled (meters) */

mileage +« 12 * sqrt((double) (x - xO) * (x - xO) + (y - yO) * (

cursor(MSGLN,70);

curs_off();

printf(MA[[47;34m%06.Of m

A

[[37;44m",mileage);

/* save current coords */

xO • x;

yO - y;

)

drawodom(x,y)

{

/* display odometer label */

cursor(MSGLN,50);

curs off();

printf(MA[[47;34mDistance Traveled: •');

/* display mileage */

updtodom(x,y);

)

resetodom(x,y)

int x,y;

{

mileage • 0;

xO - x;

yO - y;

)

delodom()

{

clearl(MSGLN,5C,30,REVIDEO);

)

B-90

." i •".."

V^VJA'./-*-*''•**• •\.'^V,j',i'. *L -^'-^'-•AV.'--A.•^.••t'.^'-.i'-^.-.».'v,..\ .-^'•^L'-J" •^-»''^ AVA.J •-'"•-S 'jj h£}M ".* '-• '-* •'•» .*'*. '*.:^l-i
PAGE 2 May 30, 1985 09:24 AM B:ODOMETER,C

float readodom()

{

return(mileage);

B-91

^ÄS^^^irf^^ii^^^;^ m "C*. »» •'• 1*. 1*« * . I« W 4*. \~. »'» f.'«. S--i^i"-i.'."«

* - * - >*- * - •. . «'
V.

PAGE 1 May 30, 1985 09:24 AM B:PIVOT.C

/* Name: pivot */

/* Description: */

/* This routine is used to turn in one of 16 possible dir- */

/* ections on the ATR grid. */

/* Inputs: z - current bearing before turn is started */

/* Inputs: dir - direction in which to turn(RIGHT,LEFT) */

/* Outputs: z - new bearing after turn is completed */

/* Side effects: */

/A***************************************************************/

int pivot(z, dir)

int *z,dir;

{

*z - (*z + dir) % 16;

'V

fcfl

V -\

B-92 .-.

i^ > '- » '• »-*. «-'• » *• »-'- »-*• »-1 *-' »-^ »-"- w »-'- i". <'. «\ '.*» t*. A*. ;.". V- i*. •'. •*- •'- .*- •' - «*- fcA »'- »"- »•'- » - »" »*- «*- »'- «*- »"- ** •*- •*- »"- *'- *-
PAGE 1 May 30, 1985 09:25 AM B:RANDLOC.C

/•A**************************************************************/

/* Name: randloc */

/* Description: */

/* Generates a legal random location and direction on the */

/* terrain board. */

/* Inputs: px,py,pz - pointers to variables to be filled */

/* Outputs: px,py,pz - pointers to random location */

/* Side effects: */

/A***************************************************************/

extern int illegal[58][65];

randloc(px,py,pz)

int *px,*py,*pz;

{

long time();

/* illegal frame table

/* function returning elapsed seconds

V

V

•/

/* seed random number generator with time

srand((unsigned) time());

i

&

«ft

/* generate coordinates till legal */

do {

*px « (rand() % 54) + 2;

*py » (rand() % 61) + 2;

*pz • rand() % 16;

} while (getbit(illegal[*px][*py],*pz));

B-93

&

-» '•* '-• '-V'.'- ..-". . •'- • - £m »'- «*- •'- **~ t'.^1<,-l«'t,tV. *^ I « * «- '• •- >->-' ^-»-••>--*- »-
PAGE 1 May 30, 1985 09:26 AM B:REJECT.C

/A***************************************************************/

/* Name: reject */

/* Description: */

/* This function blanks the video monitor and rejects all */

/* the video disc players. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/A***************************************************************/

finclude "atrdefs.h"

linclude "stdio.h"

extern char nplayers; /* number of active players */

reject()

{

int player;

/* blank the video monitor */

video(BLANK);

/* reject each player */

for (player • 0; player < nplayers; player++)

{

clearl(MSGLN,0,80,REVIDEO);

printf(MA[[34;47m Rejecting videodisc player %dA[[44;37m",

vdcmd(player,REJECT);

)

/* reset the multiplexor */

select(NULL);

B-94

•.•-•>--, .'-•••••.• ».•-•.•-^ :-.-.•--. ... . v-.-V^w-r- -..^V^' v «.•••-.«.• a, .*•-•• w'^'i.-V.^-'>-\V«.-.^'«.V> .r\-. a\ •.".«.» s\ «. *.
PAGE 1 May 30, 1985 09:26 AM BlRESECTIO.C

/•A**************************************************************/

/* Name: resection

/* Description:

/* This function reviews the student1s ability to locate

/* himself in unfamiliar terrain. It places him at a

/* point in the terrain and allows him to pivot to shoot

/* back azimuths. He is allowed up to three attempts to

/* correctly give his location.

/* Inputs: None

/* Outputs: re - 0 if located in <« three attempts

/* - 1 if not located

/* Side effects:

/A***************************************************************/

#include "stdio.h"

#include "atrdefs.h"

*/

V

*/

*/

V

V

*/

V

*/

V

V

Idefine X

Idefine Y

«define Z

47

32

4

/* map location for resection */

char

{

IIH

N

II

nit

ti

ii

it

it

it

it

);

*ltxt[] -

A

[[34;47m

[[44;37m",

/* text for resection review V

FINDING YOUR LOCATIO

When you are navigating from one point to another, you need

how to locate your position by looking at the terrain around yo

You will be placed somewhere on the terrain and asked to de

the coordinates of your location. Use the joystick to move and

around. You will be able to move up to 30 meters in any direct

study the surrounding terrain. A tone will sound when you cann

any further in that direction. Pressing the button on the joys

return you to your starting point."

extern char window[]; /* useable portion of screen V

resection()

{

int i;

int x,y,z;

int ntries;

int re;

float dist;

/* index and loop counter

/* coordinates on terrain board

/* number of guesses made

/* return code to calling pgm

/* distance to actual location

V

V

V

V

V

/* display location determination text */

clearw(window,NORMAL);

disptext(window,lrxt,3,13);

center(window,window[3] - window[1]," Press button on joystick t

joywait(FIRE);

/* get user's response to coordinate question and evaluate */

x - X; y - Y; z - Z;

B-95

-•''-*>-..'••-».'•••'• ••• >-•-'»» -y.-..^-> ..•-. - * .y»'-y'-V-- ..-. t .-.W..-« -^ Jm^h —-'--•-" •a.^.v.»j.'^..'.'..-...,..i.i,
i\-w y-" vv~* «T sfT»"• .~* v* in \n> vwL-» WH

PAGE 2 May 30, 1S85 09:26 AM B:RESECTIO.C

resetodom(x,y);

if((ntries = askpos(&x,&y,&z,&dist)) <- 3)

re • 0; /* user guessed correctly */

else re = 1;

/* clear screen, message line and return */

center(window,window[3] - window[l],MPress button on joystick t

);

joywait(FIRE);

textscr();

return(re);

B-96

\Z£y£*.*?£&^^^
'.••"^•.•vv

PAGE 1 May 30, 1985 09:26 AM BrREVIDEO.C

/A***************************************************************/

/* Name: revideo */

/* Description: */

/* This function reverses video from col to col + n. */

/* Inputs: row,col - where to start */

/* n how many colums to do */

/* Outputs: None */

/* Side effects: */

linclude "atrdefs.h"

revideo(row,col,n)

char row,col;

int n;

{

register int i;

register char a,c;

register short ac;

curs_off();

for (i - 0;i < n; i++)

{

pcvscp(row,col + i);

ac - pcvrca();

c « ac & Oxff;

a « REVIDEO;

pcvwca(l,c,a);

)

}

B-97
PAGE 1 May 30, 1985 09:26 AM B:ROUTELOG.C

/* Name: drawlog,newlog

/* Description:

/* These functions are used to maintain a route log used

/* with the dead reckoning method of land navigation.

/* Inputs: None

/* Outputs: None

/* Side effects:

/* newlogO must be declared in calling routine as:

/* struct logentry *newlog();

/A***************************************************************/

#include "ctype.h"

#include "atrdefs.h"

*/

V

V

V

V

V

V

V

V

char *logsheet[] = /* blank log sheet */

{

"öäää 1 aäääöäääa 2 äääöaää 3 ääääöäää 4 ääääöäääää 5 äääääöäää 6 ää

»• ' Measured • Actual ' Forward •

"• Odometer • Distance • Distance • Magnetic • Declination ' Grid

••• Reading • (meters) • (meters) • Azimuth " Correction ' Azimuth

"Üääääääääääeääääääääääeääääääääää6ääääääaäää6äääääääaäääääeääääääää

u • • • • • •

it • • • • • •

ii • • • • • •

it • • • • • •

II • • • • • •

ti • • • • # •

II • « • • • •

II • • • • • •

"äääääääaäääeääääääääaäeaääääääääaeääääääääääeaääääääääääääeääääääää

);

char logwndw[] - {5,9,74,22}?

extern int offset;

drawlog(p)

struct logentry *p;

{

int i;

/* window on screen for log

/* declination correction

/* display log sheet

/* index and loop counter

disptext(logwndw,logsheet,0,13);

for (i « 0; i < 4; i++,p++)

{

if (isascii(p->point))

{

cursor(logwndw[l] + 5 + 2*i,logwndw[0] + 1);

putch(p->point);

);

if (p->odom_rdg >• 0)

{

cursor(logwndw[l] + 5 + 2*i,logwndw[0] + 4);

printf(M%06,0f",p->odom_rdg);

)l

if (p->m_dist >» 0)

{

V

*/

V

V

B-98

•v'.<.:<-
PAGE 2 May 30, 1985 09:26 AM BsROUTELOG.C

cursor(logwndw[l] + 6 + 2*i,logwndw[0] + 14);

printf (»%4.0fM,p->ia_dist) ;

};

if (p->a_dist >* 0)

{

cursor(logwndw[l] + 6 + 2*i,logwndw[0] + 25);

printf("%4.Of",p->a_dist);

Ji

if (p->mag_azmth >= 0>

{

cursor(logwndw[l] + 6 + 2*i,logwndw[0] + 37);

printf("%3diM,p->mag_azmth % 360);

cursor(logwndw[l] + 6 + 2*i,logwndw[0] + 50);

printf((offset > 0) ? "+%diH: « %d",offset);

cursor(logwndw[l] + 6 + 2*i,logwndw[0] + 62);

printf(H%3d*H,(p->mag_azmth + offset) % 360);

)?

)i

)

curs_off();

struct logentry *newlog()

{

int instruct logentry *p;

/* return pointer to empty log */

/* index and loop counter

/* pointer to logentry

static struct logentry log[4]; /* log of entries

for (i - 0,p - &log[0]; i < 4; i++,p++)

{

p->point • -1;

p->odom_rdg • -1;

p->m_dist • -1;

p->a dist - -1;

p->mag__azmth • -1;

p->grd_azmth • -1;

)

return(p • &log[0]);

V

*/

*/

£

B-99

SC^ali ^ •--'» i h • h

v

'-^ v'^ !••• mtmMl
PAGE 1 May 30, 1985 09:27 AM B:SELECT.C

/A***************************************************************/

/* Name: select */

/* Description: */

This function sends the prefix and configuration codes */

to select the given device to a Western Telematic CAS- */

41 code activated switch. The prefix and configuration */

code definitions can be found in the "atrdefs.h" file. */

Inputs: device - device to select */

Outputs: None */

Side effects: */

#include "atrdefs.h"

/*

/*

/*

/*

/*

/*

/*

select(device)

int device;

{

/* clear serial buffer

while (pcags(O) & 0x0100)

pcarc(O);

'/

/* send prefix code and device code */

pcawc(0,SELECT)?

pcawc(0,device);

B-100

*-"-«-* »-*•«-' *•"• I-'.A.*. «.'. *J -*-' • • » ' «-1^ « - * - «- » - t - • - - - < - t .--•;. • - « - « - »- .'- »- . . •"»•»- .*- . - .' --»'-»- •'•-»•---^
PAGE 1 May 30, 1985 09:27 AM B:SENDFNUM.C

/*******•&********************************************************/

/* Name: sendfnum */

/* Description: */

/* This function converts an unsigned integer frame number */

/* (i.e. < 65,535) to a character string and sends it, one */

/* character at a time, to the videodisc player */

/* Inputs: player - which player to use */

/* frameno - unsigned frame number */

/* Outputs: None */

/* Side effects: */

/***********************************************************•****/

#include "atrdefs.h"

t

extern char vddigits[]; /* codes for numeric characters */

sendfnum(player,frameno)

char player;

unsigned frameno;

(

char framestr[6];

int i, len, sc;

/* convert frame number to a string of digits

len« stcu_d(&framestr,frameno,6);

/* send digits one at a time to the player

for (i - 0; i < len; i++)

vdcmd(player,vddigits[framestr[i]-,0']);

*/

V

B-101

il&- .«-.-»-•-'-'-^?.-- -»-*• '»'-^ -•»-'»-«•»-•»-« -'» -'« -'« »V^WA-'• -'» - «>*» ->-**-*>-»fc • -** -"• -'« -"^ -'»-^ hä
PAGE 1 Mav 30. 1985 09:27 AM B:SHUTDOWN.C

/****************************************************************/

/* Name: shutdown */

/* Description: */

/* This function rejects the videodisc players and tells */

/* the user how to reset the switches for TICCIT. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/****************************************************************/

#include "atrdefs.h"

ft

/* global variables */

char nplayers • 1;

char screen[] • {0,0,79,24};

char window[] - {1,3,78,23};

/* number of active players

/* 25 x 80 screen

/* useable portion of screen

main()

{

int i;

V

V

V

/* reject videodisc players */

reject();

/* show user TICCIT switch settings */

clearw(window,NORMAL);

clearl(MSGLN,0,80,REVIDEO);

disptxtf (window,"swtxt2,,,0,3,14) ;

center(window,window[3] - window[1],"Press button on joystick to

joywait(FIRE);

/* clear keyboard buffer and screen */

pckclr();

clearw(screen,NORMAL);

cursor(0,0);

B-102

.•.W'.**/.V.JL'rf.'jL -a..»:^v *-»•-«. V .

• •• •• ^N •« "•

« '-•• -» '-« '--- "-» -* '-» "-• -»'-* *-* -* '•* *-» -»•-'•-«-• *-« -* '-» •-» •-» '-* -* '-» '-*'-» -•-»'-»
PAGE 1 May 30, 1985 09:27 AM B:STARTUP.C

/•A**************************************************************/

Name: startup(SONY LDP-1000A version)

Description:

This function starts up the various components of the

ATR system. It puts up the main ATR screen, checks

the frame table file and the link through the serial

port to the switching device and spins up the players.

It also displays the correct videodisc switch settings

and allows the user to correct them if they are wrong.

Inputs: None

Outputs: None

Side effects:

/A***************************************************************/

#include ••stdio.h"

#include "atrdefs.h"

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

V

*/

*/

V

V

V

V

V

V

*/

V

•k

/* global variables */

char nplayers - 1;

char screen[] « {0,0,79,24};

char window[] • {1,3,78,23};

/* number of active players

/* screen definition

/* working area on screen

V

*/

V

mam()

{

char player;

int fid;

int i;

int sc;

/* display main ATR screen

textscr();

/* currently active player

/* file identifier

/* index and loop counter

/* status returned from port

>/

/* frame table file on disk?

if ((fid - open("badframe.atrM,0))

exit(2);

close(fid);

*/

/*

EOF)

*/

*/

*/

V

-emergency exit

/* init serial communications link */

initlink();

/* blank the video monitor

video(BLANK);

'/

/* show correct ATR switch settings */

clearw(window,NORMAL);

disptxtf(window,"swtxt",0,2,18);

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

clearw(window,NORMAL);

/* start players — SONYs stop at first frame

for (player - 0; player < nplayers; player++)

{

V

clearl(MSGLN,0,80,REVIDEO);

printf (

,,A[ [34;47m Starting videodisc player %dA

[ [44 ;37m" ,p

while ((sc « vdcmd(player,PLAY)) *= NULL)/* playernot conne

{

B-103

f^'^^i*^y^jy<»AV^\^'^^ ^AJ ^••»Ai • **• ^ ' »- »- •"- *- •- ttojali | , -!--<->-«-•-•
PAGE 2 May 30, 1985 09:27 AM B:STARTUP.C

cursor(MSGLN,0);

curs_off();

printf (

,,A[ [34;47m Please reset left switch on player %

and power it up againA[[44;37m",player +1);

}

if (sc •• ACK) /* wait for player to spin u

while ((pcarc(O) » 8) & 0x80) /* ignore time-outs

/* - TICCIT onl

else if (sc «« NACK) /* player spinning

J

)

8

B-104

* .V.

*-»*\V'-/»-»*•''«%»'">.»'>..'» .\.'\.>»'-fc» «IIL«j »» ^ '..'.V-l"-V_V •r --- -*- «-V-V- »'- tfl '*- **- «*- «*- «'• '*• 1 • lä
PAGE 1 May 30, 1985 09:28 AM B:TEXTSCR.C

/* Name: textscr */

/* Description: */

/* This function draws the screen for the ATR program. */

/* It is called at the beginning of the main program and */

/* each time text needs to be displayed on the screen. */

/* inputs: None */

/* Outputs: None */

/* Side effects: */

/************************************^

#include "atrdefs.h"

extern char screen[]; /* screen definition V

textscr()

{

/* display main ATR screen */

clearw(screen,NORMAL);

video(BLANK);

box2(screen);

hiine(screen[l] + 2,screen[0],screen[2] - screen[0]);

center(screen,1,"A DVANCED TERRAIN REPRESE

N");

clearl(MSGLN,screen[0],screen[2] - screen[0] + 1,REVIDEO);

}

B-105

. • - • • •&•

.i-<-- -«-•- • ._». ...••.'_•.'.-.. _*.' v'-V,--. _v ^V:J •.'.i.'.'.'.w-. «- . •-' m-' «-••>J
PAGE 1 May 30, 1985 09:28 AM B:TIME.C

/•A**************************************************************/

/* Name: time

/* Description:

/* This function reads the elapsed time from the system

/* clock and return it in seconds.

/* Inputs: None

/* Outputs: seconds - long integer

/* Side Effects:

/* This function returns a long integer and must be

/* declared as:

/* long time();

/********•********************************************************/

#include "dos.h"

MS

>.« >.*•

•>s

tf

V

*•>*"

*/

*/ *>1

V $

*/ i&

V

\* *

*/

V

V

v^

V

»t .•

V • «•

#define TICKS

#define SECS

1193180L

65536L

long time()

{

union REGS regs;

/* get number of elapsed ticks from system clock */

regs.h.ah «0; /* set interrupt entry point */

int86(0xla,®s,®s); /* DOS timer interrrupt */

/* return number of seconds */

return(((regs.x.cx « 16) + regs.x.dx) * SECS / TICKS);

B-106

- V *. •%. N. '- .•*>_, •,.'\J,>V»..> --"-'-"* '-^--.-•-i'.» -^

j

'•^•'"•'"'' '• "-• - . i. -.'-• •-
PAGE 1 May 30, 1985 09:28 AM B:TOGGLE.C V."

/*********************A******************************************/

/* Name: toggle */

/* Description: */

/* This function switches the active player to the next */

/* player in the series. */

/* Inputs: curplayer - number of currently active player */

/* nplayers - total number of players in series */

/* Outputs: number of new active player */

/* Side effects: */

/****************************************************************/

toggle(curplayer,nplayers)

int curplayer,nplayers;

{

r. Ji

return((1 + curplayer) % nplayers);

B-107

t-'. «" V~ <-«.«. <«.*.*, t'.V.V. ••-/-^-JT.^.V.«'- t'.Y.V-V. <•-.*.'.»•, «•-*.•-'•--"•'..'«•-"••-V-'.'-V-'-- :..•>-'«&..•-•. '-'-'^ ^. •-!». .j ^». A
PAGE 1 May 30, 1985 09:28 AM B:TONE.C

/A******************************************************************

/* Name: tone

/* Description:

/* This function produces a tone fron the speaker.

/* inputs: freq - frequency of tone (Hz)

/* time - lenth of tone (sec/10)

/* Outputs: None

/* Side effects:

code to put timer in right mode

basic time frequency in Hz

number of counts in 0.1 second

port controls timer mode

port controls tone frequency

port controls speaker

signal to turn speaker on

#define TIMERMODE 182 /*

«define FREQSCALE 1190000L /*

«define TIMESCALE 1230L /*

#define T MODEPORT 67 /*

#define FREQPORT 66 /*

#define BEEPPORT 97 /*

«define ON 79 /*

tone(freq,time)

int freq,time;

/* make tone of given frequency and length

{

int hibyte,lobyte,port;

long i,count,divisor;

/* set up frequency and time count */

divisor - FREQSCALE / freq; /* scale frequency to timer units

lobyte • divisor % 256;

hibyte - divisor / 256;

count * TIMESCALE * time; /* convert time to timer units

/* set up timer(frequency)

OUtp(T_MODEPORT,TIMERMODE)

outp(FREQPORT,lobyte);

outp(FREQPORT,hibyte);

port « inp(BEEPPORT);

and speaker ports */

/* prepare timer for input

/* set low byte of time register

/* set high byte of time register

/* save port setting

,NVI

r. ^ I Ml

f •

*•"%

/* sound speaker for desired length of time */

outp(BEEPPORT,ON); /* turn on speaker

for (i - 0; i < count; i++)

; /* mark time

outp(BEEPPORT,port); /* turn off speaker, restore setting

V."

B-108

V

JK

^•^.o%>: -• - J J -• :.-',

4.',t!,.i'

,

-t''.i',-''i'-'vj'-«%A'.t'.' -• j-*-••-• JV.C-'J. ^^T
PAGE 1 May 30, 1985 09:28 AM B:TRAVEL.C

/******************************************^

/* Name: travel

Description:

This function is used to travel from grid center to

grid center in the ATR grid. All travel is forward or

backward? turns are done as a pivot and then a travel.

Inputs: x,y,z - current location and direction

dir - direction of travel (FWD,REV)

Outputs: x,y - new location on grid after traveling

Side effects:

/A***************************************************************/

travel(x, y, z, dir)

int *x,*y,z,dir;

/*

/*

/*

/*

/*

/*

/*

/*

ff* .*» .

-

s

>

» V

V $

V K'J

V

*/ P V

V «

V fi V »S

*/

*/

*/

*/ >i

{

switch((z +

{

case 0:

case 1:

case 2

case 3

case 4

case 5:

case 6;

case 7

case 8

case 9:

case 10

case 11:

case 12

case 13

case 14

dir) % 16)

(*y)++;

break;

(*x)++;

(*y) +- 2;

break;

(*x)++;

(*y)++;

break;

(*x) +- 2;

(*y)++;

break;

(*x)++;

break;

(*x) +- 2;

(*y)—;

break;

(*x)++;

(*y)—t

break;

(*x)++;

(*y) — 2;

break;

(*y>—;

break;

(*x)~|

(*y) — 2;

break;

: <*x) —;

(*y)~;

break;

(*x) — 2;

(*y)~ ?

break;

(*x)--;

break;

(*x) — 2;

(*y)++;

break;

(*x) —;

(*y)++;

B-109

»'- '"- »*- - - -1 - - '±'J,'J -*:J •->••> •A. sLA'.»\ ',*! •*! mHaVa*t •! •> •*
PAGE 2 May 30, 1985 09:28 AM BsTRAVEL.C

break;

case 15: (*x)—;

(*y) +- 2;

break;

default: break;

)

sa

m

B-110

k. _^._ V ij» _^ . -'• *-*"s_'%-'. «-* •-">-• -'•-'•W' '. . ••.'•-' V -" *.'. ..'••— •-•.•-• •-' •-• h -' • k' «-' v

" '-* .-
PAGE 1 May 30, 1985 09:28 AM B:TRRNASSN.C

/•A**************************************************************/

/* Name: trrnassn */

/* Description: */

/* This function introduces terrain association as a tech- */

/* nique for land navigation. The list of steps shown */

/* is covered one by one as part of an example. A sample */

/* problem is also provided to allow the student to prac- */

/* tice immediately following the instruction. */

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/*****************************************^

#include "stdio.h"

#include "atrdefs.h"

extern char window[]; /* portion of screen for text */

trrnassn()

{

/* terrain association intro */

clearw(window,NORMAL);

clearl(MSGLN,0,80,REVIDEO);

disptxtf(window,"tatxt",0,3,13);

center(window,window[3] - window[i],"Press button on joystick to

joywait(FIRE);

/* planning the route */

clearw(window,NORMAL);

disptxtf(window,"rptxt",0,3,18);

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

/* go throught the route plan */

detazmthO ;

checkpts();

/* do example problem */

trrnxamp();

/* let user do practice problem */

trrnprob();

/* closing text on terrain association */

dif.ptxtf (window, "tctxt" ,0,3,15);

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

clearw(window,NORMAL);

B-lll

.-'. i'.'. .-.'. wi. •••'.v.l. t..'. .'• •'-..»• >-^. ^- ^ .' »:-.'-» _^--•—» - .'- - -f- -- -' ^- -•- ---r J. >.-9..-*-.-,-• ..A-^-^--»^J
PAGE 1 May 30, 1985 09:29 AM B:TRRNPROB.C

/***************************************^

/* Name: trrnprob

/* Description:

/* This function provides a student with a problem to

/* practice land navigation by terrain association. He is */

/* given a start point, a release point and several inter-

/* mediate checkpoints. He must navigate from the start

/* point to the release point, passing within 50 meters of

/* each checkpoint, which he indicates by pressing the

/* button on the joystick. If he is not on track, he is

/* placed at the checkpoint where he should be and can

/* continue.

/* Inputs: None

/* Outputs: None

/* Side effects:

/A***************************************************************/

#include "stdio.h"

#include "atrdefs.h"

#define X 21 /* coords of starting location */

#define Y 2

Idefine Z 0

int tplst[] * /* driving instructions for problem */

{HALT, HALT);

char *tptxt2[] • /* text for practice problem */

{

You have planned your route and you're ready to go. You mus

to each checkpoint in the correct order. You should be able to

one within 30 meters. A compass and odometer on the bottom lin

screen will show magnetic azimuths and distance traveled.",

V v;

V

*/

V

*/

•«•.

,v.

*/ &

V

V

*/

V ,v

V

*/

V £.'.

*/ •

M

II

II

II

III!

II

II

You are now at your start point at 291790. As the first le

route you need to navigate to the first checkpoint, the depress

" 298812. You may start whenever yea are ready.",

mi

r

mi

n

ii

mi

t

mi

H

n

mi

i

nn

n

ii

nn

tt

li

II

II

n II I

n

II

Your next checkpoint is the depression at 298823. You are

travel whenever you are ready.",

The next checkpoint is the road at 304832. You may start w

you are ready.",

Your release point is the boulder at 308841. You may start

you are ready.",

Great! You made it to the release point without missing a ch

You have learned to navigate well using terrain association. If

comfortable navigating by terrain association, you are ready to

on to the section on navigation by dead reckoning.",

Good! You made it to the release point successfully. Althou

route went a little astray from the checkpoints, you have learne

B-112

•-'•-*'- '- .'...-. . .AA'-\^t '._•.•..•.•'».'«••» ... '. .-..•>.. \ .'. . • f ••A,
PAGE 2 May 30, 1985 09:29 AM BiTRRNPROB.C

OS

M

II

Mil

II

II

II

II

};

igate fairly well using terrain association. If you are comfort

your ability in terrain association, you should go on to dead re

You seem to have had some difficulty navigating to the releas

You should review this section on terrain association again befo

on to the dead reckoning section. You may also want to practice

on the terrain using the Free Travel option from the Main Option

extern char window[]; /* useable portion of screen */

extern char mask[]; /* mask over top part of video */

trrnprob()

{

int i; /* index and loop counter */

int x,y,z; /* coordinates on terrain */

float dist[5]; /* distance from checkpoints */

float navigate(),chkleg(); /* routines returning float */

/* explain practice problem */

clearw(window,NORMAL);

disptxtf(window,"tptxt",0,3,9);

center(window,window[3] - window[1],"Press button on joystick to

joywait(FIRE);

/* display route plan */

textscr();

disptxtf(window,"plntxt",0,3,17);

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

/* show checkpoint coordinates */

clearw(window,NORMAL);

disptxtf(window,"ckptxt",0,3,16);

center(window,window[3] - window[l],"Press button on joystick to

joywait(FIRE);

/* let user do practice problem */

x «= X; y - Y; z - Z;

resetodom(x,y);

autodriv(&x,&y,&z,tplst);

clearw(mask,NORMAL);

disptext(mask,tptxt2,0,3);

center(window,window[3] - window[1]," Press button on joystick t

);

joywait(FIRE);

/* first leg */

navigate(&x,&y,iz,tptxt2 + 5);

dist[l] - chkleg(&x,&y,&z,"298812","depression",30);

center(window,window[3] - window[l];" Press button on joystick t

leg ");

joywait(FIRE);

delcoord();

/* second leg */

B-113
PAGE 3 May 30, 1985 09:29 AM B:TRRNPROB.C

joywait(FIRE);

textscr();

B-114

navigate(&x,&y,&z,tptxt2 + 9);

dist[2] • chkleg(&x,&y,&z,"298823","depression",30);

center(window,vindov[3] - window[1]," Press button on joystick t

leg "); •&,

joywait(FIRE);

delcoord();

/* third leg */

navigate(&x,&y,&z,tptxt2 + 13);

dist[3] * chkleg(&x,&y,&z,"304832","road",30);

center(window,window[3] - window[1],MPress button on joystick t

leg ");

joywait(FIRE);

delcoord();

/* last leg */

navigate(&x,&y,&z,tptxt2 + 17);

dist[4] * chkleg(&x,&y,&z,"308840","boulder",50);

center(window,window[3] - window[1],MPress button on joystick t

i;

joywait(FIRE);

videoln(window[3]);

clearw(mask,NORMAL);

/* evaluate performance and present appropriate screen */

dist[0] - 0;

for (i - 1; i <« 4; i++)

if (dist[i] <« 50)

dist[0]++;

if (dist[0] -- 4) /* made all checkpoints */

disptext(mask,tptxt2 + 21,0,3);

else if (dist[4] <« 50 && dist[0] >« 2)

disptext(mask,tptxt2 + 26,0,3);

else

disptext(mask,tptxt2 + 31,0,3);

center(window,window[3] - window[1]," Press button on joystick t

•t"»' iV_"*i •'! ••.«'.»•.#. •». ili ii. il. • •_ '^. M.tf, ».'|i_'|i. f.'|i.>. »_"!'.'• »_••• • '^^•^—^^•Jg-'^^
PAGE 1 May 30, 1985 09:29 AM B:TRRNXAMP.C

#define X 54 /* coords of starting location */

#define Y 60

#define Z 8

int txlist0[] • /* lists of driving instructions */

{KALT, HALT);

int txlistl[] *=

(FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, HALT);

int txlist2[] "

{RIGHT, FWD, LEFT, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD,

HALT);

int txlist3[] -

{LEFT, LEFT, LEF1. LEFT, LEFT, FWD, FWD, FWD, FWD, RIGHT, HALT};

int txlist4[] -

{FWD, LEFT, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, FWD, H

char *txtxt[] - /* text for navigation examp

I

Now we

1

11 travel from point A to point B along the route we

stopping at each checkpoint. A compass and odometer on the bot

of this screen will show magnetic bearings and distance travele

it

H

M

Mil

n

ii

I!

II II

I

II

II

II

II

mi

We ere at point A, facing south. Notice the contour lines on

that cross the route you have drawn. They show that we will be

downhill. Let's go to the first checkpoint, the tree at 251848.

We're at the first tree at 251848. This tree is a good check

cause it is at the bottom of a hill and at the north end of a va

leys are linear features, the best type of checkpoint. Now, com

distance displayed on the odometer with your measureed distance.

Let's continue to our next checkpoint, the tree at the south

valley (250831 on the map). We choose to travel along the valle

movement is easiest along valleys and ridge crests. We will tak

turn at first, but our general direction of travel will be to th

^.^^^

M

II

IS

•I II

" Now we're at the next tree. See how your distance measuremen

" with the odometer reading below. Your next checkpoint is to the

paved road at 255831. A road is another good linear feature to

B-115

•'"-.*-"• * • •. \ ". "." "• *.**."•."»*- "•."•."•.*-."•'.••'•"••*•• j' A • • ' » « • ". .•

•I

3

/* Name: trrnxamp */

/* Description: */

/* This function takes the student through an example of */

/* land navigation using the techniques of terrain asso- */

/* ciation, by driving through a sample problem under */

/* program control while giving textual comments. */ y"

/* Inputs: None */

/* Outputs: None */

/* Side effects: */

/***************************************^

#include "atrdefs.h"

%-

K-
PAGE 2 May 30, 1985 09:29 AM BlTRRNXAMP.C

" checkpoint. Note that the contour lines show that we will be go

tilt

I

tl

II

II

mi

i

it

ii

ii

};

Here's the road. So far, we've been using linear features, w

the best checkpoints. Elevation changes, such as hills or depres

make good checkpoints. Our release point is the depression towa

at 270831. Check the odometer reading, and when you're ready, w

We did it! We're at the depression at 270831 on your map. L

the odometer below, we have traveled a total of 486 meters. Thi

should be close to the distance you measured earlier.",

extern char mask[]; /* masked area of video screen */

extern char window[]; /* useable portion of screen */

trrnxamp()

{

int x,y,z; /* coordinates on terrain */ |

/* show terrain at start point */

x *= X; y * Y; z « Z;

resetodom(x,y); \

autodriv(&x,&y,&z,txlistO); |

clearw(mask,NORMAL);

disptext(mask,txtxt,0,3);

center(window,window[3] - window[1],MPress button on joystick t '.• );

joywait(FIRE) ;

videoln(window[3]); I

/* get ready to drive to first checkpoint */

clearw(mask,NORMAL);

disptext(mask,txtxt +4,0,3);

center(window,window[3] - window[1]," Press button on joystick t

}oywait(FIRE);

autodrive(&x,&y,&z,txlistl);

/* at first checkpoint */

clearw(mask,NORMAL);

disptext(mask,txtxt + 8,0,3); H

center(window,window[3] - window[1],MPress button on joystick t

);

joywait(FIRE);

videoln(window[3]);

/* get ready to drive to next checkpoint */ MB

clearw(mask,NORMAL);

disptext(mask,txtxt + 13,0,3); ..^

center (window, window[ 3] - window [l],HPress button on joystick t .-.'".•;

)

; . : ••'••-: joywait(FIRE) ; .•.'„•«

H

B-116
B-117

PAGE 3 May 30, 1985 09:29 AM B:TRRNXAMP.C

autodrive(&x,&y,&z,txlist2);

/* at second checkpoint; prepare to go to third one */

clearw(mask,NORMAL);

disptext(mask,txtxt + 18,0,3);

center(window,window[3] - window[1]," Press button on joystick t

);

joywait(FIRE) ;

autodrive(&x,&y,&z,txlist3);

/* at third checkpoint; prepare to go to release point */ >?

clearw(mask,NORMAL);

disptext(mask,txtxt + 23,0,3);

center(window,window[3] - window[1],NPress button on joystick t

);

joywait(FIRE);

autodrive(&x,&y,& z,txlist4);

/* at release point; check odometer for total distance traveled,

clearw(mask,NORMAL);

disptext(mask,txtxt + 28,0,2);

center(window,window[3] - window[1]," Press button on joystick t

);

joywait(FIRE) ;

/* clear window, message line */

textscr();

/^'•jl-'u^.^.'-.:..- -•. V.'-•.->-• . •' .- "• ^V.-N,'-V'.-'-.'^'-»'^••'^•V.L.L.'A^'.J.'A'^'J.^'• **A'-^'^'-'«'•^'- »'-»'-•.'-•- —'- » ^'^ A'^k'j
PAGE 1 May 30, 1985 09:30 AM B:VDCMD.C

/A***************************************************************/

/* Name: vdcmd */

/* Description: */

/* This function sends a single command to the indicated */

/* SONY LDP-1000A videodisc player and returns the ACK or */

/* NACK from player to the calling routine. */

/* Inputs: player - which player to send command */

/* command - 8-bit command to the player */

/* Outputs: sc - return code from player */

/* Side effects: */

/****************************************************************/

#include "atrdefs.h"

vdcmd(player,command)

char player;

char command;

{

int sc;

int r,c;

/* select player */

select(VDBASE + player);

/* clear buffer */

while (pcags(O) & 0x0100)

pcarc(O);

/* send command */

pcawc(0,command);

/* wait for player to ACK/NAK command */

sc • pcarc(O);

/* return ACK/NAK from player */

return(sc & Oxff);

B-118

•/«"lv\'lVlvlYlVlvlvlV^^^jrlvliO^^
PAGE 1 May 30, 1985 09:31 AM B:VIDEO.C

/* Names video */

/* Description; */

/* This function displays video from the given player, */

/* using a DDI serial video switch, and adjusts the TICCIT */

/* color board control registers for sync and interlace. */

/* Inputs: player - which player's video to display */

/* Outputs: None */

/* Side effects: */

linclude "atrdefs.h"

video(player)

char player;

{

/* select video switch */

select(VIDEO);

/* switch video selector to this player */

if (player -« BLANK)

{

pcawc(0,player);

/* OUtp(CRTCINDEX,8); */

/* OUtp(CRTCDATA,INTERLACE); */

/* outp(VIDEOCTRL,INTSYNC); */

}

else

{

pcawc(0,VIDBASE | (player « 0x01));

/* outp(CRTCINDEX,8); */

/* outp(CRTCDATA,NONINTERLACE); */

/* outp(VIDEOCTRL,EXTSYNC); */

)

)

B-119

.v.'-v- 'VS •>.••.• .'.•••• .-••.-•>.-•.•'.-»y^y-»y-y»v-y•*•»>*»••>»»i>-y- •!
FffJWPITOV v

"

t

'>'* g* g*W .*•".*•."-"' W TPgPg1 <* ^i,^v.'yr,'r"i.

iT','Ti

r,ir.T "'".'''•• '^. • ." "-p

HP7T •'7"^"*~* "T "7 "'!• "?" J -" T!* "J '••"

PAGE 1 May 30, 1985 09:32 AM B:VIDEOBG.C

/•A**************************************************************/

/* Name:

/* Description:

videoscr, videoln

These routines display a video background using the

TICCIT video board. This is done by making the foreground black (transparent) for each group of 10 pixels

and ßetting the corresponding attribute byte to display

the video in the background.

Inputs: None for videoscr

line for videoln

Outputs: None

Side effects:

These functions are not flexible...they clear only

the 24 x 80 screen or a full 80 char line

/•A**************************************************************/

#include "atrdefs.h"

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

/*

V ffij

V

V

V

*/

i1 V M V vi

V

*/ y*\

V

V

V %i V

v^

char buf[] •

{0,0,0,0,0,0x80};

/* 10 pixel + attribute byte 7

videoscr()

{

register int seg,off;

unsigned n;

/* video memory begment:offset */

/* number of bytes to change */

/* display video bg for 24 x 80 screen *

n - sizeof(buf);

for (seg « 0xd280; seg < 0xea80; seg +« 0x40)

for (off - 0x20; off < 0x320; off +«0x8)

poke(seg,off,buf,n);

/

}

videoln(line)

char line;

{

int lntop,lnbot;

int seg,off;

unsigned n;

/* top and bottom row of pixels */

/* video memory segment:offset */

/* number of bytes to change */

/* calculate line addresses

lntop - 0xd280 + line * 0x100;

lnbot - 0xd280 + (line + 1) * 0x100;

'/

/* display video bg for 80 char line

n • sizeof(buf);

for (seg • lntop; seg < lnbot; seg +« 0x40)

for (off - 0x20; off < 0x320; off +«0x8)

poke(seg,off,buf,n);

•/

B-12C

-- •- -- 3J ^ •-
ÜB* V*V* IT*V ff5^S^WT,

"»• rfCV '.•%"-. >w~ r= ~ •r*T."ir^Trvür-i^vT^«^.-'^T"« \ . i %^.'»ai%x^i IH-TT^T .^n'"si TT"Till-^\*ur ir\in.^n^~*MVITIWIWLWt"v\-

i

APPENDIX C

SONY LDP-1000A MANUAL

C-l

V ".•

»i 'i ». *
Bff^y^jy^twj^i^^^wyBw^wwiPWWWggWtfWiWfWWWWWWWTWWTTar •. m *.• ».«»• >• mmm»' i •• m i • M »'V

1

.^

VIDEODISC PLAYER

OPERATING INSTRUCTIONS

Before operating the unit, please read this manual thoroughly

and retain it for future reference.

C 1963 D> So"> Co'poiaiior.

C-2

• '•'- v%^v;.•••• •••:•. • •'.'.••• v-.o,:.;/:.\:-/,/.;/:.v-..ox-..\;:-.
•v? "r; *-•.' T".-

»•"; r." T-j ,^."^rr.m

r

w

y ".' ""."' •'.'• V ".w

"A "

l

'.'*' V« '•* ' • • I • '•' "" vv

•WfflBfflig LHWIJMIWPI.II,11 njri

rrfr It» ifliifcii^it in r im nanitfiVr iteifftaJimCirfl adt imm .,i • imm

Precautions 3

A little about the video disc and the videodisc player 4

Data on the video discs 5

Location and function of parts and controls 6

Front panel 6

Control unit 7

Indicating lamps 8

Rear panel 9

Preparations 10

To see a picture with a TV receiver 10

To see a picture with a video monitor 11

Before operation 12

To open and close the disc compartment lid 12

Remove the cap over the objective lens 12

To insert and remove the videodisc 12

To remotely control the videodisc player 13

Wired remote control 13

Wireless remote control 13

How to play a videodisc 14

Operation 14

Operation with control instructions 14

To select the audio channel to be heard 15

Chapter stop 15

I, a normal picture does not appear on the screen 15

Search operation 16

To search for a particular frame (Point search) 16

To search for the beginning of a particular chapter

(Chapter search) 16

To search for the beginning of a particular segment

(Segment search) 16

To repeat a particular part (Frame repeat search) 17

To repeat a particular chapter (Chapter repeat search) .17

To repeat a particular segment (Segment repeat

search) 18

To search for a frame which has been memorized in

advance (Memory search) 18

To play at a particular slow speed 18

Operation with control instructions 19

Memorizing the segment data 20

Preparation 20

Operation 20

To check or to correct the entered data 20

Before memorizing the control instruction 21

To start entering control instructions 21

To end entering control instructions 21

Memorizing the control instructions 22

To play segments at fast, normal or slow speeds 22

To select audio channel 1 or 2 22

To decide whether to display the index or not 22

To play a segment frame-by-frame 23

To obtain a still picture of the beginning of a

particular segment 23

Memorizing the control instructions for branching 24

Using the (GO TO) key 24

Using the [INPUT] key 24

Using the built-in registers 24

To check the control instructions entered 25

To correct the entered control instruction data 25

Error message 26

Capacity of data 26

To start the operation with control instructions 26

Example of control instructions 26

Control instruction sheet 26

How the control instructions on the previous page

operate 27

Optional connections 28

Stereo system connection 28

Connection with a time base corrector 28

Connection with an external sync generator 28

To transport the LDP-1000A 29

Repacking for shipment 29

Specifications 30

Trouble checks 31

.V"

\N

rV

V.\

OWNER'S RECORD

The model and serial numbers are located at the rear.

Record the serial number in the space provided below. Refer

to these numbers whenever you call upon your Sony dealer

regarding this product.

Model No. LDP-1000A Serial No. S"o"bSl

WARNING

To prevent fire or shock hazard, do not expose

the set to rain or moisture.

To avoid electrical shock, do not open the

cabinet. Refer servicing to qualified personnel

only.

CAUTION

Use of controls or adjustments or performance of procedures other than

those specified herein may result in hazardous radiation exposure

C-3

^•L.->:<>L'->^1VV»WS\V1N^W1V-V1V1V1, A^
.\v.

•_la_!_S^_C_-_ ___.._.. ._„ . -

• This machine is designed for operation in a horizontal

position and only with a 120 V ac, 60 Hz power supply.

• Do not install the set in a location near heat sources,

sov-n as radiators or air ducts, or in a place subject to direct

sunlight, excessive dust, mechanical vibration or shock.

• Allow adequate air circulation to prevent internal heat

buildup. Do not place the set on surfaces (rugs, blankets,

etc.) or near materials (curtains, draperies) that may block

the ventilation holes.

• After playing a disc, remove it from the compartment if

the set will not be used for any length of time. Do not

transport the set with a disc in place.

• To disconnect the cord, pull it out by the plug. Never pull

the cord itself.

• Should any solid object or liquid fall into the cabinet,

unplug the set and have it checked by qualified personnel

before operating it any further.

• Do not operate the set right after having transported it

from a cold location directly to a warm location or in a room

whose temperature rises suddenly, because moisture may

condense in the operating section of the set. Wait for about

an hour before turning the power on in the new location or

let the room temperature rise gradually.

• Clean the cabinet, panel and controls with a dry soft

cloth, or soft cloth lightly moistened with a mild detergent

solution. Do not use any type of solvent such as alcohol or

benzine which may damage the finish.

• Remove the cushion and be sure to save it. When the

LDP-1000A is transported or when shock to the compartment lid is expected, be sure to attach the cushion.

• Save the original shipping carton and packing material;

they will come in handy if you ever have to ship your set. For

maximum protection, repack the set as it was originally

packed at the factory.

• If you have any questions about this machine, contact

your dealer or your nearest Sony authorized service facility.

9

LOOSEN THE SHIPPING SCREW UNDERNEATH

THE PLAYER.

The shipping screw is screwed down at the factory to

secure the mechanism inside the player.

Be sure to turn the shipping screw counterclockwise

with a coin or similar object until the screw is loose

soon after unpacking

•a

Shipping Tscrew

LI «J

C-4

L

** -_-£-__•»- __ i'. __________«- __ «y. ,'•

i- >.i _____ __• __i ___ iA '-- •' "-"• -•• __•__!__ --'-- -•- >

-

v

--' -»' 
tlXTLEfiLYABOUETHeviDEO DISCANDVTHE VIDEODISC: PtAYEfrjjgfe

A spiral pattern of pits is recorded about 1.1 mm under the

surface of the video disc.

In the LDP-1000A videodisc playar, a laser beam focuses on

the pits and then reflects. Variations in the reflected beam

are detected and converted into the video and audio

playback signals. The playback picture and sound are obtained by a monitor or a TV receiver connected to the video

disc player.

This videodisc system has the following features:

No physical contact between pickup system and disc

Because a laser beam is employed for signal pick-up, there

is no physical contact with the disc, which means no wear.

In addition, because the pit pattern is recorded below the

surface of the disc, it is not necessary to Oe constantly on

guard against fingerprints and dust, making the video disc

easy to handle.

High accuracy insured high-quality picture

Newly-developed CC D chips enable the effects of the time

base error and disc eccentricity tc be eliminated.

Flexible use of viaeo discs

The brushiess spindle motor makes the sysiem set in the

standby mode in about 10 seconds after a disc is inserted.

The system can play both the CAV* and CLV** video

discs. With a CAV disc, the system can play back (or in

reverse) at various speeds, can display a still picture and

can perform a number of other functions with the aid of a

built-in microprocessor.

High speed access

You can locate a particular point on a disc within five

seconds. With a CAV disc, a particular frame or segment

can be searched for, and with a CAV/CLV disc with chapter

data, a particular chapter can be searched for

• CAV (constant angular velocity) disc

The CAV disc rotates at 1800 r p m. and th» laser beam moves from

the inner part of the disc to the outer Up to 30 minute playback is

possible on one side of the disc On the dice, up to 54.000 frames

can be recorded Each frame of the playback picture is recorded as

one rotation and the frame number is recorded on the track

With a CAV disc, playback at variable speeds, frame number and

piay mode display and operations with control instructions are

possible

* * CIV (constant linear velocity) disc

The CLV disc rotates at a speed between 1800 r p m and 700 r p m

with constant linear velocity The laser beam moves from inner part

of «he disc to the outer as with CAV disc Playback of up to one

hour is possible on one side of the disc though only the normal

play the scan and the search operations are possible The elapsed

playback time can be displayed on the monitor screen

Remote control of the system is possible

The system's control unit cm be detached and used as a

wireless remote control unit or with the supplied remote

cable, as a wired remote control unit.

A variety of possible connections

The LDP-1000A is equipped with an RS232C serial interface

connector so that it can be connected to a computer. The

LDP-1000A is also equipped with SYNC !N and SC IN connectors so that it can be operated in synchronization with

the external sync signal and so that a special effects

generator can be connected to the LDP-1000A.

DATA ON THE VIDEO DISCS

Frames

A CAV disc has up to 54.000 "frames" which are numbered

in sequence. You can search for a particular frame or repeat

a particular sequence of frames.

• Frame 54.000

U f-~>— Frame 40.000

Chapters

There are CAV and CLV discs on which "chapters" are

recorded, as the chapter of a book. If a chapter .-«umber is

displayed after a frame number has been displayed (on a

CAV disc) or if playback time is displayed in minutes (on a

CLV disc) when you press the (INDEX) key. the disc ha»

chapter data

You can easiiy search for a particular chapter and play it

back repeatedly.

»y

C-5 Cnaoter 2

**-'*-**•»*• • *y*«*<.^ **•»"-*•- »Va*äV» «i. •..» *^i «J -*» -i ^iWAVi^.'i.i'^ «^v.v.»-,ViV/.-.v,v.v.\\v..-. •..

'-•'-* *-*•-'•-•
Segments

Using the frame numbers on a CAV disc, you can divide the

disc into up to 63 separate segments by designating the

beginning and end frame of a sequence.

You can search for a particular segment and play It back

repeatedly.

06

tetä^
OCATIOf* ANttCUNCTIOttOP PART3 ANffCOKTROIL^*%0&8&&t&

FRONT PANEL

Disc compartment lid

POWER button

Indicating lamps

Control unit

REMOTE jack

Antenna selector

PHONES jack

RELEASE button

COMMAND SENSOR

O POWER button

Press to turn on the power of the player.

To turn oft the power, press the button again.

0 OPEN button

Press to open the disc compartment lid tor insertion or

removal of the video disc.

Q COMMAND SENSOR

The red COMMAND SENSOR lamp will blink to show that

the player detects that a key of the control unit has oeen

pressed.

C RELEASE button

Press this button while detaching the control unit.

0 PHONES jack

Connect headphones here to monitor the audio

O Antenna selector

This selector selects the picture on the monitor screen

When you want to watch the program from the disc, set this

«elector to VDP. When you want to watch the TV program

from the antenna, set this selector to ANT.

O RtMOTE Jack (special mini jack)

Connect to the remote jack on the control unit with the

remote cable when the control unit is to be used as a wired

remote commander.

C-7

L.V^_V-^_«*-iT«^-. J «*_ ,\. .'.V-.V- — '. *«.». ^- ^t^v. r ~g -.rf^i... • - »- . i*. *- . . «'- . - i. -'. «'- .'- «*. a.'. •'- •'- .'. *- •'. .*. -• .'. *. -» -• -•- -• ..• V -^ -» -• -•
CONTROL UNIT

The •keys cannot function when using a CLV disc.

f— The (CE) key clears the last data entered.

Press this Key when you press an incorrect Key.

r— The [CL] key is the all-clear Key. Press this Key when you want to cancel an operation using

the control instruction Keys, such as entering the control instructions, operation with

control instructions or checK of the entered control instructions.

AUDIO CH-1 and CH-2 keys

Each laser disc has two audio channels, channel 1 and 2. When the player is turned on,

both audio channels are turned on. The AUDIO CH-1 and CH-2 lamps will light. To turn the

audio channel 1 or 2 off, press the CH-1 or CH-2 Key. The appropriate indicating lamp will go off.

Pressing the Key again turns the audio channel on.

r— Control Instruction keys

These Keys are used for the operation with control instructions

—memorizing the segment data, memorizing the control instructions, operating

the disc with control instructions and so on.

9

•an i wa itm*r* Dp|Q

gag

a

D

a

a

Tszn

a

£rJ

"* LB B — Ex

5 * 3T BEE

rnniTUj

rznnn]

DUE]

BBBI

EH

Figure fcsys

SEARCH key

Press ihis hey lor the

search operation

- STOP key

Press this Key to stop displaying the picture. When another

Key is pressed, the desired playbacK mode will start at the

point where the STOP Key was pressed.

-INDEX key

Press to dispiay the play mode, frame number, chapter number

and data for control instructions on the monitor screen while

playing the CAV disc. When the CLV disc is playing, the time

elapse since the beginning of the program will be displayed,

and then chapter number will be displayed if it is recorded.

Press this Key again to turn the display off.

- MENU key

Press this Key to see the menu again during playing a CAV disc.

- Function keys

SCAN key

Keep holding this Key down tor high-speed (about 100 times

of normal speed) playbacK When you release this Key.

playbacK will be resumed at normal speed.

FAST key

Press this Key tor trippie-speed playbacK.

SLOW key

Press this Key tor slow-speed (Vs of normal speed) playbacK.

STEP/STILL key

Pres-b th.s Key for a still picture. II you press this Key again

and immediately release it. the next frame will be displayed

If you Keep the Key depressed, the picture will advance

frame-by-frame

PLAY key

Press this Key for normal speed playbacK

ENTER key

Press this Key to advance the step to the next during memorizing the segment data

or the control instructions or to end the above mentioned operation

Notes on the function keys

• The right Key of the two Keys I • ) is for playback and the

left key H ] is for reverse

• The audio can be monitored only in the forward play

mode

• Press the desired key when you want, no matter what

mode the player ss in The player enters into the desired

mode

C-8

kLvl . »\ «f •*•* V •' «n •' .'.•••.•.'«•.v>'.,

.VJ>,Jt.'i,.t\ t\i\±^''^-:^-*\-•A^\_-V\\, v».- .• 
INDICATING LAMPS

This lamp lights when

playback is in the

reverse direction.

This lamp indicates what portion of

the disc the player is now playing.

3 4

READING LOCATION

O STAN06Y

O PROGRAM

CLV

O SLOW X1/5

OSTEP/STILL

O STOP

O SCAN

O FASTX3

O PLAY

•This lamp lights when

playback is in the

forward direction.

i

These lamps indicate which mode

the player is in.

This lamp indicates that a CLV disc is

being played back.

These lamps indicate whether the

audio channels are turned on or off.

REAR PANEL

Q VHF IN connector

OvilC OUT connector

(?) CENTERING control

(J) VIDEO OUT connector

( ) TV connector

(£) EXT CPU ON/OFF switch

(J) SC/SYNC INT/EXT switch

(?) EXT connector

© LOCK PULSE jack

AC power cord

SYNC IN connector

INDEX POSITION controls

SC IN connector

TRACKING control

FOCUS control

LINE OUT jacks

C-9

2»^V_V, .-._>_•..-. -f'• -*1 •'• . JU.A4 ^ v.Vi«'*Vfr ^m^.im l£i
O VHF IN connector (F type connector)

Connect the 75-ohm coaxial cable for VHF antenna here. If

the antenna cable is a 300-ohm twin lead, use the EAC-25 external antenna connector (optional).

O VHF OUT connector (F type connector)

Connect to the VHF antenna connector of the TV receiver.

Either of the following signals, selected by the antenna

selector on the front, can be supplied.

— VHF TV signal connected to the VHF IN connector

— the program on the disc (which is converted into the VHF

signal by the built-in RF unit)

0 Ground terminal [-M

To reduce hum, connect this terminal to an earth ground

with a ground wire.

O RF CHANNEL* »elector

Selects the channel to which the output signal of the VHF

OUT connector is fed. Set the selector to channel 3 or 4,

which is not active in your area.

• RF (Radio Frequency) channel: The built-in RF unit modulates the

playback signal of the disc into the frequency of the VHF channel

3 or 4, which we call the RF channel, so that the picture from the

disc can be displayed by the TV receiver.

0 AC OUT (outlet) connector

This outlet supplies ac power to otner video equipment

whose power consumption is no more than 400 watts.

Power is supplied to the connected equipment regardless of

the position of the player's POWER switch.

0 LINE OUT jacks (phono jacks)

Connect to the line input jacks of audio equipments.

© FOCUS control

Normally set this control at the center detent position.

If a picture with noise appears on the monitor screen, turn

this control until you get the best possible picture.

After playing this particular disc, return this control to its

center detent position.

0 TRACKING control

Normally set this control at the center detent position

If a picture with noise appears on the monitor screen, first

turn the FOCUS control and then this control until you get

the best possible picture.

After playing this particular disc, return this control to its

center detent position

0 SC IN connector (BNC connector)

Connect an externa! sync generator The connector accepts

3.58 MHz subcarner

O INDEX POSITION controls

These controls adjust the position of the index display on

the monitor screen The V control is for the vertical direction

and the H is for the horizontal direction

© SYNC IN connector (BNC connector)

Connect a time base corrector or external sync generator.

The connector accepts composite sync signal.

© CENTERING control

If a normal picture does not appear on the monitor screen in

the playback mode, turn the control until you get the best

possible picture. Normally set this control to the center detent position.

© VIDEO OUT connector (BNC connector)

Connect to the video input of a video monitor or a time base

corrector.

© TV connector (8-pin connector)

Connect an 8-pin connector of a video monitor here.

© EXT CPU ON/OFF switch

Normally set this switch to the OFF position.

Only when the player is to be operated by the external computers, remove the stopper, set the switch to ON and

reinstall the stopper to keep the switch to the ON position.

The any function and control keys on the control unit of the

player will not function.

• When you want to operate the LDP-1000A with the external computers, please contf ct your Sony oeaier.

© SC/SYNC INT/EXT switch

When the player is to be operated synchronizing with the internal sync signal, set this switch to the INT position. When

the player is to be operated synchronizing with the external

sync signal connected to the SYNC IN (and SC IN) connectors), set this switch to the EXT position If no external sync

signal is supplied to the SYNC IN connector, the player

operates synchronizing with the internal sync signal

regardless of the switch position.

© EXT connector (RS232C serial interlace connector)

Connect the external computers to operate the player

© LOCK PULSE jack

Use this jack to superimpose characters, pictures or graphic

display from the Sony SMC 70 series microcomputer over

the playback picture of the video disc. Connect this jack to

the optional SMi-7073 RGB superimpeser or SMI-7074 NTSC

superimposer for the SMC-70 series using the remote cable

supplied to the LDP-tOOOA to obtain a stable superi.nposition over a still or variable speed picture.

C-10

K*-^»»" V*VLVA*A*IS''*%L'.'CVI. X'AVÄtAi'j'-t A'VA^'.'-,J/ijfcC»Jw!v*'iA
REPARATION

V. i* • 'M.'J^U Himwpj ii ^IJI.U p I 11 11 WWW ,i m\ IIL'JB"' mmm-

'^'"tmmurnpi iirf :nal 'irti'i rrrtoiWMn r ii tttTJrTuHi afcr mf AtMl iMi • li I • •

To see a picture, connect a TV receiver or a video monitor to

the videodisc player as follows.

If you use a TV receiver, the TV receiver should be adjusted

so that it displays a picture from the videodisc player.

TO SEE A PICTURE WITH A TV RECIEVER

ANTENNA CONNECTION

Remove the VHF antenna cable from the TV receiver and

connect it to the player. Leave the UHF antenna cable connected to the TV receiver.

If your cable is a 75-ohm coaxial type (round) cable,

connect it to the VHF IN with an F-type connector (optional).

If your cable is a 300-ohm ribbon type (flat) lead-in

connect it to the EAC-25 external antenna connector

(optional), then connect the EAC-25 to the VHF IN.

VHF IN

0 n o o

c U oOO

o o O o o

VHF antenna

cable

VHF antenna terminal

UHF antenna

terminal S"

VHF OUT

TV CONNECTION

75-ohm coaxial cable

(supplied)

Once the VHF signal connection indicated above is completed, the VHF TV signals as well as the signal from the

player can be fed to the TV receiver so that you can also

view TV programs in the usual way

EAC-24

300-ohm VHF

antenna terminal

=a3D-*30=<|

If your TV receiver is not equipped with an

F-type VHF antenna terminal, connect the

catle to the 300-ohm antenna terminals

using the EAC-24 (optional)

v.'•

CAUTION

Connection between the LDP-1000A VHF OUT connector

and the antenna terminals of a TV receiver should be made

only as shown in these instructions.

Failure to do so may result in operation that violates the

regulations of the Federal Communications Commission

regarding the use and operation ot rf devices. Never connect

the output of the LDP-10C0A fo an antenna or make

simultaneous (parallel) ante-ma and LDP 1000A connections at the antenna terminals of your receiver

C-ll

"• *.' v.v.v.v..-.&££&££: if.V

VVv.*. -ft .)-*.& -A -* -A JT 

» *.* ".A A *-•
.

TV ADJUSTMENT

Adjust your TV receiver to accept the signal from your player

in this way;

On the player

1. Set the RF CHANNEL 5 ..ector located at the rear of the

player to CH-3 or CH-4, whichever channel is not active in

your area.

2. Set the antenna selector to VDP.

3. Press the POWER button to turn on the p!ayer.

4. Press the OPEN button and insert a disc. (See page 12.)

RF CHANNEL

Antenna selector

On the TV

5. Turn on the TV.

6, Set the channel on the TV receiver to the VHF channel 3

or 4, depending on the setting of the RF CHANNEL selector. The program of the disc will be displayed on the TV

screen.

If a picture does not appear on the TV screen or if the

display is not etear, fine tune the channel on the TV.

If your TV receiver has an electronic tuner and does not

have a button for VHF channel 3 or 4, adjust a channel

select button so that the program of the disc is clearly

displayed on the TV screen and the sound is clearly

heard.

• For details about TV channel adjustment, see the instruction manual furnished with the TV receiver.

Now the TV receiver has been correctly tuned to receive the

signal from the player.

OPEN POWER

TO SEE A PICTURE WITH A VIDEO MONITOR

Once you connect a monitor, you can watch the playback picture on the monitor screen.

When connecting a monitor

equipped with an 8-pin

connector

(Input select switch to VTR)

(Input select switch to LINE)

• When connecting, align the • • Align the slot with the

plug with the connector and projection, insert and tighten

insert (*C «he knurled locking ring

clockwise

When disconnecting, press

the buttons on the plug and

pull

C-12

Ifotf-yVtffra-*^
MM3MS2SSSsS^^M w ••v.-: *

y^Mfpjiw«'.*«•..••

l*t***ä***^inr*ii\i*m l^l'tMijg'iin i>ir n ii

TO OPEN AND CLOSE THE DISC COMPARTMENT LID TO INSERT AND REMOVE THE VIDEO DISC

To open

1. Plug the ac power cord into a wall outlet.

2. Press the POWER button.

3. Press the OPEN button.

The lid will unlock and lift up slightly.

4. Lift up the lid all the way. Be careful not to force the lid

beyond its normal open position.

Cff=

To close

Push the lid down firmly so that the latch locks securely.

If the lid does not open

1. Turn the power off.

2. While pressing the OPEN button, press the POWER button again.

• If the lid still does not open, contact your Sony dealer.

REMOVE THE CAP OVER THE OBJECTIVE LENS

A cap has been put on the objective lens at the factory to

protect the lens from damage and dust.

Open the disc compartment lid and remove the cap.

projection

To Insert

1. Open the disc compartment lid.

2. Place the disc with the desired program label up and

install it to the center wheel firmly.

3. Close the lid.

Tho disc will start rotating The STANDBY lamp will blink

for several seconds, then will go off to show that the

player is ready to play.

To remove

1. Press the OPEN button when you want to stop playing

the disc, no matter what mode the player is in.

The disc will stop rotating and the lid will unlock and lift

up slightly.

2. Lift up the lid all the way.

3 Remove the disc, holding it by the rim.

4. Close the lid.

This cap should be saved for 'he later use when the player is

shipped again o* is not to be used for an extended period of

time Save the cap by putting it over the protection on the lid

C-13

K*.'\vV *»-'«VV.V-'/-'.'-\'.'v-'.•-•>• -• -•.•**>*-'-'-%.*-•- •-•s.«'-»•->"*-« *-•""-»^-/'-a•V*Vl.**V» >'• «'• m'>> .V.'-.>..t.'uj^N >•»".%.'t'.r.'» ."».V-v J.V« .'
n§ üBEasasas BUfpjpppimW! mpppuwa »wr"*-^-

The control unit can be detached from the player by sliding

it toward you while pressing the RELEASE button. It can be

used either as a wireless or a wired remote control unit.

To attach, slide the control unit untii it is plugged in firmly.

Notes on the control unit

• Keep the coitrol unit away from hot or humid places

• Avoid dropping any foreign objects into the control unit.

• To avoid a malfuncti jn, do not press two or more function

keys simultaneously.

WIRED REMOTE CONTROL

Once the POWER button on the player is depressed and the

player and the control unit are connected with the supplied

remote cable, you can remotely control the player with the

control unit detacned from the player Connect the remote

cable to the remote jack on the control unit and the

REMOTE jack on the player

to remote

jack

WIRELESS REMOTE CONTROL

Once the POWER button on the player is pressed, you can

remotely control the player with the detached control unit

up to 10 meters (3 feet) away from the player and within the

range illustrated below.

The red lamp of the COMMAND SENSOR blinks to indicate

that a function key has been pressed.

• • *> *

Ay

COMMAND SENSOR cp A\

/- A]

V* /

Battery installation

The control unit operates on batteries when it is used

without the remote cable. To install the batteries, press

down and slide open the battery compartment lid and install

the three batteries size AA (IEC designation R6) with the correct polarity. Then close the lid.

• In normal operation, battery life 'S over six months When

the batteries are eihausted. the remote control unit will not

operate the player properly When this happens replace aM

the batteries

• If the control uni« is no* to be used lor a long period o*

time remove the batteries to avoid damage from possible

battery leakage

C-14

i.tiiii ^k •V« i J
HOW TO PEAVA VIDEO DISC»W*"*?-f-U -fe^^***^^^

OPERATION

There are three kinds of video discs; a CAV disc having the control insturctions,

a CAV disc having not the control instructions and a CLV disc. The operation is

a little different among discs.

S

1. Press the POWER button.

2. Press the OPEN button and lift up the lid all the way.

3. Insert a video disc.

4. Close the lid. the STANDBY indicator lights and the disc starts rotating.

• If you want to display the index on the monitor screen,

press the INDEX key. O «OO • • * 0 »C*

MW I'M o '«»'•

• 1

«•ttM

e »•••«»

e et«

8

»a—M»

MJOO

o e

Ok«' ' »

5 t'O»

0 «CM

0 • •••.«

o V

J

*.••« -m m*a*c ,cx»'o«

oil» ••**. a •«!'•

'; «'0» 75T«i»«

-. «.»»•«& louioi ««a—»

O HO».' V 0 JC*

V.

K

When a CAV disc having the control

Instructions is played, the PROGRAM

and STEP/STILL indicators light 15

seconds after the lid is closed.

\

The men*, will be displayed.

Press the keys according to the instructions of the displayed menu.

Safe*

-as ->r

J'Ja

When a CAV disc having not the

control Instructions Is played,

the PLAY indicator lights 15 seconds after the lid is closed.

*

The playback will automatically

begin.

You can use any function keys on

the control unit.

• For search operation, see

page 16.

When a CLV disc is played,

the CLV and PLAY indicators

light 10 seconds after the lid is

closed.

I

The playback will automatically

begin.

• The (SCAN 44 ] (SCAN »*•) and

forward {PLAY • ] keys can be

used.

• For search operation,

see page 16. | _aö „^

I CD(SCD

| CDCDCD

CD CD CD

coOO

• To stop the playback momentarily, prass the STOP key.

• To end the play of the disc, press the OPEN button, and the disc

stops rotating and the lid is unlocked.

OPERATION WITH CONTROL INSTRUCTIONS

If "TOO LARGE" is displayed on the

screen.

•The number you have pressed is larger than the instructions on the

menu Wait until the display disappears for a few seconds, ind press

the correct keys

To see the menu again. -*> Press the (MENU) key

C-15

v. *-»'-*- ••*~**-»»-» -»»;-.-. .N *• - -*k «£. -• ^. ~\ •^•^^L^>v•>:, L •>_» -l-^
WJMM^JIVMMMM'*^

HTKr *7v*7T mT. MVH"^'»^^^« *UBA*UW*A'«JP

To interrupt the operation with —

control instructions momtntarily,

> Press the (INT] key. The playback stops and a still picture is obtained.

You can use any function keys on the control unit.

To return to the operation with control *> Press the [END] key, and the original operation will be resumed.

instructions interrupted by the [INT] key,

To stop the operation with the

control instructions,

To restart the operation with control

instructions stopped by the [CL]

key or [END] key,

To skip to the segment to be played

next during the operation with the

control insturctions,

If, while a segment is playing

during the operation with control

instructions, you decide to see that

segment from the beginning once

•gain,

•> Press the [CL] key or the [END] key. The playback slops and you can

press any function buttons.

* Press the [MENU] key, or press the [PGM] key, then the [RUN] key,

and the menu will be displayed.

•> Press the [SKIP] key.

• Press the [REVIEW] key.

TO SELECT THE AUDIO CHANNEL TO BE HEARD

Press the [AUDIO CH-1] or [CH-2] key. When the key is pressed, the sound is cut off, and when the key is pressed again,

the sound can be heard.

TO SKIP TO THE NEXT CHAPTER OR REVIEW THE

CHAPTER BEING PLAYED (Chapter Stop)

— For a disc with chapter data —

IF A NORMAL PICTURE DOES NOT APPEAR ON THE

MONITOR SCREEN

Turn the CENTERING control until you get the best possible

picture. If the picture still contains noise, adjust the FOCUS

control and then the TRACKING control.

• After playing this particular disc, return the FOCUS and

TRACKING controls to their center detent position.

Press ihe [INDEX] key to display the chapt number and

keep the [SCAN] key depressed. (To skip tc the next chapter

press [SCAN l» ]; to return to the beginning of the chapter

being played press (SCAN 44).) When the beginning of the

chapter is found, playback stops and a still picture is obtained (CAV disc) or playback starts (CLV disc). Release the

[SCAN] key at this point. The CAV disc will start playback.

To skip more chapters press (SCAN) again.

* _»*

TRACKING

CENTERING

FOCUS

I.V. ^.

C-16

;* vV;/ -* -» -* '-* •-» •-* >^-^Y^•^---'—^ liH* ft •'»•UMI.'IJ
mmsEssm

TO SEARCH FOR A PARTICULAR POINT (Point Search) (For CAV disc and CLV disc)

3M

On a CLV disc, search for the desired point by frame.

On a CAV disc, search in reference to the elapsed playback time from the beginning of the disc (in minutes).

CAV disc: For example, to search for Frame 2050:

Step Keys to be pressed Oisplay

1. (SEARCH] SEARCH 00000

2. (2][0l[5][0) SEARCH 02050

3. (ENTER] Frame 2050 will be

displayed. (Sti!! picture)

CLV disc: For example, to search for the 25-minute point:

Step Keys to be pressed

1. (SEARCH]

2- [2] (5]

3. (ENTER]

Display

SEARCH 00000

SEARCH 00025

Playback will begin

from the 25-minute point.

1

i

TO SEARCH FOR THE BEGINNING OF A PARTICULAR CHAPTER (Chapter Search)

(For CAV disc and CLV disc)

For example, to search for chapter 3: ,

Step Keys to be pressed Display

1. (SEARCH]

2. (MODE]

3. [3]

4. IENTER]

SEARCH 00000

SEARCH C-0Ö1

SEARCH C-003

The beginning of

Segment 3 will be search

e<j for and the still pic- ]

ture of the first frame will

be displayed (CAV disc),

or playback starts (CLV

disc).

A

"A3

TO SEARCH FOR THE BEGINNING OF A PARTICULAR SEGMENT (Segment Search) (Only for the CAV disc)

To enter the segment data, refer to the "MEMORIZING THE

SEGMENT DATA" on page 20.

For example, to search for Segment 10:

Step Keys to be pressed Display

1. (SEARCH] SEARCH 00000

2. (MODE] SEARCH C-001 •

3. (MODE] SEARCH S-001

4. |1)I0]

• To March for Scgmtnt 1.

»Nip this tl«p

SEARCH S-010

5. (ENTER) The beginning of Seg

ment 10 will be

displayed.

• For a disc with no chapter data. "SEARCH S-001" wit

displayed. In this case, skip Step 3.

be

C-17

'V *\A V. ^

j . • . . . .- .- .• v .• . .- . . vvvvvvv
TO REPEAT A PARTICULAR PART UP TO 15 TIMES (Point Repeat Search) (For CAV disc and CLV disc)

On a CAV disc, playback between any specified two frames

at the specified speed can be done repeatedly up to 15

times.

CAV disc: For example, to play from Frame 100 to 170 three

times at slow (x1/5) speed:

On a CLV disc, playback between any two points specified

in minutes from the beginning can be done at normal speed

repeatedly up to 15 times.

CLV disc: For example, to play from the 25-minute point to

the 40-minute point three times:

Step Keys to be pressed

1. Search for Frame 100,

2. [REPEAT]

3.

5.

6.

7.

rornn

(frame number of

•nd point)

[SLOW!

• To play at normal speed,

skip (hit ttep.

(ENTER)

[3J*

(times to be repealed)

[ENTER]

Display

trie starting point.

! 00000

The frame number of the

starting point is memorized.

00170

SLOW 00170

Step Keys to be pressed

1. : Search for the 25-minute

2. (REPEAT]

3. i(040]

. (time of end point)

4. j [ENTER]

5. [3]»

, (times to be repeated)

6. ; [ENTER]

REPEAT * 01

REPEAT * 03

The part from Frame 100

to Frame 170 will be i

i played back at slow

[ speed three times.

* If [0] is pressed at this point, playback will be repeated until you press the [CL] key.

-Frame 54.000

€

Display

{joint, the starting point.

00000

The starting point in

minutes is memorized.

00040

REPEAT 01

REPEAT 03

The part from the

25-minute point to the

f 40-minute point will be

! played back three times.

[ Playback will continue

. after the playback of this

[particular part ends.

TO REPEAT A PARTICULAR CHAPTER UP TO 15 TIMES (Chapter Repeat Search) (For CAV disc and CLV disc)

For example, to repeat Chapter 12 twice:

Step Keys to be pressed

1. [REPEAT]

2. [MODE]

3. |1||2]

(Chapter number)

4. [ENTER]

5. (12]

* (Times to be repeated)

6. ([ENTER]

!

Display

REPEAT OOOOO*

REPEAT O001

[REPEAT C-012

«EPEAT » 01

REPEAT * 02

i

Chapter 12 will be played

back twice. The CAV disc

stops and the CLV disc

Mays back the next

phapter.

• If "REPEAT C-O0V is displayed in step l. skip step 2

C-1Q

L&&*K£v>-^
TO REPEAT A PARTICULAR SEGMENT UP TO 15 TIMES (Segment Repeat Search) (Only for the CAV disc)

For example, to repeat Segment 2 for five times at fast (*3) speed:

Step Keys to be pressed Oisplay

1. Search for a segment

2. [REPEAT]

3. PI

(segment number)

• For Segment 1,

•kip thta step.

4. FAST]

e To pity at normal «peed,

•hip tN» •top.

5. [ENTER]

6. [5]

(timee to be repeated)

7. [ENTER]

•»,! i.i» i *>*m

REPEAT SO01

REPEAT S402

FASTSO02

REPEAT * 01

REPEAT * 05

•-»*• —-. -fit

Segment 2 will be played]

back five times at fast

speed.

•«»••»tr ^I>I<

You cen start the Segment Repeat Search from any point.

Step Keys to be pressed Display

Search »or the frame'to start playback. "

[REPEAT]

[MODE]

12]

[FAST]

[ENTER]

[5]

[ENTER]

«

00000

REPEAT M01«

REPEAT S402

FAST SO02

j REPEAT X01

'•• REPEAT * 05

. «iU,...* «I • i- trinim _

• If the disc has chapter data, "REPEAT C-001" will be displayed.

In this case press [MODE] again.

TO SEARCH FOR A FRAME WHICH HAS BEEN MEMORIZED IN ADVANCE (Memory Search) (Only for CAV disc)

1. Play a video disc in any mode.

2. Press the (MEMORY) key at the point you want to see

again.

3. Press the (M. SEARCH] key. The point where the

(MEMORY] key was pressed will be searched for.

• It the (MEMORY] key has been pressed several times, only the point where the key was last pressed will be searched

tor.

-Frame U.XX

ftä

TO PLAY AT PARTICULAR SLOW SPEED (Only for

the CAV disc)

You can select a playback speed from 1/1 to 1/255 normal speed by entering the denominator of the desired

speed as data for the playback speed For example, to

play at speed 1/30 normal speed. "30" should be pressed:

1. Press the (STEP/STILL M) k*y for forward play or the

(STEP/STILL | 4} key for reverse play.

2. Press the [3! and (0] keys (data for the playback

speed).

3. Press the (ENTER) key Playback at a speed 1/30 normal speed will begin.

C-19

^

.N >.%>•%r*.yv-.y.-. v. !\\V«V £m £ '- «*-V- ^- +- «f->-•>- 

^^*2 ifc -»* •-•'>-/«-**• W---"'-« > 1 ^'••->\J. •-» -«'•-*' -j | -»•-» '-* C^AoJa ra ^:+üü:
Egsssamwarn mtmmmA

fap^i VJPiscsj iiittiiifrfiWiir -i •

Using the built-in microprocessor, you can memorize the

segment data—the segment number and the beginning

and end frame numbers of the segment—in the

LDP-1000A and play these segments in any desired

order and also at any playback speed—fast (x3),

normal, slow (x1/5) or frame-by-frame. It is

also possible to jump to another series of

playback program during the performance of a series of playback program. This is called "Branching".

The control instructions for

playing or branching are

stored on numbers 000

to 511 in the memory.

These numbers are

called "Line

Numbers".

On some CAV discs, the segment data and control instructions are recorded on the beginning portion of the audio

channel 2. You can use these data to play the disc, of

course, and also play the same disc with another control instructions when you enter the new data by using the control

unit of the LDP-1000A.

This part of instruction manual tells you how to memorize

the segment data and the control instructions for playing

and branching.

MEMORY OF THE DATA TO BE ENTERED

The memory of the entered segment data and control instructions will be kept on the LDP-1000A for three days,

or until new data or control instruction is entered.

C-20
•P^V.VWIV.«.'.'. jjmnprfwijmw»v • i! TV

1

***.'«-?'•.•»*; P,'IP'^^T; T.'T" r.T*r.'T2'T.'r:f, •*' •" ' I

•y-yrr ••» -.•*-• ry •.•'

JMM:lkll»t»!UiJJe|ii|jji,l,MJ:

•marin •Tntiiniiniiartirif rn-n

PREPARATION

1. Make the necessary connections.

2. Insert a video disc.

3. Press the [INDEX] key to display the frame number.

4. Play the video disc and note the frame number of the

beginning and end frame of each segment on the monitor

screen.

OPERATION

If, for example, you want to memorize Segment 5 whose

beginning frame number is 123 and end frame number is

500, procees as follows:

Step Keys to be pressed

1. [SEG]

2. [5]

(Moment number)

• To memorize the data for

segment 1. skip this step.

(ENTER]

I11I2JI3]

(beginning frame number)

{ENTER}

C5J fOJ 10J

(end frame number)

[ENTERJ

ICL)

Display

SEGMENT* 0ÖT

SEGMENT * 005

/

blinks

005 00000)00000

^»segment number

005 00123] 00000

005 00123 00000]

005 00123 00500]

SEGMENT * 006

number of IN

next segment

• To memorize the following segments, repeat steps 3

through 7.

Segment data sheet

Segment number

1

z

3

<^

5

6

Beginning

frame number

too

1550

1000

30/5

IZ3

End frame

number

7200

I7oo

3500

3700

500

TO CHECK OR TO CORRECT THE SEGMENT DATA

1. Press the [SEG] key. "SEGMENT * 001" will be displayed.

2. Enter the segment number to be checked or corrected.

• To check the data of Segment 1 skip this step.

3. Press the [ENTER] key and "005 00123] 00500" will appear, k \ \

end of me segme'-.i

beginning of the segment

segment number

• To correct the beginning frame number, press the [CE]

key to clear tne entered data and enter the correct data.

4. Press the [ENTER] key again. The display is changed to

"005 00123 00500V.

• To correct theend frame number, press the (CE) key to

clear the entered data and enter the correct data.

5. Press the [ENTER] key and the data of the next segment

will appear.

• To finish the check or correction of the segment data,

press the JCL) key.

ON THE MARK " | "

When the index displayed on the screen includes two

data, the ! mark blinks. You can enter the data here.

005 00123] 00500

blinks. (You can enter the data here

C-21

^ol/-;^^-»;^^^^ r.v.v.-*.v w fciA,
PSfCTEEfflZ^m^sBg i."tarn*

PREPARATION

1. Make the necessary connections.

2. Press the POWER button.

3. Insert a video disc.

4. Press the INDEX key to display the frame number.

TO START ENTERING CONTROL INSTRUCTIONS

1. Press the (PGM) key. "START AT 000" will be displayed.

2. Press the Line Number to which you want to assign a

control instruction. To start from Line 000, skip this step.

3. Press the [ENTER] key. "000 FUNCTION?" will be

displayed.

Now the LDP-1000A is ready to memorize the data for control instructions for playing or for branching.

Note:

Because all data is automatically erased from a Line when

new data is entered, we recommend checking that there is

no data you want to retain stored on a Line before you enter

new data on that Line.

TO END ENTERING CONTROL INSTRUCTIONS

gas

s©

g

e

a

Bi

a

a -a

äüölSs]

When you have finished memorizing the all control instructions for a program, terminate the program with the following method.

Press the (ENTER) key while "000 FUNCTION?" is displayed.

"000 END 00000" will appear.

•line numbe,v present lr»me numbe'

C-22

CÜfc ' s^y^<K/y,--v:.-•.*/^ v- ^ -

v. ^ __v v „•- * •*- -'—
MEMORIZINGfcTHECONTROmiNSTRUGTIONS FOR PtAYlN

TO PLAY SEGMENTS AT FAST <x3), NORMAL OR SLOW (xl/5) SPEEDS

For example, if you want to enter the control instructions

"Play Segment 2 at slow (x1/5) speed" on Line 042, proceed

as follows:

Step Keys to be pressed

[PGM] (4] (2] [ENTER]

LINE 255

042 FUNCTION?

Iln« nomtoar

1. [SLOW]

• For playback at normal

»paad, skip this atop.

2. [2]

(Mgmartt numbor)

• To play Sagmant 1,

3. [ENTER]

l 042 SLOW S-001

sagmant nurrtban

tobapl

'playback

042 SLOW S-002

044 FUNCTION?

• For the following control instructions, repeat these steps.

• To end entering control instructions, press the [ENTER]

key again.

TO SELECT AUDIO CHANNEL 1 OR 2

Both audio channels will be played back in normal operation. However, you can select the audio of either channel 1

or 2 alone in this way:

1. Display the "000 FUNCTION?".

2. Press the [CH-1] key for channel 1 or the [CH-2] key for

channel 2.

"000 AUDIO-1 0" or "000 AUDIO-2 0" will be displayed.

3. Press one of the following keys:

[0] for off (the sound will be cut off)

[1] for on (the sound win be heard)

[2] for toggle (the mode—on or off—will be changed)

4. Press the [ENTER] key.

TO DECIDE WHETHER TO DISPLAY THE INDEX

OR NOT

You can decide whether the index is displayed or not during

playing a segment in this way;

1. Display the "000 FUNCTION?".

2. Press the [INDEX] key and the "000 INDEX 0' will be

displayed.

3. Press one of the following keys:

[0] for off (the index is not displayed)

[1] for on (the index is displayed)

[2] for toggle (the mode—the index is displayed or not—

wii! be changed)

4. Press the [ENTER] key.

UNE 042

I «ay

L9ar*M2

«Slow JD^d

/

UNE COO

PAGE0

C-23

-•-••£ '•*• '•*• '-E '- -*- -'-*-* '-L -> '-»•-'*'-' *-" '-* "-»'*-» :^-»v

-
TO PLAY A SEGMENT FRAME-BY-FRAME

The speed at which frames are to be advanced can range

from 1/1 to 1/255 normal speed. Enter the denominator of the

desired playback speed as data.

For example, if you want to enter the control instructions

"Play Segment 55 frame-by-frame at 1/90 normal speed" on

Line 100, proceed as follows:

LINE 255

Step Keys to be pressed

' [PGM] [1] [0] [OIENTER]

1. fSTEPJ

2. [5] (5]

(segment number)

• To play Segment 1,

• »kip this step.

3. [ENTER)

4. P][0]

(denominator of the

playback speed)

5. (ENTER] 103 FUNCTION?

• For additional segments, repeat these steps.

• To end entering control instructions, press the [ENTER]

key again.

Display

[l00 FUNCTION?

i lint numbtr

! 100 STEP S-001

* 100 STEP S-055

' 100 STEP 000

j 100 STEP 090

UNE 256

PAGE 1

TO OBTAIN A STILL PICTURE OF THE BEGINNING OF A PARTICULAR SEGMENT

For example, if you want to enter the control instructions

"Stop at the beginning of Segment 50 for 3 seconds" on

Line 70, proceed as follows.

Step Keys to be pressed

(PGM] [7] [0] [ENTER]

1. [STOP]

2. [5)(0]

(segment number)

• For Segment 1,

•hip this stop.

3. [ENTER]

4. [3]

(numbe; of seconds th*

ffoma is to t» displayed)

5. [ENTER]

Display

070 FUNCTION?

^-line number

070 STOP S-00.

070 STOP S-050

070 TIME 000

070 TIME 003

073 FUNCTION?

• To end entering control instructions, press the [ENTER]

key again

[

UN| 256

f*C* 0. MfiC i

• You can display a sp#ci'ic frame by designating by the

frame number as follows For example, to enter the control

instructions "Stop at Frame 1500 for 5 seconds" on Line

456

Step Keys to be pressed

|PGM||4)(5]|6)|ENTER)

1. (STOP]

2. (MODE]

3. |1|[5][0]{0]

4. j (ENTER)

5. ,(5| 456 TIME 005 C-24

e. »lENTEfy

'*v'lvl-^>>'lvVArlv^lvJw^vVl\.-

Display

456 FUNCTION?

456 STOP S-001

456 SiOP 00000

456 STOP 01500

456 TIME 000

456 TIME 005

.460 FUNCTION?

.*• ,*• *• .*- •

v

• • • •

uNi m >.»* sAt

UNE 000

Step a:

»soe

I-»* 2H,

PAOE 0

_r

PAGE I

.-. ^ *. /. _v _'.V^CJWV%V^%^-^ .•^^v^Vw'-V^-V .-..^...v..
MEMORIZINaTHECONTRO^INSTRUeTIONSfOFfBRANeHIN IWPJ U'.l

USING THE [GO TO] KEY

You can jump from one line to another.

For example, if you want to enter control instructions "Jump

to Line 001" on Line 418, proceed as follows.

Step Keys to be pressed

[PGM] [4] 11] [8} [ENTERJ

Display

418 FUNCTION?

1. (GO TO (RUN)] 418 GO TO 000

2. [1]

(lir* number to jump to)

• If jumping to Uno 000 »kip

this stop.

418 GO TO 001

3. [ENTER] j 420 FUNCTION?

• To end entering control instructions, press the [ENTER]

key again.

• You can jump to any line among Line 000 to Line 511.

LINE 001

LINE 000

PAGE 0

USING THE [INPUT] KEY

Use the [INPUT (SKIP)] key to devise a control instruction

which offers the user a choice of which one of up to 9 different lines will follow.

It is possible, for example, to devise a Line 057. in which if

the user presses figure key 1 the next control instruction will

be Line 042 and if he presses figure key 2 the next will be

Line 120, and so on. Proceed in this way:

Step Keys to be pressed Display

[PGM] [5] [7] [ENTtRTI 067 FUNCTION?

1. [INPUT]

[4] [2]

057 INPUT-1 000

2. 057 INPUT-1 042

(Itnt numb* to jump to)

3. [ENTER] ; 057 INPUT-2 000

4. [1][2][0] 057 INPUT-2 120

5. [ENTER] 057 INPUT-3 000

6. (

ENTE"L— ( 060 FUNCTION?

]

i

• To end entering cont'd instructions, press the (ENTER]

key. -000 FUNCTION?" will be displayed

NOTE

As lines are stored in two groups (which we call

"Pages") — from Line 000 to Line 255 on Page 0 and from

Line 256 to Line 511 on Page 1. it is not possible to jump

from a line on one page to a line on another.

LINE 255

LINE I»

LINE 057

INPUT» 04?

INPUT2 120

LINE 04?

i

LINE 001

LINE 000

M

[ LINE 5"

n

LINE :M

PAGE 0 PAGE I

L*N£ JOC

PAGE 0

f LINE 5»

—- -.

*>+W&4 .»* 1

JL -

1 LINE ?-;

—HCG-i j j* 1

J

J

UNE 256 n

f

-J i:-2S

PAGE

">-*-•-'-•- -•- '^_*_ •_•-*.*JL^V "•?_*-?. — '-»'A. -» -f *&. -*:'.» -•— .4- rf . .• ^_ -fc -1 -s. •». J •f - -* • -' -

m

-*•
USING THE BUILT-IN REGISTERS TO CHECK THE CONTROL INSTRUCTIONS ENTERED

The LDP-1000A has four registers numbered from 0 to 3. The

registers count the times a control instruction has been performed. The value memorized on a register decreases by

one each time the control instruction is performed. If the

value on a register is not 0, the operation returns to the

beginning of that control instructions to repeat it until the

value becomes 0, at which point the operation goes on to

the next control instructions. Using these registers, you can

repeat a particular control instructions up to 255 times.

NOTE

Again, it is not possible to jump from a line on one page to a

line on another.

For example, if you want to enter control instructions "Play

Segment 5 at fast (x3) speed for three times using

Register-1" on Line 040, proceed as follows:

»tap Keys to be pressed Oisplay

(PGM] [4] [0] [ENTER] [

:(«(INT)l \

040 FUNCTION?

1. 040 REG-0] = 000

2. '(1)

(register numb*)

• To UM Aogistar-O.

.'«fc'P this step

040 REG-1] = 000

3. (ENTER] 040 REG-1 = 000]

4.

i (timos to bo piayad)

040 REG-1 = 003]

5. (ENTER)

'(FAST)

042 FUNCTION?

6. 042 FAST S-001

• • To play at normal apaad,

; »kip this slop

7. (5)

• frogmsni numb*>

" 042 FAST S405

i • To play Sogmont i.

i sfc.p Ihia «lap j

a. (ENTER) 044 FUNCTION?

». :M 044 REG-0) J 000

10. .HI

• tins somo rogisto« numbo*

044 REG-1) J 000

•s in slap 2)

•

11. (ENTER) 044 REG-1 J 000]

12. •PIP.

i flina numoar in slop Si

044 REG-1 J 042)

| an»« hna numbs« is 000.

j skip IfMS slop

13. (ENTER) 046 FUNCTION

• If 0 ' is entered at tnis point, the register does not June

tion

• To end entering control instructions, press the (ENTER!

key again

1. Press the [PGM] key. "START AT 000" will be displayed.

2. Press the line number to be checked. To check Line 000,

skip this step.

3. Press the [PGM] key. The data on the selected line will be

displayed.

• To check the following control instructions, press the

[PGM] key again.

• To end the check, press the [CL] key.

TO CORRECT THE ENTERED CONTROL INSTRUCTION DATA

Call up the line to be corrected and enter the correct data.

For example, if you want to change the playback speed of

Segment 2 stored on Line 006 from PLAY to SLOW, proceed

as follows:

Step Keys to be pressed Display

1. (PGM] 1

r

START AT 000

2. (6] START AT 006

(lina numbar)

3. (ENTER] 006 FUNCTION?

4. ^(SLOW] 006 SLOW S-001

5- (2)

(segment numbor)

006 SLOW S-002

6. (ENTER) 006 FUNCTION?

7. JEND] _ »» — .

• To end the correction, be sure to press the [END] key. If

you press the (ENTER) key instead, the control instructions

will be terminated at Line 006 and the next control instructions will not be performed.

l>26

> _% L*« «.** t 

• -» -» !-» \*. .*-»*-«\ka.
ERRORMESSAG—Hi») ftMSWI»

If you press an improper key, one of the following messages

will appear on the monitor screen for about 1.5 seconds. When

this happens, press the cotect key.

INVALID KEY

"INVALID KEY" indicates that the pressed key has no function

in the operation of the LDP-1000A.

TOO LARGE

"TOO LARGE" appears in the following situations.

• when a repeat time of more than 16 is entered in the

Repeat Search mode.

(The maximum number of repeat times is 15.)

• when a register number of 4 or more is entered.

(The register numbers are from 0 to 3.)

• when you select Line 512 or higher to enter data.

(The lines are numbered from 000 to 511.)

• when a segment number of 64 or higher is entered.

(The segments are numbered from 1 to 63.)

• when 256 or higher is entered as data for the register.

(The register can accept data from 1 to 255.)

FORMAT ERROR

When you press a key which designates an impossible operation while checking the control instructions or performing the

operation with control instructions "FORMAT ERROR" will appear and operation will be interrupted.

PAGING ERROR

When you enter the control instructions in the LDP-10OOA to

jump to a Line stored on the other page using the [INPUT] key

or (J) key. "PAGING ERROR" will appear. Remember that Lines

000 to 255 are stored on one page and Lines 256 to 511 on the

other page and that you cannot jump between pages.

MEMORY END

When you enter control instructions over Program 511 during

entering control instructions, "MEMORY END" will appear.

CAPACITY OF DATA

Frame numbers: from 1 to 54.000

Segment numbers: from 1 to 63

Line numbers: from 000 to 511 (Line 000 to 255 are

stored on Page 0 and Line 256 to 511 are stored

on Page 1.)

Inputs: from 1 to 9

Register numbers: from 0 to 3

Values which can be entered on a register: from 1 to

255

(It 0 is entered, the register does not (unction.)

Times a particular part or segment can be repeated: up to

15

(If 0 is entered, playback will continue until the

command to stop is entered.)

Speed for frame-by frorr.c advance or siow motion: 1/1 to

1/255

1. Press the [PGM] key.

2. Press the figure keys of the line number you want to play.

3. Press the [RUN] key, and the operation will begin and

continue in sequence to the line on which the end indication is entered.

CONTROL INSTRUCTION SHEET

Line

numbet Instruction Mealing of the instruction

000 STOP 00010

TIME 000 Stop at Frame 10 for 0 second.

004 INPUT-1 010 Jump to Line 010 when [1] is pressed.

INPUT-2 040 Jump to Line 040 when [2] is pressed.

INPUT-3 070 Jump to Line 070 when [3] is pressed.

INPUT-4 100 Jump to Line 100 when [4] is pressed.

009 END End of the instructions.

010 S-001 Play Segment 1.

011 S4X)2 Play Segment 2.

012 S-003 Play Segment 3.

013 S-004 Play Segment 4.

014 STOP 00250

TIME 010 Stop at Frame 250 for 10 seconds.

018 GO TO 000 Jump to Line 000

020 cND End Of the instructions.

040 REG-1 002 "2" is stored on Register-1.

042 FAST S-005 Play Segment 5 at fast (x3) speed

044 INPUT-1 070 Jump to Line 070 when (1) is pressed.

INPUT-2 050 Jump to Line 050 when [2] is pressed.

047 END End of the instructions

050 REG-1 J 054 When the result subtracted one from the

value en Register-1 is not 0, tump tc Line

054; when it is 0. go to the next instructions.

052 GO TO 070 Jump to Line 0/0

054 REG-2 002 2' is Stored on Regtster-2

056 S-010 Play Segment 10.

057 INPUT 1 042 Jump to Line 042 when (1) is pressed

INPUT 2 120 Jump to Line 120 when [2] is pressed

060 END End o? the instructions

120 REG 2 J 056 When the result subtracted one from the

value on Register-2 is not 0. jump to Line

056. when it :$ 0. go to the nenl instructions

122 GO TO 010 Jump to Line 010

h.y

0-27

r. i - > . tr_ • _ • ..

f.A.'.V-^'-iV-.' V-V V.W'^'-*.'-r_V ^V^>Ü^V^^^^,iÄ-,

iiÖ
HOW THE CONTROL INSTRUCTIONS ON THE PREVIOUS PAGE OPERATES

Stop at Frame 10 for

OMeond

(Une-OOO)

Play Segment 1

(Line-O10>

I

(Line-004)

Stora 2 on

Ragistaf • 1

(Lina-040)

to Line-070 to Una-100

Play Sagmant 2

(Line-011)

I

Play Segment 3

(Lina-012)

I

Play Segment 4

(Line-013)

I

Stop at Frame 250 for

K) seconds

{Line-CUi

I

Jump to Lme-000

(Line-018)

Play Segment 1 at

fast speed

(üne-042)

(Line-044>

to üne-070

When the result subtracted one from

the value on Register -1 is

- not 0. lump to Lme-054

- 0. po to the next instructions

(Line-060)

I

Jump to Une-070

(Lme-052)

to Lme-070

»0

Store 2 on

Register - 2

(Lme-064)

Play Segment 10

(üne-056)

(Line-057)

When me result subtracted one *rom

the value on Register - 2 is

- not 0. tump lo Lme-056

- 0. go to the ne«l instructions

(Line-120)

Jump

E

to Line-0i0

(Line 1221

L

.'.

C-2Ä

tC-:^c^v:C'A-A0l-:v.v:-/^VIVIVIV'A^AV;: -a iA fc^ »•*• A -*• -'»-'»-'«*'* A»'»-^ - •

••• • • • »«•• •"»••
0WI0NA1 CONNEGTlONSfcs^^

STEREO SYSTEM CONNECTION

Stereo hi-fi bilingual sound can be reproduced by connecting the stereo system

to the LDP-1000A videodisc player.

Connect the LINE OUT CH-1/L and CH-2/R on the player to the AUX input (or tape

tuner input) jacks on the stereo amplifier or receiver.

Stereo system

--:..*.

^^o*

to AUX, etc.HCIH

CONNECTION WITH A TIME BASE CORRECTOR

• If a monitor is connected

to the LDP-1000A. the color

reproduction cannot be

obtained on the monitor

screen.

• The time base corrector

should be the direct mode

type such as the Sony

BVT-1000. BVT 2000

SC/SYNC INT/EXT switch

-EXT

monitor

CONNECTION WITH AN EXTERNAL SYNC GENERATOR

VIDEO OUT

ftSLiJl 1 L.JL

a

SC/SYNC INT/EXT switch

-EXT

external sync generator

• If the external sync generator is not connected to the SC IN connector, the

color reproduction canno» be obtained on tne monitor screen C-29

l

^':^

:

'--^+*'*'*'+^
If^"ryyjJ,''/*T«'.wv

-

yY

.

r,f

.

rs

7 *T*.y"•* V V.^n.T-^rjcr.'^Tyyri^v rv T* r* r*TT*yw^r? i'* .' I', TVW f» y '." "^ "V -.'

FOtfi^SP^T^EtoPiDOOAlÄHREPiVDKING^R^HIPWENT

1. Place the cap over the objective lens.

2. Turn the adjuster on the bottom until the arrow of the

location indicator are aligned.

3. Turn the shipping screw clockwise with a coin or similar

object until it is tight.

Adjuster

Location indicator

4. Attach the cushion in the disc compartment as illustrated.

The packing procedure is subject to change.

Refer to the illustration on the original carton for later packing instructions.

.">.

.V."

C-jO

V-v^-ÄvJ
sBEe\s\cMioHmKmm^mm^^

General

Pick-up method Laser beam (reflective)

Laser He-Ne (« - 6328.M

Maximum playing time

CAV: 30 min./side

Spindle revolution

CLV: 60 min./side

CAV: 1800 r.p.m.

CLV: 1800 r.p.m. (inner circumference) to

700 r.p.m. (outer circumference)

Video

Signal

Output

Resolution

Signal-to-noise ratio

VHF output

Input signals

EIA standards, NTSC color

1.0V(p-p), 75 ohms

unbalanced, sync negative

Color: 360 lines

42 dB

Channel 3 or 4 (selectabie)

75 ohms, unbalanced

SYNC 4 V(p-p) ±1 V(p-p), 75 ohms

SC 2 V(p-p) ±0.5 V(p-p), 75 ohms

$

Audio

Output

Signal-to-noise ratio

Frequency response

LINE OUT: Less than 2 k ohms

0 ±2 dB [V] (100% MOO, 47 k ohm load),

unbalanced

PHONES: 8 ohms, -19 ±2 dB [VJ

More than 50 dB

40 Hz to 20 kHz (±3 dB:

Other«

Power requirements 120 V ac ±10%, 60 Hz

AC OUT Unswitched 120 V ac. max. 400W

Power consumption 110W

Operating temperature 10*C to 35'C (40*F to 95*F)

Dimensions 542 * 160 * 415 mm (w/h/d)

(213/8*61/4x 16^8 inches)

Weight 19.6 kg (43 lb 3 oz)

&

Remote control unit RM-1002

Remote control system

Infrared control

Power requirements

Dimensions

Weight

4.5 V dc

Battery size AA * 3

(IEC battery designation R6)

91 * 31 * 157 mm (w/h/d)

(3^8 ni*k* 6

1

/4 inches)

280 g (10 oz) including batteries

Accessories supplied

75-ohm coaxial cable with F-type connectors (1.5m)

Remote cable (2m)

Design and specifications subject to change without notice

C-31

*' v ••'• r i '^'•-•*'-'•-» ^-"-•'•-* v •• :/:^^j,\VJ»\\\\\VJi-.:i\iJ-^\y^»ritenVrV\^-\--^ ^ -. \. v
miiaiflBSS..: p.v:w .v •!'• *M" * «p.« • i • m immm^yr1 < »w

titiii -ttia^umiHiiiTiiiiin I '•»•riiitf fcitr in i-n * ätmtt iminAtr i

Many apparent malfunctions may be caused by a mis-set

control that has been overlooked, or some other equally simple

cause.

Should any difficulty arise in operation, check through this list

of symptoms, and cause and remedy. Should the difficulty

persist, urvlug the unit and contact the dealer from whom this

unit was purchased, or a local Sony authorized service station.

Symptom Cause and remedy

Lid does not open. • Power cord is not properly plugged into ac outlet. -»Connect an ac power cord.

• Power is not turned on. -* Press the POWER button.

• Latch is not released. — Press the OPEN button. (See page 12.)

Disc does not rotate. • Power is not turned on. -• Connect the ac power cord to an ac outlet and press the

POWER button.

• Lid is not shut completely. -»Push lid close firmly so latch locks.

Disc rotates but no picture. • The shipping screw has not been loosened. -» Turn the shipping screw fully counterclockwise.

•The lens cap is still put on. -• Remove the lens cap.

•The unrecorded side is played. -»Turn over the disc.

•TV or monitor is not turned on. -* Turn the TV or monitor on.

•Wrong connection from player to TV or monitor. -• Make correct connections.

• TV set is not tuned to channel 3 or 4. -• Set TV to channel 3 or 4 (inactive channel

in your area).

•The RF CHANNEL selector is not set properly. -• Set the selector to the inactive

channel in your area.

• The player is in the standby mode. -»Wait for a moment.

• The EXT CPU ON/OFF switch is set to ON. — Set the switch to OFF.

Picture quality is bad.

TV no longer receives the broadcasting

program after it has been connected to

the player.

• Bad connections between player and TV or monitor -» Check all connections,

particulary F type connector.

• The RF CHANNEL selector setting and the channel selected on the TV are not correspond. -* Both TV and playe' must be set to the same channel (3 or 4) which is

not active in your area.

• TV fine tuning has not been adjusted. -• Fine tune the TV for optimum picture quality.

•The disc is not installed firmly. -»Install the disc firmly.

• Poor disc. — Try playing a different disc. If other discs give good quality, the problem

is with the particular disc.

• The antenna cable has not been connected. -• Connect the VHF antenna cable

properly.

• The antenna selector on tho player is set to VDP -• Set the selector to ANT.

A particular part of a particular disc is

not reproduced properly.

• The disc is damaged. — Press the SCAN key to skip over the damaged portion.

The control unit on the player does not

work.

> The unit has not been connected firmly. -* Install the unit onto the player firmly.

Wireless remote control does not work • Trie batteries in the control unit are exhausted. -• Replace the batteries.

Wired remote control does not work. ! Remote control cable is not connected firmly. -» Connect the cable to the REMOTE

jack on the player and the remote control jack on the control unit firmly.

'."

c

C-32

£*±S£MJLM «'- »- t'-»- «'. «•-
APPENDIX D

LENCO PSG-310 MANUAL

D-l

»3L*ü .'C'Av'^ v .\ jfcte 3 •'iVA'A^ L\ .•'•.uv.Vv-''.-'L.,

•-*•-'•-« i ••-' •-' *-' Lc%Ä«-I--Vw ^vVlv'-V'IV-AV.' «/.•-•!• .IN
PSG-310

SYNC GENERATOR

INSTRUCTION MANUAL

D-2

H&fi>>l>£>>>>J>;K5i>i>^^^
'. • t-» .-» V « «T» . - '„••w » t »—••»•!, <.„ IE'4

TABLE OF CONTENTS

Page No.

General Description 4

Specifications 5

Set Up Procedure 6

Technical Description 7-10

Mother Board Connector Pin Assignment 11

Rear Panel Connectors 11

Parts List 12-15

Front Panel Parts List 16

Parts Assembly 17

Schematic 19

Option 1 Variable Blanking Width Module 20

Blanking Width Control Assembly 21

Option 1 Blanking Module 22

Option 1 Variable Blanking Width Module Parts List 23

Schematic 24

Product Warranty 25

D-3
GENERAL DESCRIPTION

The PSG-310 Digital Color Sync Generator exemplifies the latest in design techniques of Digital engineering.

The unique circuits allow us to offer an ultra-stable and trouble free generator, with exclusive features not

normally found in broadcast quality equipment.

A temperature compensated crystal oscillator, operating at 14.318180 MHz provides the stable master

frequency source from which all pulses and subcarrier are derived. Using digital dividing techniques,

subcarrier, as well as the sync, blanking, horizontal and vertical drive pulses, are produced virtually jitter

free. All pulse widths and levels are fixed per EIA standards and cannot change. There are only three

internal adjustments in the generator — subcarrier amplitude, lock range and vertical phase — which are set

at the factory and seldom, if ever, require adjustment.

The Genlock circuit has a unique noise immunity circuit which makes the generator highly insensitive to

noise or extreme changes in input levels. The incoming video is sensed by an extremely fast video presence

detector, processed and locks the generator automatically to the 50% point of the sync pulse. Genlock is

accomplished within one second.

Other exclusive features include a clamped video feed, a field ident pulse is available if burst flar is not

required, continuous adjustment of horizontal phase, instead of in 70 nS steps, vertical phase adjustable to

two lines advance to compensate for enhancers, and three voltage regulators with current overload devices

for power buss and module protection. The PSG-310 supplies a full set of drive signals to both the output

connectors on the rear panel as well as to the busses on the frame for use by any other 300 System module

that may require them.

D-4

•*v*-^'-j>-?'•-•s-'>-?''>-ö-J'-"»%-.•-!*•• v«v>i!.vi.vv» .y^ykVViTlv.v, * .-*y.\V>VA-V-V-VVW .V_V_%V., .-,V>V^I-.-' .•!*.« v*
SPECIFICATIONS

PULSE:

Outputs One each: Sync, Blanking, H-Drive, V-Drive & Burst

Flag or Field Ident

Levels 4.0 Volts ±5% p-p, fixed

Impedance 75 Ohms, ± 1%, source terminated

Widths Nominal FCC. EIA and NTSC standards

Tilt and Overshoot Less than 1%

Jitter Less than 5nS, referenced to subcarrier

Rise Time 120 nS ± 20 nS

SUBCARRIER:

Frequency 3.579545 MHz, ±5 Hz

Output Impedance 75 Ohms, ±1%, source terminated

Output Level 2.0 volts p-p, adjustable ± 20%

Harmonic Distortion Greater than -45 dB at 2.0 volts p-p

GENLOCK MODE:

Video Input Level 1.0 volt p-p, ±6 dB, RS-170/NTSC signal

Video Input Impedance Greater than 50K bridging, looping input

Pulse Jitter Less than 5 nS, referenced to input sync

Subcarrier Jitter Less than 0.5° referenced to input burst

FRONT PANEL CONTROLS:

Crystal Frequency ±30 Hz at 3579545 MHz

Subcarrier Phase 360e Continuous

Horizontal Phase 0.8 ^S delay to 3.5 MS advance, continuous

INTERNAL CONTROLS:

Subcarrier Amplitude ±6 dB from 2.0 volts p-p

Vertical Phase 1.5 lines advance to 1.5 lines delay in v? line steps

ENVIRONMENTAL:

Temperature 0

s

IO 50° C. ambient

POWER:

Input +15 (145 mA). -15 (130 mA) and +8 (120 mA) VDC

received from PFM-300 Frame

MECHANICAL:

Size 2V (7.30 cm) x 1V (3.81 cm) x 11V (30.163 cm)

Weight 11.15 oz (316 g)

Mounting PFM-300 System frame only (one module width)

D-5

.-•.*.'--*••• 1^2. u^. «- -- U m i. h ifli h"i "a*, -w
SET-UP PROCEDURE

EQUIPMENT REQUIRED:

PFM-300 System Frame and Power Supply

Dual Trace Oscilloscope with 2-75 Ohm BNC through, Terminations

Frequency Counter 10 MHz

PEX-308 Extender Board

PROCEDURE:

1. With Generator in Frame, apply power.

2. Using a short 75 Ohm Cable and a feed through 75 Ohm Termination, check for 4 Vp-p ± .5V of each

output signal. Output #3 — Burst Flag or Field I.D.

Output #4 — Composite SYNC

Output #5 — Composite Blanking

Output #6 — Vertical Drive

Output #7 — Horizontal Drive

Output #8 — Subcarrier (should be 2Vp-p)

3. If Subcarrier Amplitude adjustment is not required, go to step 4. If required, place on Extender and

reconnect the subcarrier output to the Oscilloscope as in 2. Adjust L4 for 2 Vp-p.

4. Connect the subcarrier output to a frequency counter. Check for a 3.579545 MHz ±5 Hz frequency.

Adjust the front panel frequency control if required.

NOTE: This adjustment affects the internal reference only and should not be adjusted for any Genlock

funtion.

5. Loop A Video source through BNC Terminals 1 and 2 and Terminate at the Oscilloscope. Channel 2.

Connect Channel 1 to output #4 (Composite SYNC). Trigger Oscilloscope on Channel 1 and set sw*ep

to 10 MS/DJV. Set display to ALT and adjust gains for viewing the Video and SYNC.

6. Place the Generator in Genlock. The regenerated SYNC should lock to the Video SYNC. Adjust C40 for

Lock. Apply a test signal to the input of the PSG-310 and observe the error voltage on R67. R67 is a

stand up resistor. Connect the oscilloscope probe to the "loop" on R67 and then adjust C40, LOCK

FREQUENCY, so that the error voltage is 0.5 volts above ground when the unit is cold. This voltage may

have to be slightly readjusted if the unit does not lock properly.

7. Connect A 75 ohm Cable between output #6 (Vertical Drive) and the External Trigger input on oscilloscope. Switch oscilloscope to Ext. Trigger. Check that the regenerated vertical SYNC pulses align with

Video SYNC. Adjust R62 if required.

D-6
TECHNICAL DESCRIPTION

This description is divided into ten sections (Figure 1). They consist of pulse generator, pulse output,

subcarrier generator, subcarrier output, video processing, color lock, horizontal timing, vertical timing, video

sense and power supply.

VIDEO

VIDEO PROCESSING

01,02,03,04,05,06,

Q7,Q8,Q9,QI0

UI,U2

JL

COLOR LOCK

QII,QI2,QI4,QI7

U3,U4

HORZ. TIMING

013,015,016,

020,021,022,

024 U4

1

SUBCARRIER

GENERATOR

US

OFF

LOCK

VIDEO

SENSE

U7

I

JL

VERTICAL

TIMING

Q25

U6

PULSE GENERATOR

Al

U8,U9,UI0,UII,UI2

SUBCARRIER

OUTPUT

026,027,

028,029

BURST

FLAG

030,031,

032,033

VERTICAL

DRIVE

NJ34,Q35,

Q36.Q37

HORZ.

DRIVE

036,039,

040,041

BLANKING

042,043,

044,045

SYNC

046,047,

048,049

FIGURE I

D-7

teC<c-:%<-lw:v: i^ ^L^Z
PULSE GENERATOR

The internal frequency reference is a self-contained 14.31818 MHz oscillator (A1). A1 is switched on and

off with Q18 and Q19. The oscillator is turned off whenever the Genlock Mode of operation is selected. Its

output is coupled to Z8 through R68 and C38. Z8 is a gate controlled two-channel-input wideband

amplifier. The output on pin 7 is coupled back into an input through crystal Y2. This positive feedback

causes the amplifier to oscillate at 14.3 MHz. When the oscillator A1 is operating, it causes the VCO Z8 to

sympathetically lock. When A1 is off, D12 (a varicap diode) controls the frequency while C40 sets the center

frequency. D13 and D14 form a decoupled power source for 28; D13 and D14 regulate at ±6.8 volts.

The buffered output (from Q23) drives 6 J-K flip-flops, Z9, Z10 and 211. Z9 is wired as a synchronous

divide by 4, its output (pin 12) is 3.579545 MHz. Z10 and Z11 are wired as a synchronous divide by 7, the

output (211, pin 8) is 2.045 MHz. R89 and C49 limit the rise and fall times to meet the drive requirements of

the sync generator IC Z12. The clock pulse is on pin 3.

Z12 is a completely self-contained sync generator. It develops all the timing pulses prescribed by RS-170.

The outputs used in this generator are: pin 16 composite sync, pin 15 horizontal drive, pin 14 composite

blanking, pin 12 burst flag, pin 11 vertical drive, and pin 9 field ident. Pin 5 is a vertical reset input. A

negative going pulse on pin 5 will cause the generator to reset to line number 11. All the outputs have the

same amplitude, +3.5 to -8 volts.

PULSE OUTPUTS

All of the output cells are the same. The sync output is typical. The output from Z12, pin 16. is coupled into

the cell by R96. D33 and D34 clip the 11.5 Vp-p pulse to 4 Vp-p. D33 reverses at -3.4 volts and limits the

negative swing to that level. 034 reverses at 0.6 volts and limits the positive swing to that level. The output

cell has a gain of 2 so that the output at the emitters of 048 and 049 is 8 Vp-p.

The output cell is a high gain op-amp, with negative feedback provided by R124. R124 and R123 set the

gain at 2. C60 limits the frequency response of the cell and prevents parasitic oscillations R126 sets the

output impedance to 75 ohms.

8UBCARRIER GENERATOR

The subcarrier generator (Z5) is a gate controlled two-channel-input, wideband amplifier. When pin 2 is high,

the 3.58 signal from Z9 is amplified. When pin 2 is low, the output from pin 7 is coupled back into the input

through crystal Y1. This positive feedback causes the amplifier to oscillate at 3.58 MHz. 07 (a varicap diode)

controls the frequency. 08 and 09 form a decoupled power source for Z5. 08 and 09 regulate at ±6 8

volts.

SUBCARRIER OUTPUT

Q26. Q27. 026 and 029 make up an output cell identical to the PULSE OUTPUT cell with the exception of

the input 3.58 filter, L4 and C53 This filter is a high 0 resonant circuit tuned to 3.58 MHz. Its orimary

function is to remove any harmonics in the incoming 358 MHz square wave signal. Its secondary function is

to operate as a subcamer amplitude control. This is done by de-tuning the circuit to decrease the signal at

the input to the cell. C55 isolates the OC component from the output and R101 sets the output impedance at

75 ohms.

VIDEO PROCESSING

Input video is decoupled by C1 and C2 mto FET 01. 01. 02. 03 and 04 form an op-amp with R4

providing the negative feedback to set the input gain at 2. Biasing for the amplifier is provided by op-amp Z t

This op-amp ;s the feedback amplifier for the feedback" clamp used m the input processing.

The damped video at the emitters of 03 and 04 is bandpass filtered by Rio. Li and C9 (approximately 500

KHz) 07 is a sync pre-stnpper it makes a very coarse strip. The stripped sync from 07 controls the gate of

09. a sample and hold' circuit. The sample is taken at video sync tip and the tip voltage is stored in Cl3

D-8

'<*-^.v£%iv:-.^v:^
Z1, a voltage follower, prevents loading of C13. R23 and R24 divide the voltage output of Z1 by 2/3,

forming a reference for the comparator Z2. The reference is always 2/3 sync amplitude. This insures that

the fine stripper (Z2) always strips at the 66% point of incoming sync. The stripped sync is on pin 7 of 22.

010 is a "box car" one-shot. It develops a 2 pS pulse following each sync pulse. This pulse controls the

gate of Q8, a "sample and hold" circuit. The sample is made at back porch and stored in C12. R16

bypasses a small amount of the video around the sample and hold circuit. This allows the clamp to "start up"

at turn on.

Q5 and 06 form a noise cancelling circuit. Non-filtered video is coupled into Q5 through C7. Q5 is biased

slightly off so that only impulse noise more negative than sync tip will cause it to conduct. When it conducts,

the collector will go positive, turning on 06. C10 has little effect on Q6's turn on time, but delays the turn off

time about 2 fiS. The video going to the sync stripper is low pass filtered to about 500 KHz which delays it

about 1 /xS. The strip reference voltage at Z2 pin 2 is pulled down away from the noise by 06 before the

noise arrives at pin 3 (the noise is detected from non-delayed video). 06 does not release the reference

voltage until after the impulse has ended (the turn off delay due to CtO). In this way the noise is not stripped

out by Z2; this in turn helps control the jitter in the regenerated pulses.

COLOR LOCK

The color lock consists of a closed loop made up of a chroma demodulator, a chroma clamp, a "sample and

hold" circuit, a feedback amplifier, and a subcarrier oscillator. Z3, a balanced chroma demodulator, is driven

by two input signals. The first is chroma from bandpass filter L2 and C17. The second is from the subcarrier

output amplifier through R52 and C32. Z3 contains a voltage controlled phase shifting circuit, with the input

at pin 3, the output at pin 1, and the control voltage at pin 2. A ±45° range is provided with R29, the

subcarrier control. The subcarrier at pin 1 is coupled to the demodulator section through the quadrature

network C27, L3 and R38 to pin 6. the B-Y demodulator and pin 12. the R-Y demodulator. The R-Y (pin 10)

and the B-Y (pin 8) outputs from Z3 are switched with S1 to couple either one to the phase comparator.

Since the burst information contained in these two signals is 90° different in phase, the regenerated

subcarrier locked to burst will be 90 displaced, depending on which one is selected by S1.

The chroma input to Z3 is either pin 14 or pin 15. depending on whether Ql 1 or Q12 is shunting the chroma

signal to ground through C19 or C20. The demodulated output will change 180° as the input is switched

Btween pin 14 and pin 15. In this way as S2 directs the signal to either pin 14 or pin 15, the regenerated

subcarrier will change 180C

With these three controls, S1. S2 and R29, the regenerated subcarrier can oe phased 360° with respect to

incoming video burst phase S1 controls it in 90[steps, while S2 controls it in 180° steps and R29 phases it

linearly 90' The selected output from S1 is coupled to the clamp 014 Q14 clamps by shunting the signal

on C18 to ground during sync tip Tne clamp dnve is the prestnp pulse from Q7. Qi7. a "sample and hold

circuit samples the clamped demodulated chroma during birst The sample dnve pulse is from 010. The

vertical drive signal from Z12 (pm 11) prevents samples during vertical interval, when burst is omitted

through D5 The sampled voltage is stored in C30 Op-amp Z4 is the feedback amplifier and maintains a

control voltage on D7 in the 3 58 oscillator circuit

HORIZONTAL TIMING

Horizontal timing consists of a closed loop made up of a sample pulse generator, a ramp generator, a

feedback amplifier, and a 14 3 MHz oscillator The sample pulses are derived from stripped sync (Z2 pn 7)

Z6 is a 31 5 KHz "lock out It is a 40 MS one-shot triggered by the leading edge of sync The output drives a

box car one shot (Q15) that generates the sampie pulse

016 is m series with 015 and form a logical AND gate The pulse on the base of 016 is m time wi*h the

ramp signal and gates the samole pulse out except during the ramp This prevents erroneous samples mat

might occur due to no>se on incoming video The output from the AND gate Q15 and Q16 is coupled to Q

1

3

where the bo* car one-shot develops the sample pulse

D-9
The ramp signal is derived from horizontal drive. The drive pulse from Q40 and Q41 is level shifted by R90

and R84 to drive the one-shot Z7. The duration of the output pulse (pin 13) is determined by C45, R82 and

R55, the HORIZONTAL PHASE control. The "box car" one-shot Q24 generates a 2 MS pulse at the trailing

edge of the pulse form Z7. This in turn drives the AND gate 015. Q16 and the ramp generator Q21 (a Miller

integrator). A ramp forms at the collector of 021. Q20 is a "sample and hold" circuit where the sample

pulse from Q13 samples the ramp from 021 and stores the sampled voltage in C39. The feedback amplifier

Z4 maintains a control voltage on 012 to control the frequency of the 14.3 MHz oscillator.

VERTICAL TIMING

Vertical timing is achieved by resetting the generator IC (Z12) during the vertical interval. The reset pulse is

generated by Q25 and drives pin 5 of Z12. The timing pulse is derived from stripped sync (Z2, pin 7). C52

and R63 separate out the vertical pulses by integration. The one-shot Z6 is triggered near the leading edge

of the first vertical pulse. The duration of the output pulse (26 pin 4) is controlled by C50, R61 and R62. the

VERT PHASE control. C48 couples this pulse into the "box car" one-shot Q25 where the reset pulse is

generated at its trailing edge.

V!OEO SENSE

The vertical reset pulse from Z6, pin 13 is used to trigger a one-shot, Z7. The pulse duration is set by C46

and R83 to last several vertical frames. 11 is a retriggerable one-shot and will remain triggered so long as

vertical resets are detected. If video is removed from the generator, vertical resets will no longer be

generated and Z7 will be allowed to finish its pulse. At that time the generator will automatically revert to

internal mode.

The generator is taken in and out of lock by the video sense circuit through S3. When S3 is closed to 27 pin

12, it will genlock if pin 12 is high (video present). It will revert to internal mode if pin 12 is low (no video). If

pin S3 is open to pin 12, the generator will operate in internal mode. When S3 is in the genlock OFF

position, the junction of R50 and R51 is held at a constant DC level (Z7 pin 12). This prevents any signal at

the output of Z4 from disturbing the subcarrier being generated in Z5.

POWER SUPPLY

The generator operates on a * 15V source and a +8 volt source. On-board regulators Z13 (-»-5). Z14 ( + 12)

and Z15 (-12) regulate these supplies. The generator will operate so long as the input supplies are: + 15V

to *25V. -15V to -25V, and +8V to +15V.

Z14. Z15 and Z16 are all over temperature and over current protected

D-10

• • •, '_ .'• . i'A-V > V .J
MOTHER BOARD CONNECTOR PIN ASSIGNMENT

Provides interconnects between the modules and the power supply, as well as between modules to allow for

maximum flexibility. The following table will allow for quick reference to what signals are available:

Mother Board Connector At Seen From Front: |

Pin Pin

+8 volt D.C. supply 1 A System Ground 1

Input from BNC #1 or #2 2 B Shield of BNC connector #1 & 2

C Input from BNC #1 or #2 V

Composite Reference Signal 8 J

K

+ 15 volt D.C. supply

Burst flag or field ident

'•-

Sync 10 Blanking .*/

Horizontal Drive 11 M Vertical Drive

.• >

Output BNC #4 12 N Output BNC #3

«

Output BNC #6 13 P Output BNC #5

«V

Output BNC #8 14 R Output BNC #7 •y

-15 volt D.C. supply 15 S Subcarrier

PSG310 SYNC GENERATOR

REAR PANEL CONNECTORS

1. Video In

2. Video In

3. Burst Flag or Field Ident. Output

4. Sync Output

5. Blanking Output

6. Vertical Drive

7. Horizontal Drive Output

8. Subcarrier Output

D-ll

WV.VA ^'•*'•••*•-»*• >-»>-•>j->>>>>>>>;.-->:»•v£fc>^i>^i^>^^ivi>-:v:vi-JLV^>>:\\v-'vt

.\- ,\ •^»•or^
"yjr'yrr»m-" ITOPVWV^V*V* VüV» IT» v-* u* v^ru-* vwvw\m-mr\w\ir\TK\m\*% w

PSG-3-lO Parts List:

Lenco Lenco

Symbol Dercription Part# Symbol Description Part#

A1 14.31818 MHz Oscillator C27 120pF Mica

OE-10 4700010 CM05FD121J03 2101120

C1 1 JAF 35V Tant C28 4700pF 100V Ceramic

T368A105K035AS 2105102 CK05BX472K 2102470

C2 VF 35V Tant C29 100pF Mica

T368A105K035AS 2105102 CM05FD101J03 2101100

C3 VF 35V Tant C30 .OVF 50V Ceramic

T368A105K035AS 2105102 UK-50-103 2103102

C4 1MF3*VTant C31 VF 50V Erie

T368A105K035AS 2105102 8131-050651105M 2105104

C5 10pF Mica CM04CD100D03 2100100 C32 .01pF 50V Ceramic

C6 VF 35V Tant UK-50-103 2103102

T368A105K035AS 2105102 C33 15pF Mica CM05CD150J03 2100150

C7 250pF Mica C34 .00VF Mica

CM05FD25U03 2101250 CM05FD102J03 2102100

C8 .01jiF 50V Ceramic C35 .002/xF Mica

UK-50-103 2103102 CM06FD202J03 2102200

C9 .001 MF Mica

CM05FD102J03 2102100 C36

C37

47pF Mica CM05ED470J03

VF 35V Tant

2100470

C10 .001ßF Mica T368A105K035AS 2105102

C11

CM05FD102J03

330pF Mica

CM05FD331J03

2102100

2101330

C38

C39

10pF Mica CM04CD100D03 2100100

.OVP 50V Ceramic

UK-50-103 2103102

C12 OVF 50V Ceramic

UK-50-103 2103102 C40 3-10pF Trim Cap Erie

538-01 lC-3-10pF 2510300

C13 OVF 50V Ceramic

UK-50-103 2103102 C41 .0VF

50V Ceramic

UK-50-103 2103102

C14 330pF Mica

CM05FD331J03 2101330

C42 33aF 20V Tant

T362C336K020AS 2106330

C15 560pF Mica C43 470pF Mica

CM05FD561J03 2101560 CM05FD471J03 2101470

C16 56pF Mica CM05ED560J03 2100560 C44 220pF Mica

C17 56pF Mica CM05ED560J03 2100560 CM05FD221J03 2101220

C18 OVF 50V Ceramic C45 680pF Mica

UK-50-103 2103102 CM05FD681J03 2101680

C19 OVF 50V Ceramic C46 2.2MF 20V Tant

UK-50-103 2103102 T368A225K020AS 2105220

C20 OVF 50V Ceramic C47 OVF 50V Ceramic

UK-50-103 2103102 UK-50-103 2103102

C21 OVF 50V Ceramic C48 00VF Mica

UK-50-103 2103102 CM05FD102J03 2102100

C22 33MF 20V Tant C49 33pF Mica CM05ED330J03 2100330

T362C336K020AS 2106330 C50 02MF Mica CM07FD203J03 2103200

C23 OVF 50V Ceramic C51 VF 35V Tant

UK-50-103 2103102 T368A105K035AS 2105102

C24 OVF 50V Ceramic C52 . VF 100V Ceramic

UK-50-103 2103102 CK06BX104K 2104101

C25 OVF 50V Ceramic C53 lOOpF Mica

UK-50-103 2103102 CM05FD101J03 2101100

C26 OVF 50V Ceramic C54 10oF Mica CMC4CD1C0DC3 2100100

UK-50-103 2103102

. .1

'tit,

h

D-12
PSG-310 Parts List

Lenco Lenco

Symbol Description Part# Symbol Description Part#

C55 .01 MF 50V Ceramic D27 1N914 100V 10mA Signal 3100914

UK-50-103 2103102 D28 1N914 100V 10mA Signal 3100914

C56 10pF Mica CM04CD100D03 2100100 D29 1N914 100V 10mA Signal 3100914

C57 lOpF Mica CM04CD100D03 2100100 D30 1N914 100V 10mA Signal 3100914

C58 10pF Mica CM04CD100D03 2100100 D31 1N914 100V 10mA Signal 3100914

C59 10pF Mica CM04CD100D03 2100100 D32 1N914 100V 10mA Signal 3100914

C60 10pF Mica CM04CD100D03 2100100 D33 1N914 100V 10mA Signal 3100914

C61 220/xF Tant 10V Tant D34 1N914 100V 10mA Signal 3100914

C62

T362D227K010AS

1MF 35V Tant

T368A105K035AS

2107222 D35 1N914 100V 10mA Signal 3100914

2105102 D36 1N914 100V 10mA Signal 3100914

C63 1/iF 35V Tant

T368A105K035AS 2105102

D37 1N747 3.6V Zener 3100747

C64 VF 35V Tant L1 82**H Delevan 1641-823 4003820

T368A105K035AS 2105102 L2 22^H Delevan 2307-223 4003220

C65 1MF 35V Tant L3 10/iH Miller 9310-36 4003100

T368A105K035AS 2105102 L4 22/xH Nytronics VIV-22 4053220

C66 VF 35V Tant

T368A105K035AS 2105102 Q1 2N5457 FET-N Channel 3205457 C67 1^F 35V Tant

T368A105K035AS 2105102 Q2 2N3906 PNP Signal 3203906

Q3 2N3904 NPN Signal 3203904

Dl 1N914 100V 10mA Signal 3100914 Q4 2N3906 PNP Signal 3203906

D2 1N914 100V 10mA Signal 3100914 Q5 2N3906 PNP Signal 3203906

D3 1N914 100V 10mA Signal 3100914 Q6 2N3904 NPN Signal 3203904

D4 Deleted Q7 2N3906 PNP Signal 3203906

D5 1N914 100V 10mA Signal 3100914 Q8 2N5457 FET-N Channel 3205457

D6 1N914 100V 10mA Signal 3100914 09 2N5457 FET-N Channel 3205457

D7 MV830 Varactor 3100830 Q10 2N3904 NPN Signal 3203904

D8 1N754 68V Zener 3100754 Q11 2N3904 NPN Signal 3203904

D9 1N754 6.8V Zener 3100754 Q12 2N3904 NPN Signal 3203904

D10 1N914 100V 10mA Signal 3100914 Q13 2N3906 PNP Signal 3203906

D11 1N757 9.1V Zener 3100757 Q14 2N5457 FET-N Channel 3205457

D12 MV830 Varactor 3100830 015 2N3904 NPN Signal 3203904

Di3 1N754 6.8V Zener 3100754 Q16 2N3904 NPN Signal 3203904

D14 1N754 6.6V Zener 3100754 Q17 2N5457 FET-N Channel 3205457

D15 1N914 100V 10mA Signal 3100914 Q18 2N3906 PNP Signal 3203906

D16 1N914 100V 10mA Signal 3100914 Q19 2N3904 NPN Signal 3203904

D17 1N914 100V 10mA Signal 3100914 Q20 2N5457 FET-N Channel 3205457

D18 1N914 100V 10mA Signal 3100914 Q21 2N3904 NPN Signal 3203904

D19 1N914 100V 10mA Signal 3100914 Q22 2N3904 NPN Signal 3203904

D20 1N914 100V 10mA Signal 3100914 Q23 2N3906 PNP Signal 3203906

D21 1N914 100V 10mA Signal 3100914 Q24 2N3904 NPN Signal 3203904

D22 1N914 100V 10mA Signal 3100914 Q25 2N3906 PNP Signal 3203906

D23 1N914 100V 10mA Signa! 3100914 Q26 2N3904 NPN Signal 3203904

D24 1N914 100V 10mA Signal 3100914 027 2N3906 PNP Sgnal 3203906

D25 1N914 100V lörnA Siyuai 3100914 0?fi ?K3»Ü4 NPN Stanal 3203904

D26 1N914 100V 10mA Signal 3100914 029 2N3906 PNP Signal 3203906

s

D-13

«\
PSG-31Q Parts List

Lenco Lenco

Symbol Description Part# Symbol Description Part#

Q30 2N3904 NPN Signal 3203904 R26 1K V4W 5% 1522100

Q31 2N3906 PNP Signal 3203906 R27 22K V4W 5% 1523200

Q32 2N3904 NPN Signal 3203904 R28 2.2K V4W 5% 1522220

Q33 2N3906 PNP Signal 3203906 R29 Front Panel

Q34 2N3904 NPN Signal 3203904 R30 10K V4W 5% 1523100

Q35 2N3906 PNP Signal 3203906 R31 10K V4W 5% 1523100

Q36 2N3904 NPN Signal 3203904 R32 8.2K V4W 5% 1522820

Q37 2N3906 PNP Signal 3203906 R33 15 Ohm V4W 5% 1520150

Q38 2N3904 NPN Signal 3203904 R34 15 Ohm V4W 5% 1520150

Q39 2N3906 PNP Signal 3203906 R35 390 Ohm V4VY 5% 1521390

Q40 2N3904 NPN Signal 3203904 R36 75 Ohm Viw 1% 1110750

Q41 2N3906 PNP Signal 3203906 R37 100Ohm V4w5% 1521100

Q42 2N3904 NPN Signal 3203904 R38 51 Ohm V4W 5% 1520510

043 2N3906 PNP Signa! 3203906 R39 4.7K V4W 5% 1522470

044 2N3904 NPN Signal 3203904 R40 4.7K 1

/4W 5% 1522470

045 2N3906 PNP Signal 3203906 R41 1K V4W5% 1522100

Q46 2N3904 NPN Signal 3203904 R42 1K 'Aw 5% 1522100

Q47 2N3906 PNP Signal 3203906 R43 1K 'Aw 5% 1522100

048 2N3904 NPN Signal 3203904 R44 1K V4W 5% 1522100

Q49 2N3906 PNP Signal 3203906 R45 510 Ohm V4W 5% 1521510

R46 22 Meg V4w 5% 1526220

R1 1 Meg V4W 5% 1525100 R47 18K V4W 5% 1523180

R2 510 Ohm V4W 5% 1521510 R48 510 Ohm V4w 5% 1521510

R3 1K V4W5% 1522100 R49 51K V4W 5% 1523510

R4 1K V4W 5% 1522100 R50 10K V4W 5% 1523100

R5 10K V«w 5% 1523^00 R51 10K V4W 5% 1523100

R6 27 Ohm 1/4W 5% 1520270 R52 4.7K V4W 5% 1522470

R7 10 Ohm V4W 5% 1520100 R53 470 Ohm V4W 5% 1521470

R8 27 Ohm V4W 5% 1520270 R54 470 Ohm V4W 5% 1521470

R9 51 Ohm V4W 5% 1520510 R55 Front Panel

R10 390 Ohm V4W 5% 1521390 R56 270 Ohm V4W 5% 1521270

R11 22K V4W 5% 1523220 R57 270 Ohm V4W 5% 1521270

R12 4.7K V4W 5% 1522470 R58 1K V4w5% 1522100

R13 10 Meg V4W 5% 1526100 R59 68K V4W 5% 1523680

R14 10K V«w 5% 1523100 R60 10K V4W 5% 1523100

R15 10K V4W 5% 1523100 R61 3.9K V4W 5% 1522390

R16 1 Meg V4W 5% 1525100 R62 50K Pot Beckman 82PR50K 1703500

R17 100K V4W 5% 1524100 R63 390 Ohm V4W 5% 1521390

R18 100K V4W 5% 1524100 R64 1K V4W 5% 1522100

R19 100K V4W 5% 1524100 R65 4.7K V4W 5% 1522470

R20 51K V4W 5% 1523510 R66 510 Ohm V4W 5% 1521510

R21 33K V4W 5% 1523330 R67 100K V4W 5% 1524100

R22 2.7K V4W 5% 1522270 R68 1.5K V4W5% 1522150

R23 1K '/4W 5% 1522100 R69 1QQK \/.<fj 5%

R24 2K V4W 5°o 1522200 R70 100K V4W 5°o 1524100

R25 2 7K V«w 5°o 1522270 R71 470 Ohm V4W 5% 1521470

D-14

-A^.V». '.'-.<•- -*. »-'^ V. V.V. «*- »*. **-•*- «*_ «*^«r. »*. »-*--»-* -'-"-* -•*-•'•-•" -»^'wV«-«'
PSG-310 Partis List

Lenco Lenco

Symbol Description Part# Symbol Description Part#

R72 470 Ohm few 5% 1521470 R121 75 Ohm few 1% 1110750

R73 1K V4W 5% 1522100 R122 470 Ohm few 5% 1521470

R74 18K V4W 5% 1523180 R123 1K few 5% 1522100

R75 510 Ohm V4W 5% 1521510 R124 1K few 5% 1522100

R76 510 Ohm few 5% 1521510 R125 3.9K few 5% 1522390

R77 1K V4W5% 1522100 R126 75 Ohm few 1% 1110750

R78 1K V4w5% 1522100 R127 390 Ohm few 5% 1521390

R79 1K V4W 5% 1522100 R128 360 Ohm few 5% 1521360

R80 1K V4W5% 1522100 R129 360 Ohm few 5% 1521360

R81 10K V4W 5% 1523100 R130 360 Ohm few 5% 1521360

R82 2.7K V4W 5% 1522270 R131 360 Ohm few 5% 1521360

R83 68K V4W 5% 1523680 R132 360 Ohm few 5% 1521360

R84 1K few 5% 1522100

R85 2.7K V4W 5% 1522270 U1 MC1458CG Dual Op Amp 3301458

R86

R87

510 Ohm few 5%

5.1K V4W 5%

1521510

1522510

U2

U3

LM710CH National

Hi-Speed Comparator

LM3067N Chroma

3300710

R88 1K V4W5% 1522100 Demodulator 3303067

R89 560 Ohm V4W 5% 1521560 U4 MC1458CG Dual Op Amp 3301458

R90 1K V4W 5% 1522100 U5 MC1445L 2 Ch. Switch 3301445

R92 22K V4W 5% 1523220 Ü6 DM74123N National

R93 22K V4W 5% 1523220 Dual One-Shot 3304123

R94 22K V4W 5% 1523220 U7 DM74123N National

R95 22K V4W 5% 1523220 Dual One-Shot 3304123

R96 22K V4W 5% 1523220 U8 MC1445L 2 Ch. Switch 3301445

R97 470 Ohm V4W 5% 1521470 U9 DM7473N Dual J-K

R98 1K V4W 5% 1522100

U10

Flip-Flop

DM7473N Dual J-K

3307473

R99 1K few 5% 1522100 Flip-Flop 3307473

R100 3.9K few 5% 1522390 U11 DM7473N Dual J-K

R101 75 Ohm few 1% 1110750 Flip-Flop 3307473

R102 470 Ohm few 5% 1521470 U12 MM5321N National Sync

R103 1K few 5% 1522100 Generator Chip 3305321

R104 1K V4W 5% 1522100 U13 LM7805 +5V Regulator

National LM340T5 3317805

R105 3.9K V4W 5% 1522390 U14 LM7812 +12V Regulator

R106 75 Ohm few 1% 1110750 National LM340T12 3317812

R107 470 Ohm V4W 5% 1521470 U15 LM7912 -12V Regulator

R108 1K V4w5% 1522100 National LM320T12 3317912

R109 1K V4W 5% 1522100

R110 3.9K V4W 5% 1522390 Y1 3.579545 MHz RCA 105330 4700060

R111 75 Ohm few 1% 1110750 Y2 14.31818 MHz HA-5 4700020

R112 470 Ohm V4W 5% 1521470

R113 1K few 5% 1522100 Miscellaneous

R114 1K few 5% 1522100 I.C. Socket 16 Dip Cinch 4106120

R115 3.9K few 5% 1522390 Printed Circuit Board

R116 75 Ohm Vtw 1% 1110750 (No Parts) 5041060

R117 470 Ohm few 5% 1521470 Heatsink 16 Pin Series

#5802B 5802B 5500100

R118 1K few 5°o 1522100 PSG-310 C'yita' Ground

R119 1K few 5°o 1522100 Contact 5511456

R120 3.9K »•** 5

:

o 1522390

D-15

^

s

^^v>^>>>^v^J^2v^v^Äirflv2'vl*X*i*l*j-'ivl* !\j'«. *» •
FRONT PANEL

Parts List

Symbol Description

Lenco

Part#

Front Panel 5511406

R29 20K Pot Beckman

78LBWR20K 1613200

R55 20K Pot Beckman

78LBWR20K 1613200

S1 MST-105D ALCO 4600090

S2 MST-105D ALCO 4600090

S3 MST-105D ALCO 4600090

€

D-16

E£&^^£f^£&je£^ .-••!•:• '• *'* ."V ."- -j"^%

^ j^dl^äLLsl^klJlJL £•'•-*'—>•
• >

Hü>• W o

oT

?I

«7

D-17

^&bQ£ikiiiJ^ "•*•.** •*-.»"* »• -'•» • ."* »** »"• ."• .*» »"•."
•1 •'

; '\ p

rua—,

J«T1 '—i :

ffk1

£• ^

IT »rir*1

iuii si rtr H _ii

f-iU I-** It) V

•I« - I 1

1 « " » H I—(*—•- .

S» !*V H Ü

te>

U^»

1

• > T" ; • g.

|U H ! i„ 111 R

Si

|—-o • « » n 14«

I » 1 I i

U- i «I f7u

LL1* ll I' H i •!*!

4. • *1 ^T^

::

il :* i. 1» ! .

AH»—• •—»•—•

, ' .— i ;>

11 s>*

5»*'

ITT «re

i

itl!

l! k! IS ;- :

i] :» • •

!>— I . Will

Ml •• f * *

D-18
PSG-310/PSG-311 OPTION 1

VARIABLE BLANKING WIDTH MODULE

INSTALLATION

The function of the Option 1 module is to substitute a new blanking signal in place of the one generated in

the National MM-5321 Sync Generator chip on board the PSG-310 or PSG-311. It is important to note that

the Option 1 module preserves the leading edge timing as set up by the generator chip, but it does allow the

trailing edges to be adjusted. Another very important feature is that the vertical blanking widths are changed

in half-line steps so that the width does not vary during the first active picture line.

To install the Option 1 module:

1. Remove the MM-5321 Sync Generator chip (212) from the IC sockei on the PSG-310 or PSG-311 Sync

Generator.

2. With a pair of needle nose pliars, carefully bend pin 14 of the MM-5321 chip outward and then place the

chip in the socket on the Option 1 module. When placing the sync generator chip in the Option 1 module,

make sure that the chip is properly oriented in the socket and not turned around by 180°.

3. Plug the Option 1 module into the IC socket on the PSG-310 or PSG-311 Sync Generator. Care must be

taken when installing the module to align all of the pins on the Option 1 module with the IC socket as it is

a very tight fit.

4. R1 • Horizontal Blanking Width • Adjustable from approximately 8**S to 12^S with a nominal value of

10.76jxS. Set for house requirements.

5. R12 - Vertical Blanking Width • Adjustable from approximately 15 lines to 22 lines with a nominal value

of 20 or 21 lines. Set for house requirements.

D-19

frir-isfr£>: Siü>iütttitiü^^ VJVV."J
, Vi- Si'. li.V '.

BLANKING WIDTH CONTROL ASSEMBLY

PSG-3IO OR PSG-3II SYNC GENERATOR

MM- 5321

GENERATOR CHIP

-mrrm

OPTION I

BLANKING WIDTH CONTROL ASSEMBLY

PSG-3IO OR PSG-3II E/W OPTION

VERTICAL BLANKI

CONTROL

MM - 532!

GENERATOR CHIP

HORIZONTAL BLANKING

CONTROL

D-20

. •_.-_. •j*-l>>^Ii>>^\t\Lvl'!
PSG-310/PSG-311

OPTION 1 - BLANKING MODULE 1

Adjustable Horizontal and Vertical Blanking widths are accomplished by adding the Option 1 module to the J

PSG-:itO or PSG-311 Sync Generator. The Blanking signal from the sync generator chip, U3, pin 14, is f

disabled by bending the pin outward and not allowing U3 blanking to exit on pin 14 of the IC socket.

Horizontal and Vertical Blanking are made out of the Horizontal Drive and Vertical Drive pulses and OR ed itogether to form the composite blanking signal. The technical description will be divided into three sections "

for clarity.

HORIZONTAL BLANKING GENERATION

Negative going Horizontal Drive leaves U3 on pin 15 and is buffered by 01. 01 presents the negative

going pulse to pin 11 of U1A for Horizontal Blanking generation and to pin 5 of U1B for use in Vertical

Blanking generation. U1A is a CMOS one shot and it produces a negative going Horizontal Blanking pulse

on pin 9 of U1A. R1, the Horizontal Blanking Width control, sets the width of the pulse on pin 9 of U1 A.

VERTICAL BLANKING GENERATION

Negative going Vertical Drive leaves U3 on pin 11 and is AC coupled by C5 and presented to the base of Q2

by way of R7. Q2 inverts the pulse and 03 reinverts the pulse again and presents the negative going pulse

to pin 4 of U2A and to D4. The function of Q2 and 03 is DC level shifting of the vertical drive pulse. U2A is a

CMOS one shot and it produces a negative going Vertical Blanking pulse on pin 7 of U2A. R12 the

Vertical Blanking Width control, sets the width of the pulse on pin 7 of U2A. D4 and D5 form an OR gate

and mix the vertical drive pulse on the cathode of D4 with the vertical blanking pulse on the cathode of D5

The purpose of D4 is to provide the leading edge of the Vertical Blanking pulse (because of the propagation

delay thru U2A) and 05 provides the trailing edge of Vertical Blanking. The Vertical Blanking pulse from the

anoo'es of D4 and D5 are presented to the clear input, pin 13, of U2B.

The function of U1B and U2B is to make sure that when adjusting R12. the Vertical Blanking Width control.

Vertical Blanking width moves in one half line steps. U1B is the second half of Horizontal Drive one shot.

The time constants of R3 and C2 are set so that the output on pin 6 is slightly longer than one half of a line.

This pulse is split into two signal paths and is differentiated by C4-R5 and C3-F.6. This produces pulses at

the leading and trailing edges of the differentiated pulse, and these signals are presented to pins 11 and 12

of U2B. U2B is a one shot with a long time constant (R14, C7) and is continuously turned on except when

turned off by the Vertical Blanking pulse on pin 13. The output of U2B. pin 10. is a negative going Vertical

Blanking pulse that can only change in width at half line steps.

COMPOSITE BLANKING GENERATION

The Composite Blanking pulse is generated by OR'ing the Horizontal Blanking pulse and Vertical Blanking

pulse together. D1 and D2 provide the Horizontal Blanking pulse with D1 making up the leading edge of the

pulse (because of the propagation delay thru U1A) and D2 provides the trailing edge of the Horizontal

Blanking pulse. D6 provides the Vertical Blanking pulse and the Composite Blanking pulse leaves the socket

of U3 on pin 14.

D-21

^^Xv/.v'v^lvlvlv^-^-v'^.vv'vlv^«* ^

s

- -»*-• 2d -• -*-* •-»'^^"
PSG-310/PSG-311 OPTION 1

VARIABLE BLANKING WIDTH MODULE

Parts List

Lenco Lenco

Symbol Description Part# Symbol Description Part#

C1 .001pF Mica R1 5K Pot Spectral 62-1- 1-502 1702500

CMÖ5hU1Ö2Jü3 2102100 R2 13K V4W 5% S.A.T. 1523130

C2 .00VF Mica

CM05FD102J03 210210Q R3 56K 'Aw 5% SAT. 1523560

R4 10K V4W 5% 1523100

C3 .001pF Mica

CM05FD102J03 2102100 R5 10K V*w 5% 1523100

C4 .OOljiF Mica R6 10K V«W 5% 1523100

CM05FD102J03 2102100 R7 10K 1

/4W 5% 1523100

C5 2.2MF 20V Tant R8 4.7K V4W 5% 1522470

T368A225K020AS 2105220 R9 22K 1

/4W 5% 1523220

C6 . VF 100V Film R10 3.9K V4W 5% 1522390

225P10491WD3 2104103 R11 100K V4w 5% 1524100

C7 .001pf Mica

CM05FD102J03 2102100 R12 20K Pot Spectral

62-1-1-203 1703200

C8 100pF Mica

CM05FD101J03 2101100 R13 15K V4W 5% SAT. 1523150

R14 56K V4W 5% 1523560

D1 1N914 100V 10mA Signal 3100914 R15 4.7K V4W 5% 1522470

D2

D3

1N914 100V 10mA Signal

1N914 100V 10mA Signal

3100914

3100914 U1 MC14528BCP

Dual One Shot 3304528

D4 1N914 100V 10mA Signal 3100914 U2 MC14528BCP

D5 1N914 100V 10mA Signal 3100914 Dual One Shot 3304528

D6 1N914 100V 10mA Signal 3100914

ME-2B-16-WC-B10

Q1 2N3906 PNP Signal 3203906 16 Pin Dip Socket 4106121

Q2 2N3904 NPN Signal 3203904 Pnnted Circuit Board

Q3 2N3906 PNP Signal 3203906 (No Parts) 5021434

S.A.T. = Selected At Test

D-22

b^vX-X-l^v^ '.-». .V^/J/JVV*V/~V~*\YVW«_VL*.VAY\AV.*1V1W» .'.V.V.'INV. IvV*_. _ !-'-- •'-<-' •V v. ••_.-. tU.
rLV*.VSVLVLfi\V"^t-".-l%r- v- wv. v.' -.~:

it

"SI

tB«-

I

jiff

.•kB

I

55 ?_

: Vt i< Jp

M

S!

*;

*;

.1

• a

:< *< n ©

:

:

1., "

"1

<C,

:>

•»

is

i:

1

' * « e

=1 '

ill

III

2

si

la.«

Al

si!.

: 11:!

Ulil

D-23

AWW.-tt- .N ."üfrMtÄ&AÄ&'<-:& l\V^'»V-iVjW"l,VVrVrVi
PRODUCT WARRANTY

Lenco, inc., Electronics Division warrants each new product manufactured by

it, to be free from defective material and workmanship and agrees to remedy

any such defect either by repair or replacement at no charge for a period of two

years from the date of original shipment.

This Warranty does not extend to any Lenco products which have been

subjected to misuse, neglect, accident, incorrect wiring, improper installation,

or used in violation of instructions by Lenco, nor extend to equipment which

have been altered outside Lenco's factory, without prior approval in writing, nor

to equipment where the serial number has been removed, defaced or changed,

nor to accessories used therewith, not manufactured by Lenco.

Cathode Ray Tubes (CRT) used in products manufactured by Lenco are

warranted for a period of one (1) year from the date of original purchase.

CRTs covered by the Warranty must be delivered with proper packaging to

prevent damage. This Warranty does not extend to any CRT that is received at

the Lenco factory that has broken glass.

Equipment covered by the Warranty must be delivered by the owner, with all

transportation charges prepaid, to Lenco's factory for examination. If

examination discloses, in Lenco's judgement, that it is thus defective, the

equipment will be repaired or replaced. Equipment returned prepaid under

Warranty and repaired in Lenco's plant will be returned with all transportation

charges, surface freight only, paid by Lenco Units that fail under conditions

other than those covered above, will be repaired on a cost of components, plus

labor basis. All freight charges of equipment to be repaired, not under

Warranty, will be the responsibility of the owner.

This Warranty is in lieu of any other Warranty, obligation, or liability, expressed

or implied, including any Warranty of merchantability or fitness for a particular

purpose, with respect to any and all equipment furnished by Lenco. No

representative or person is authorized to assume for Lenco any ether liability \r,

connection with the sale of its products.

Under no circumstances shall Lenco. Inc.. be liable, in contracts or in tort, for

any economic loss, including any loss of profits, or for any special or

consequential damage or loss arising from any cause.

All inquiries relating to either parts replacement or Warranty service shall be

directed to: Lenco. Inc.. Electronics Division. 300 N. Maryland St., Jackson.

Missouri, 63755. attention: Customer Service — Phone 314-243-3147.

D-24

S£M£fLi£fi££££g2s - •'- •

-

-

v

-

v

»

v

- • '• ^^^^<^^^<''^^'^^^'^S^^:^:^^:<J^.^:K:^:^^:^JJ^:» •.- v\r v .-, v v'y .u
!•

#

APPENDIX E

WESTERN TELEMATICS, INC. CAS-41 MANUAL

E-l

»>>>_

,..*.,* *u'. *'.

I'^'I'I * ii t ^LÜ^^ili^^A^^^^j^sÜ^
QßJlfeD

D

OPERATING AND INSTALLATION INSTRUCTIONS

MODEL CAS-41

RS232 CODE ACTIVATED TERMINAL SWITCH

TMTRnnncTiON

The model CAS-41 CODE ACTIVATED RS232 asychronous Terminal Switching

Device is a self-powered unit which, when connected to a standard

modem or CPU, can switch between any combination of RS232 terminal

ports. Terminal status and modem operation can be tested by using

the ACK/NAK answerback and Data Loopback features.

OPERATION

The CAS-41 is programmed by a 2 ASCII character code sequence

received from the Modem port. The first character is a user

selectable prefix code which is programmed by setting switch S3

on the circuit board for the desired ASCII code. This character

when received resets the unit and closes all terminal ports. The

next character received configures the CAS-41 for the desired

operation (Refer to Table 3) and allows data to flow in both

directions until the next prefix code is detected.

Before connecting, Refer to Table 1 and check the interface

requirements of the CAS-41, Terminals and Modem to assure proper

dataflow and avoid conflicts of inputs or outputs being on the

same pin.

Terminal 1

Terminal 1

CAS-41

Modem

er

CPU

U

Termin»! 1Tifmln»! J

•

r

E-2

...!» . «. - V -*» :- ^-M. .\».;w _^-v .:.,.?.»>: •--''•»-^ *- -* *-" «-•»-* «-*
TABLE 1 INTERFACE REQUIREMENTS

TERMINAL

PIN SIGNAL

1

2

3

4

5

6

7

8

20

Notes

Ground

TX Data

RX Data

Req. to Send

Clear to Send

Data Set Rdy.

Ground

Carrier Detect

Terminal Ready

PORTS

1/0

In

Out

In

Out

Out

Out

In

NOTE

MODEM PORTS

PIN SIGNAL 1/0 NOTE

1 Ground

2 TX Data Out

3 RX Data In

4 Req. to Send Out

5 Clear to Send In

7 Ground

B Carrier Detect In

20 Terminal Ready Out 1

1. Always High (+) supplied by CAS-41

2. Select pin 4 or 20 for ACK/NAK feature on Jl thru J4 on

PC Board

3. Force High (+) by switching S2-7 ON

4. Force High (+) by switching S2-8 ON

SWITCH SET-UP

To access the configuration switches, remove the four black

screws attaching the plastic cover to the chassis and remove

the cover.

Select the baud rate and parity settings as shown in Table 2

and 3. Select the PREFIX code, ACK/NAK, Loopback and Interface options as shown in Table 3.

TASLE 3 BAUD RATE SELECT - SWITCH SI

Select only one ON, all others OFF

JJLi&n Baud Rate

l 19200

2 9600

3 4800

4 2400

5 1200

6 600

7 300

8 75/110

For 110 baud operation

also switch S2-1 OFF

E-3

»>!.>j>i>!i»\: -v-i^-^i^y^^ ^fay^t A,./A v^^.-^„.o:^::;:.-:;.-^wv;y;v;.;:-:•'.•;•£££•.
TABLE 2

Position On

SWITCH 2 SET-UP

Qfi

I 75-19.2K BAUD 110 BAUD

2 1 STOP BIT 2 STOP BITS

3 PARITY |

4 PARITY I 1

5 INHIBIT ACK/NAK NORMAL 3 4 PARITY

6 INHIBIT LOOPBACK NORMAL ON ON ODD

7 FORCE CTS NORMAL ON OFF EVEN

8 FORCE DCD NORMAL OFF ON

OFF OFF

SPACE

MARK

PREFIX CODE SELECTION

Internal Switch S3 selects the desired Prefix code. Switch 1 thru

7 corresponds to bit 1 thru 7 of an ASCII code. All switches

should be ON except for the bits selected. For example, to select

CTRL A (SOH) as the prefix code switch 1 should be OFF and all

others ON. For CTRL Y (EM), switch 1, 4 and 5 should be OFF. A

non-printing character that does not affect the terminals operation

(Keyboard Lock etc.) should be selected since the prefix code will

be transmitted thru any port previously selected.

CONFIGURATION CODE SELECTION

The configuration code follows the prefix code and activates the

desired terminal ports and selects the ACK/NAK and Loopback

features. The configuration code is not transmitted to the

terminal since all terminal ports are closed after receipt of

the prefix code and will not be opened again until after the

configuration code.

Bits 1, 2, 3 and 4 of the desired ASCII code corresponds to

Terminal ports 1, 2, 3 and 4. Bit 5 selects the ACK/NAK

feature and bit 6 selects the Loopback feature.

Table 4 lists all 128 ASCII codes with the corresponding action

of the CAS-41. If the ACK/NAK or Loopback features are disabled

by switch S2-5 and 6 these functions will not be selected.

Disabling these features increases the port select characters

available. For example, eight different codes could be used

to select port 1.

Do not select a configuration code that is also used as the

prefix code since the unit resets on each prefix code.

E-4

VlvlvSSrS^£-Ä:V>^ ."• „•- kv
TABLE 4

Configuration Code Cha rt

Code Terminal ACK/NAK Loopback Coda Terminal ACK/NAK Loopoack Code terminal ACK/NAK Loopback

NULL ALL OFF NO NO + 1 2 4 NO YES V 2 3 YES NO

SOH 1 NO NO 3 4 NO YES W 1 2 3 YES NO

STX 2 NO NO - 1 3 4 NO YES X 4 YES NO

ETX 1 2 NO NO 2 3 4 NO YES Y 1 4 YES NO

EOT 3 NO NO / 12 3 4 NO YES z 2 4 YES NO

ENO 1 3 NO NO 0 ALL OFF YES YES [ 1 2 4 YES NO

ACK 2 3 NO NO 1 1 YES YES \ 3 4 YES NO

BELL 1 2 3 NO NO ? 2 YES YES ] 1 3 4 YES NO

BS 4 NO NO 3 1 2 YES YES A 2 3 4 YES NO

HT 1 4 NO NO 4 3 YES YES _ 12 3 4 YES NO !

LF 2 4 NO NO 5 1 3 YES YES ' ALL OFF NO YES

VT 1 2 4 NO NO 6 2 3 YES YES a 1 NO YES

FF 3 4 NO NO 7 1 2 3 YES YES b 2 NO YES

CR 1 3 4 NO NO e 4 YES YES c 1 2 NC YES

SO 2 3 4 NO NO 9 1 4 YES YES d 3 NO YES

SI 12 3 4 NO NO 2 4 YES YES e 1 3 NO YES

DLE ALL OFF YES NO 1 2 4 YES YES 1 2 3 NO YES

DC1 1 YES NO < 3 4 YES YES g 1 2 3 NO YES

DC2 2 YES NO = 1 3 4 YES YES h 4 NO YES

DC3 1 2 YES NO > 2 3 4 YES YES i 1 4 NO YES

DC4 3 YES NO DEL 12 3 4 YES YES i 2 4 NO YES

NAK 1 3 YES NO <G ALL OFF NO NO k 1 2 4 NO YES

SYN 2 3 YES NO A 1 NO NO 1 3 4 NO YES

ETB 1 2 3 YES NO B 2 NO NO m 1 3 4 NO YES

CAN 4 YES NO C 1 2 NO NO n 2 3 4 NO YES

EM 1 A YES NO D 3 NO NO 0 12 3 4 NO YES

SUB 2 4 VES NO E 1 3 NO NO P ALL OFF YES YES

ESC 1 2 4 YES NO F 2 3 NO NO q 1 YES YES

FS 3 4 YES NO G 1 2 3 NO NO r 2 YES YES

GS 1 3 4 YES NO H 4 NO NO s 1 2 YES YES

RS 2 3 4 YES NO I 1 4 NO NO t 3 YES YES

US 12 3 4 YES NO J 2 4 NO NO u 1 3 YES YES

SP ALL OFF NO YES K 1 2 4 NO NO V 2 3 YES YES

j 1 NO YES L 3 4 NO NO w 1 2 3 YES YES

2 NO YES M 1 3 4 NO NO X YES YES

# 1 2 NO YES N 2 3 4 NO NO y 1 4 YES YES

s 3 NO YES 0 12 3 4 NO NO 2 2 4 YES YES

% 1 3 NO YES P ALL OFF YES NO \ 1 2 4 YES YES

& 2 3 NO YES 0 1 YES NO II 3 4 YES YES

1 2 3 NO YES R 2 YES NO i 1 3 4 YES NO

( 4 NO YES S 1 2 YES NO -\. 2 3 4 YES YES

I 1 4 NO YES T 3 YES NO 7 12 3 4 YES YES

2 4 NO YES U 1 3 YES NO

ACK/NAK ANSWERBACK

The ACK/NAK feature provides a means for the computer to determine

if a data terminal is connected to the selected port or a device

is ready to send or receive data.

Bit 5 of the configuration code selects the ACK/NAK feature unless

switch S2-5 is ON. Immediately after the configuration code is

received the CAS-41 monitors pin 20 (Terminal Ready) of the

selected terminal port and sends to the computer an ACK code if

the signal is high (+) and an NAK code if the signal is low (-).

Jumpers (Jl thru J4) are provided to monitor pin 4 (Request to

Send) instead of pin 20.

LOOPBACK

The Loopback feature provides a means for the computer to perform

a data test by receiving and comparing data it sent via the transmission line. Bit 6 of the configuration code selects the Loopback

feature unless S2-6 is ON. When selected the CAS-41 will transmit

data received from the modem port back out the modem port. All

terminal ports and the ACK/NAK features should be switched OFF by

using a space as the configuration code.

E-5

LS1'.".V'M " •_>*?•»•»'> .*».*• »'• •* -. Jy^r^r^'^ \**>V0.%>1 I*^:-2t^i^la^
ASCII CODE CHART

To program the Prefix Code, set Switch 3 for

the desired ASCII code. Switch position 1

thru 7 corresponds to ASCII Bits 1 thru 7.

The switch should be ON for a 0 and OFF for

a 1.

<*

R:^"

°0

0

°0

1 \

0

l

l 0 \ 0 \

^S

b4

1

b3

1 1

bi

1

N^OLUMN

0 1 2 3 4 5 6 7

0 0 0 0 0 NUL OLE SP 0 • P

»

P

0 0 0 1 1 SOH DC1 j 1 A Q Q q

0 0 1 0 2 STX DC2 ii 2 B R b r

0 0 1 1 3 ETX DC3 # 3 C S c s

0 1 0 0 4 EOT DC4 s 4 D T d t

0 1 0 1 5 ENQ NAK % 5 E U • u

0 \ 1 0 6 ACK SYN & F V f V

0 1 1 1 7 BEL ETB '

7 G w g w

1 0 0 0 8 BS CAN ( 8 H X h X

1 0 0 1 9 HT EM ) 9 1 Y i y

1 0 1 0 10 LF SUB * : J Z jz

1 0 1 1 11 VT ESC ••

i K I It {

1 1 0 0 12 FF FS 1

< L \ 1

1 1

i

1 1 0 1 13 CR GS - m M ) m }

1 1 1 0 14 SO RS . > N

- n

V |

1 1 1 1 15 Si US / ? 0 _^_ 0 DEL

E-6

•^^llj^L^L^fcl^L^^^
STATUS INDICATORS

LED indicators on the front panel of the unit display the status of

the terminal ports and communication lines.

Terminal 1

RX Data

TX Data

DCD

- 4

CTS

Indicates terminal port selected.

Indicates data activity on the Received

Data Line of the Modem Port, pin 3.

Indicates data activity on the Transmit

Data Line of the Modem Port, pin 2.

Indicates status of the Data Carrier

Detect signal (pin 8) of the Modem Port.

DCD may be forced on by S2-8 in the ON

position.

Indicates status of the Clear to Send

signal (pin 5) of the Modem Port. CTS

may be forced ON by S2-7 in the ON position.

WARRANTY

One year repair or replacement at no charge unless unit is damaged

due to mishandling or improper use. Call WTI for Return Authorization.

CUSTOMER SERVICE

Please contact our Customer Service Department for more detailed

information or technical assistance.

(714) 979-0363 or

(800) 854-7225 Outside California Only

Western Telematic, Inc.

2435 S. Anne Street

Santa Ana, CA 92704

E-7

.*. k*. ».* Uk£i^ U^k-Lü^i-J »- •*- *- w-.-' --'. •A *- -«- '- *- *- »-•«-