CA1223356A - Vehicle navigational system and method - Google Patents

Vehicle navigational system and method

Info

Publication number
CA1223356A
CA1223356A CA000483203A CA483203A CA1223356A CA 1223356 A CA1223356 A CA 1223356A CA 000483203 A CA000483203 A CA 000483203A CA 483203 A CA483203 A CA 483203A CA 1223356 A CA1223356 A CA 1223356A
Authority
CA
Canada
Prior art keywords
mov
push
vehicle
probable
current
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
CA000483203A
Other languages
French (fr)
Inventor
Stanley K. Honey
Walter B. Zavoli
Kenneth A. Milnes
Alan C. Phillips
Marvin S. White, Jr.
George E. Loughmiller, Jr.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TomTom North America Inc
Original Assignee
Etak Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=24476093&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CA1223356(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Etak Inc filed Critical Etak Inc
Application granted granted Critical
Publication of CA1223356A publication Critical patent/CA1223356A/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B29/00Maps; Plans; Charts; Diagrams, e.g. route diagram
    • G09B29/10Map spot or coordinate position indicators; Map reading aids
    • G09B29/106Map spot or coordinate position indicators; Map reading aids using electronic means
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/10Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration
    • G01C21/12Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning
    • G01C21/14Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by recording the course traversed by the object
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/28Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network with correlation of data from several navigational instruments
    • G01C21/30Map- or contour-matching

Abstract

Abstract A vehicle navigational system and method for tracking a vehicle, including a programmed computer, sensors for sensing the distance traveled and heading of the vehicle, and a stored map data base identifying a map of an area over which the vehicle is moving, in which the computer calculates and advances dead reckoned positions of the vehicle in response to distance and heading data, provides data identifying a contour of equal probability containing the dead reckoned positions and having a probability of containing the actual location of the vehicle, derives multiparameters from the map data base, and updates a given dead reckoned position and the contour using a highly developed vehicle navigational algorithm if a more probable dead reckoned position exists based upon the given dead reckoned position, the contour and the derived multi-parameters.

Description

~3~

VF~lICLE NAVIGAl'IONAI. SYSTEM AND MF.TIIOD

Field of the Invention . . _ The present invent:ion relates generall~t to an apparatus and m~thod for providing information to im~rove the accuracy of trac~ing vehicles movable primarily over streets, as well as to an automatic vehicle navig~tional s~stem and method for tracking the vehicles ~s they move over the stre~ts.

~ackground of the Invention A variet~ of automatic vehicle n~vigational systems has been developed and used to provide information ahout the ac-tual location of a vehicle as it moves over streets. A common purpose of the vehicle navigational systems is to maintain automatically kno~Jledge of the actual location of the vehicle at all times as it traverses the streets (i.e., track the vehicle). A given navigational system may be utilized in the vehicle to provide the vehicle operator ~ith knowledge of the location of~
the vehicle and/or at a central monitoring station that ma~ monitor the location of one or more vehicles.
~ 'or example, one general approach to such vehicle navigational systems is known as "dead reckoning", in which the vehicle is tracked by advancing a "dead reckoned position" from measured distances and coursefi or headings. ~ system bas;ed upon dead reckoning principles~may, for example, ETAK~4178--SD~8/020 ;:

~ r~

~3~

detect the distance traveled and heading of the vehicle using distance and heading sensors on the vehicle. ~hese distance and heading data are then processed by, for example, a computer usin~ known equations to calculate periodically a dead reckoned position DRP of the vehicle. hs the vehicle moves along a street, an old dead reckoned position DRPo is advanced to a new or current dead reckoned position DRP in response to the distance and heading data being provided by the sensors.
One problem with prior s~vstems usin~ dea~
recloning is the accumulation of error that occurs as the dead reckoned positions are advanced. This error occurs, in part, as a result of inherent limitations on the achievable accuracy of the distance and heading sensors, which thus provi~e data that do not precisely identify the ~istance traveled nor the heading of the vehicle. Unless compensation for this error is made, the dead reckoned positions will hecome increasingly imprecise or inaccurate.
Prior dead reckoning vehicle navigatiGnal systems have been developed and have attempted to solve this problem of the accumulation of error by providing additional information to the dead reckoned positions. Generally, the additional information may be a map corresponding to the streets of a given area over which the vehicle may be moving. The map is stored in memory as a map data base and is accessed by the computer to process this stored information in relation to the dead reckoned positions.
U.S, Patent 3,789,198j issued January 29, 1974, discloses a vehicle location monitoring system FTAK-417~--SDB8/020 .

~ r~

3~

using dead reckoning for trac~inq motor vehicles, including a technique for compensatincJ for accumul~ted errors in the de~d reckoned positions.
In this system, a computer accesses a stored map data hase, which is a table or array havin~ a
2-dimensional orthogonal gri.d of entries of coordinates Xst Yst that may or may not corres~ond to driveable surfaces, such as streets St. Storage locations in the array that corrcspond to ~treets are indicated by a logic 1, while all other storage locations are filled with a logic 0 In accordarlce with a vehicle navigational algorithm of the patent, a dead reckoned position DRP of the vehicle is periodically calculated, which position DRP is identified and temporarily stored in the computer as coordinates XOld Yold. Then, to compensate for the accumulated error, the array is interrogated at a location corresponding to the old Yold. If a logic 1 is found, the vehicle is defined as corresponding to a knowl-driveable surface and no correction is made. If a logic 0 is found, representing no dxi.veable surface, adjacent entries in the array are interrogated, as specifically described in the patent. If a lo~ic 1 is then found at one of these adjacent entries, XOld Yold are corrected or updated:to coordinates Xst Y5t corres~onding to the logic l that was ound, and these latter coordinates then become XO1~ Yold to advance the dead rec~oned position. If no logic l is found after such interrogations, then no change i5 made to the g old Yold and the corresponding dead rec~oned position DRP is advanced.

~TAK-4178--SDB8/020 s~

Another example of an automatic vehicle navigational system that uses a map data base to correct for the accumulation of errors in tracking a vehicle is disclosed in a publication entitled S "Landfall: A High Resolution Vehicle-~ocation System", by D. King, GEC Journal of Science and Technology, Vol. 45, No. 1, 197~, pages 34-44. As described in the publication, the term Land~all is an acronym for I.inks And Nodes Database For Automatic Landvehicle Location, in which a stored map data base comprises roads (links) that are interconnected hy junctions ~nodes) having inlet/outlet ports. Thus, any mapped area is regarded merely as a network of nodes, each lS containing a nu~,ber of inle~/outlet ports, and interconnected links.
The publication descril~es the basic vehicle navigational algorithm used under the I.andfall principle by assuming that a vehicle is on a road or link moving towards ~ node which it will enter ~y an input port. As the venicle moves forward, the motion is detected b~ a distance encoder and the "distance-to-go", i.e., the distar,ce to go to the next node, is decremented until it becomes zero, corresponding to the entry point of the input port of such a node. Then, as the vehicle exits one of several output ports of the node, a change of heading of the vehicle at the exit point with respect to the entry point is measured. Then, the map data base ~or that node is scanned for an exit port matching the measured change in heading and, once identified, tlliS exit port leads to the entry point of ano~her node and the distance-to-go to that other node. Landfall attempts to compensate ETAK-4178--SD~8~020 a~ ~
3~

for the accumulation of error resulting from the achievable accuracy of ~he distance encoder bv cancellin~ the error when the vehic]e encounters a node and turns onto an ~xit port. ~lore details of this vehicle navigational algorithm are disclosed in the publication.
~ common problem with the above-mentioned systems is ~he use of limited information to compensate for the accumulation of error, so as to accurately track a vehicle. For example, in the vehicle navigational system of the patent, this limited information is a coarse and simplistic repxesentation of streets by logic 1 and logic 0 data of the map data base. In the Landfall system, a relatively simplistic assumption is made that vehicles are always on a street of the map.
Furthermore, in addition to using limited information to correct for the accumula~ion of error, the vehicle navigational algorithms of the patent and Landfall do not develop an estimate of correct location accuracy and use this information in dcpendence ~ith the map data base to determine if the vehicle is on a street or not. Svstems that do not maintain this estimate are more likely to update the position incorrectly or ~o fail to update the position when it should bc.

Summary of the Invention It is an object of the~present invention to provide a novel apparatus an~ method ~or improving the accuracy of trac~.ing a vehicle as it moves over str~ets.
I~ is another ob~ect of the present invention to provide a novel apparatus and method for compensating for the accumulation of error in the vehicle navigational system usahle by a vehicle as it moves over streets.
It is still another object of the present invention to accurately keep track of the vehicle should the vehicle move on and off the streets.
The above ~nd other objects are obtained in one aspect of the present invention which is an apparatus for providing information to improve the accuracy of tracking a vehicle movable over streets in a given area, including first means for providing data identifying respective positions of the vehicle, each position having an accuracy relative to an actual location of the vehicle and one of the positions being a current position, second means for providing a map data base of the streets, and means for deriving any of a plurality of parameters in dependence on Otle or more respective positions of the vehicle and the streets of the map data base to determine if a more pro~able current position exists.
In a related aspect, the invention is a method for providing information to improve the accuracy of tracking a vehicle movable over streets in a given area, including the steps of providing data identifying respective positions of the vehicle, each position having an accurac~ relative~
to an actual location of the vehicle and one of the positions beinq a current position, providing a map data base of the str~ets,~ and deriving any of a ;
plurality of parameters in dependence on one or more respective positions of the vehicle and the streets of the map data base to determine if a more pxobable current position exists.

ETAK-417fl--SDB8/02~
: :

Thus, in these apparatus and method aspects of the present invention, a significant amount of information in the form of the plurality of parameters may be derived from the positions of the vehicle an~ the map data base. Furthermore, and as will be described more fully helow, this information ma~v be used not necessarily to correct or update the current position of the vehicle, but at least to ~etermine if a more probable current position exists.
In another aspect, the present invention is an apparatus for automaticall~ tracking a vehicle movable about streets of an overall given area, including first means for providing first data identifying respective positions of the vehicle as the vehicle moves about the streets, each position having a certain accuracy and one of the positions being a cuxrent position, second means for providing second data being an estimate of the accuracy of the respective positions of the vehicle, the estimate .changing as the vehicle moves about the streets to reflect the accuracy of the respecti.ve positions, third means for providin~ a map data ~ase of the streets of the given area, and means for determining if a more probahle position than the c~rrent position exists in rPsponse to the firct data, the second data and the map data base.
In a related aspect, the present invention is a method for automatically tracking a vehicle movable about streets of an overall given area including providing first data identifying respective positions of the vehicle as the vehicle : moves about the streets, each position haviny a cer~ain accuracy and one of the positions beinq a 3~;

current position, providing second data being an estimate of the accuracy of the respective positions of the vehicle, the estimate changing as the vehicle moves about the streets to reflect the accuracy of the respective poSitiOIls~ providing a map data base of the streets of the given area, and determining if a more probable position than the current position exists in response to the first data, the second data an~ the map data base.
With these apparatus and method aspects of the present invention, the vehicle is tracked by determining if a more probable position than the current position exists. If a more probable current position is determined, then the current position is lS corrected ~updated), but if a more probable position cannot be found, the current position is not updated. This determination is made in response to the data about the positions of the vehicle, the data which are an estimate of the accuracy of the respective positions of the vehicle and the map data base.

Brief Descri~tion of the Drawings FigO lA-Fig. lC are diagrams used to explain the principles of dead reckoning.
Fig. 2 is a ~lock diagram of an a~tomatic vehicle naviaational system of the present invention.
Fig. 3 illustrates pictorially a map of a ~iven area over which a vehicle may move.
Figs.4A-~B are illustrations used to explain certain information of the map data hase.

ETAK-4178--SD~8/020 ~ f_ s~

Figs . 5A-5C-2 are pictorial illustrations used to explain various embodiments of an estimate of the accuracy of the positions of a vehicle.
Figs. 6A-6E are illustrations used to explain certain derived parameters of the present invention.
Figs. 7A-7C show th~ structure of an overall computer program of the present invention.
Fig. ~ is a flo~l chart of the overall vehicle navigational algorithm of the present invention.
Figs. 9-36 are more detailed flow diagrams and other illustrations used to explain the vehicle navigational algorithm of the present invention.

Detalled De ~ tion of the Invention I. Introduction The present invention will be discussed specifically in relation to automatic vehicle location systems usi~g dead reckoning, which is one approach to tracking a vehicle mova~le over streets.
However, the present invention may have application to other approaches to t.he prob]em of automatic vehicle location for tracking vehicles moving over streets, including, for example, "proximity detection" systems which use signposts that typically are, ~or example, low power radio transmitters located on streets to sense and transmit information identifving the location of a passing vehicle, as well as to Landfall-type systems previously described. The present invention also may have application in conjunction with yet other systems of providing inormation of the location of a vehicle movable over streets, such as land~~ased radio and/or satellite location systems. Still furthermore, the vehicle that will he discussed may be a motor vehicle, such as a car, a recreational vehicle (RV), a motGrcycle, a bus or other such type of vehicle primarily movable over streets.
E`igs. lA-lC are used to explain the basic principles of dead reckoning for tracking a moving vehicle V. Accordingly, Fig. lA shows an XY
coordinate system in which a vehicle V is moving over an actual street St from an arbitrary first or ol~ location Lo at coordinates XOYO to a new or current location Lc at coordinates XcY~.
Assume that an old dead reckoned position DRPo has been calculated, as described below, which coincides with the actual location Lo of the vehicle V, thereby also having coordinates XOYo Assume also that a new or current dead reckoned position DRPC is to be calculated when the vehicle V is at its new or current location 1. . The old dead reckoned posi~ion DRPo is advanced to the current dead reckoned position DRPC by a calculation using well-known equations as follows:

Xc = Xo + An coS (~) (1) Yc = Yo + ~D sin (H) 12) where XcYc are the coordinates of ~R~c, aD is :a measured distance traveled by the vehicle V between Lo and Lc, and H is a measured headin~ of the vehicle V.
The illustration and~discussion of Fig. lA
assumes that there has been no error in calculating : the current dead reckoned position DRPC. rrhat is, the current dead reckoned position DRPC is shown to :
ETAK~417~--SDB8/020 :

coincide exactly with the actual location Lc of the vehicle V, whereby Lc and DRP have the identical coordinates X Y
c c Fig. lB illustrates the more general situation in which errors are introduced into the calculation of the current dead reckoned position DRPC. As a result, the current dead reckoned position DRPC will differ from the actual location Lc of the vehicle V by an error E. This error E can arise due to a number of reasons. For e~ample, the measurements of the distance ~D and the heading ~T
obtained with distance and heading sensors ~not shown in E`igs~ lA-lC1 on the vehicle V may be inaccurate. Also, equations (l) and (2) are valid only if the vehicle V travels over distance ~D at a constant heading ~. Whenever the heading ~ is not constant, error is introduced into the calculation~
Moreover, the error E, unless compensated, will on average accumulate as the vehicle V
continues to move over the street S~ since XcYc becomes XOYO for each new calculation of the dead reckoned position DRPC in accordance with equations (l) and (2). This is indicated in Fig. lB by showing the vehicle V at a su~sequent new location I.'c, together with a suhsequent current dead reckoned position DRP'c and an accumulated error E')E. Thus, any given ~RPC has a certain inaccuracy associated with it corresponding to the error E.
Fig. lC is used to explain generally the manner in which the error E associated with a given current dead reckoned position DRPC is compensated.
Fig. lC shows the vehicle V at location Lc, together with a current dead reckoned position DRPC and an error E, as similarly illustrated in ~ig. lB. In .. :
ETAK-4178- SD~8/020 3~

accordance with the present invention, a determination will he made if a more probable position than the current dead reckoned position DRPC exists. If it is determined that a more probable position does exist, then the current dead reckoned position D~PC is changed or updated to a certain XY coordinate corresponding to a point on the street St, identified as an updated current dead reckoned position DRPCu. The DRPCu may or may not ln coincide with the actual location Lc of the vehicle (shown in Fig. lC as not coinciding), but has been determined to be the most probable position at the time of updating. Al~ernatively, at this time it may be determined that no more pro~able position than the current dead reckoned position D~PC can be found, resulting in no changing or updating of the current dead reckoned position DRPC. If the updating does occur, then the XY coordinates of the DRPCu become XOYO in equations tl) and (2) for the next advance, whereas if no updating occurs at this time, then the XY coordinates of the DRPC become X Y
o o II. Exemplary System Hardware Fig~ 2 illustrates one embodiment of an automatic vehicle navigational system 10 of the present invention. A computer 1~ accesses a data storage medium 14, such as a tape cassette or floppy or hard disk, which stores data and software for processing the data in accordance with a ~ehicle navi~ational algorithm, as will be described below.
For example, the computer 12 can be an IBM Personal Computer lPC~ currently and widely available in the marketplace, that executes pro~ram instructions disclosed below.
* (Trade Mark) , , r~

System 10 also includes means 16 for sensing distances ~D traveled by the vehicle V. For example, the means ~6 can constitute one or more wheel sensoxs 18 which sense the rotation of the non-driven wheels (not shown) respectivelv of the vehicle V and generate analog distance data over lines 20. An analog circuit 22 receives and conditions the analog distance dat.a on lines 20 in a conventional manner, and then outputs thc processed data over a line 24.
System 10 also includes means 26 for sensing the heading IE of the vehicle V. For example, m~ans 26 can constitute a conventional flux gate compass 28 which generates heading data over a line 30 for cletermilling the heading H. The previously described wheel sensors 18 also can be dif.ferential wheel sensors 1~ for generating heading data as a part of overall means 26. An advantage of possi.bly using both the flux gate compass 28 and the di~ferential wheel sensors 18 to provide heading data to the computer 12 will be discussed below.
The computer 12 has installed in it an interface card 32 which receives the analog distance data from means lfi over line 24 and the analog heading data from means 26. Circuitry 34 on the card 32 converts and conditions these analog data to digital data identifying, respectively, the distance ~D traveled by the vehicle V and heading H of the vehicle V shown in Figs. lA-lC. For example, the inter~ace card 32 may be the commercially availa~le Tecmar Lab Tender Part No. 20028, manufactured by Tecmar, Solon, (Cleveland), Ohio.
The system 10 also includes a display means 36, such as a CRT display or XYZ monltor 38, ETAK-4178--SDB8/020 ~ ~

3~

for displaying a map M of a set of streets (St} and a symbol Sv of the vehicle V, which are shown more fully in Fig. 3. Another computer interface card 40 is installed in the computer 12 and is coupled to s and controls the display means 36 over lines 42, so as to display the map M, the symbol Sv and relative movement of ~he svmbol S over the map M as the vehicle V mov~s over the set of streets {St}. The card 40 responds to data processed and provided by the card 32 and the overall compu~er 12 in accordance with the vehicle navigational algorithm of the present invention to display such relative movement. As another example, the display means 36 and the circuitry of card 40 may be one unit sold commercially by the Hewlett-Packard Company, Palo Alto, California as model 1345A (instrumentation digital display).
The system 10 also includes an operator control console means 44 havin~ buttons 46 by which the vehicle operator may enter command data to the system 10. The console means 44 communicates over a line 48 with the means 32 to input the data to the computer 12. For example, the command data may be the initial XY coordinate data for the initial DRP
when the system 10 is first used. Thereafter, as will be desciibed, this command data need not be entered since the system 10 accurately tracks the vehicle V. ~
The system 10 may be installed in a carO
For example, the monitor 38 may be positione~ in the interior of the car near ~he dashboard for viewing by the driver or front passenger. The driver will see on the monitor 38~the map M and the symbol Sv of the vehicle V. Pursuant to the vehicle navigational ETAK-4178--SDB8/0?0 ., ~f ~

algorithm described below, the computer 12 processes a substantial amount of data to compensate for the accumulation of error E in the de~d reckoned positions DRP, and then controls the relative movement of the sym~ol S~ and the map M. Therefore, the driver need only look at the monitor 38 to see where the vehicle V is in relation`to the set of streets {St) of the map M.
~loreover, a number of different maps M may be stored on the storage medium 14 as a ma~ data base for use when driving throughout a given geographical area, such as the ~an Francisco Bay Area. As the vehicle V is driven from one given area to another, the appropriate map M may be called by the driver by depressing one of the buttons 46, or be automatically called by the computer 12, and displayed on the monitor 38. System 10 will perform its navigational functions in relation to the map data base, using a part of the map data base defined as the navigation neighhorhood of the vehicle. The map M which currently is being displayed on the monitor 38 may or may not correspond precisely to the navi~ation neighborhood.

III. Information Used to Improve the Accuracy of Tracking the Vehicle V tThe Map M; The DRP;
The Estimate of the Accuracy of the DRP) . . _ . . . _ ~ . . .
A. The Map M
1. The Map M Generally Fig. 3 shows the map ~l of a given area (part of the map data basei or navigation neighborhood having a set of ~treets {St} over which the vehicle V may move. For example, the street identified as "Lawrence Expressway" may correspond ,: ~
~TAK-4178--SDB8/020 t3356~

to a street Stl, the street identified as "Tasman Drive" may correspond to a street St2 and the street identified as "Stanton Avenue" may correspond to a street St3. Also shown is the vehicle symbol Sv which is displayed on the monitor 38. Thus, the vehicle V may move along Lawrence Expressway, then make a left turn onto Tasman Dri~e and then bear right onto Stanton ~venue, and this track will be seen by the vehicle operator via the relative movement of the symbol Sv and map M.

2. The Map Data Base (a) Introduction -The map M is stored on the storage medium 14 as part of the map data base which is accessed by the computer 12. llhis map data base includes, as will be further described, data identifying ~1~ a set of line segments {S} defining the set of streets {St}, ~2) street width5 W, (3) ver~ical slopes of the line segments S, (4) magnetic variation of the geographical area identified by the map M, (5) map accuracy estimates, and (6) street names and stre~t addresses.

(b) Set o Line Segments {S}
~ig. 4A is used to explain the data stored on medium 14 that identify a set of line segments {S} defining the set of streets ~St}. Each such : `
street St is stored on the medium 14 as an algebraic representation of the street St. Generally, each street St is stored as one~cr more arc segments, or, more particularly, as one or more straight line segments S. As shown~ in Fig. 4A, each line segment S has two end points EPl and EP2 which are defined :
`^` ETA~-4178--SDB8/020 35~

by coordinates X1Yl and X2Y2, respectively, and it is these XY coordinate data that are stored on the medium 14. The course (heading~ of the se~ment S
can be determined from the end points.

(c~ Street Width W
The streets St of any given map M may he of different widths W, such as a six-lane street like Lawrence Expressway, a four-lane street like Stanton Avenue and a two-lane street like Tasman Drive, all illustrated in the map M of Fig. 3. Data identifying the respective widths W of each street St are stored on the medium ]4 as part of the map data base. The width W of the street St is used as part of an update calculation described more fully below.

(d) Vertical Slope_of a Line Seg ent S
Fig. 4B is used to explain correction data relating to the vertical slope of a given street St and which are part of the map data base stored on medium 14. Fig. 4B-l shows a profi]e of the actual height of a street St which extends over a hill.
The height profile of the actual street St is divided into line parts P1-P5 for ease of explanation, with each part Pl-P5 having a true length 11-15. Fig. 4B-2 shows the same parts P1-P5 as they are depicted on a flat map M as line g SI S5- Parts P1, P3 and P5 shown in Yig 4B-1 are flat and, therefore, their true lengths ll, 13 and 15 are accurately represented on the map M, as shown in Fig. 4B~2. However, the true lengths 12 and 14 of sloping parts P2 and P4~shown in Fig. 4B~1 are foreshortened in Fig. 4B-2 from 12 and l~ to 1'2 35~;

and 1'4. This constitutes map foreshortening errors which are proportional to the cos and the cos B, respectively, these angles and ~ being shown in Fig. 4B-l Such foreshortening errors always occur whenever a 3-dimensional surface is depicted on a 2-dimensional or flat map M. Consequently, the XY
coordinates of the respective end ~oints ~P of line segments S2 and S4 shown in Fig. 4B-2 do not reflect the actual lengths 12 and 14 of the actual street St. Therefore, the map data base can store vertical slope correction data'for these segments S2 and S4 to compensate for the foreshortening errors. The correction data may be stoxed in the form of a code defining several levels of slope. For example, in some places these slope data may be coded at each segment S. In other areas these slope data are not encoded in the segment S but may be coded to reflect overall map accuracy, as described below.
Furthermore, Fig. 4B-3 is a plot of the heading R measured by the means 26 for each segment S1-S5 as the vehicle V traverses the street St having the height profile shown in Fig. 4B-l. Any segment S having a vertical slope, such as corresponding parts P2 and P~ of the actual street St, may introduce through "magnetic dip angles", errors in the compass heading readout of the flux gate compa.~s 28 of the means 26 as the vehicle V
moves over parts P2 and P4. Where the map data base contains correction data for segment S vertical slope the compass heading errors also may be corrected.
Thus, when foreshortening errors are coded on each segment S, a~d if the position ~DRP) of the vehicle V has been recently updated to a segment S, ~: ETAK-4178--SDB8/020 35~

as further described below, and has not since turned or otherwise been detected as leaving that segment S, then the dead reckoning equations (l) and (2) can be modified to equations (l') and (2'):

c XO ~ CF ~ ~D cos (H') (1') c Yo + CF ~D sin (H') (2') Here the foreshortening coefficients Cy are calculated from foreshortening and other data coded for the selected segment S, as is the corrected heading ~I'.

(e) Magnetic Variation of the Geoqraphic Area The map data base may contain correction data to relate magnetic north to true nor~h and magnetic dip angles to determine heading errors due to the vertical slope of streetx St, thereby accounting for th~ actual m~gnetic variation of a given geographic area. Because these are continuous and slowly varying correction factors only a few factors need be stored for the entire map data base.

(f) Map Accuracy Estimate The map M is subject to a variety of other errors including survey errors and photograph~ic errors which may occur when surveying and ;
photographing a given geographic area to make the map M, errors of outdated data such as a new strèet St ~hat was ~aved subsequent to the making of the map M, and, as indicated above, a general class of errors encountered when descrihing a 3-dimensional earth surface as a 2-dimensional flat surface.

-: :

r~

Consequently, the map data ~ase may contain data estimating the accuracy for the entire map ~l, for a subarea of the map ~l or for specific line segments S. The navigational algorithm descrihed below may use these map accuracy data to set a minimum size of an estimate of the accuracy of the updated dead reckoned position DRPCu also as described more fully below. Additionally, some streets St in the map M
are known to be generalizations of the actual locations (e.g., some trailer park roads). The map accuracy data may be coded in such a way as to identify these streets St and disallow the navigational al~orithm from updating to these generalized streets St.

B. The Dead Reckoned Posit on DRP
The present invention provides informaticn on the current dead reckoned position DRPC of the vehicle V by using certain sensor data about wheel sensors 18 and compass 28 and the computations of equations (1) and ~2) or (l') and (2'). In addition, sensor calibration information derived in the process of advanciny and ~pdating the dead reckoned positions DRP, as will be described below, is used to improve the accuracy of such sensor data and, hence, the dead reckoned position accuracy.

C. The Estimate of the Accuracy of the DRP
1. The Estima~e - Generally The present invention provides and maintains or carries forwaxd as the vehicle V moves, an estimate of the accuracy of any ~iven dead reckoned position DRP. Every time the dead reckoned position DRP is changed, i.e., either advanced from the old dead reckoned position DRPo to the current dead reckoned position DRPC or updated from th~ DRPC
to the updated current dead reckoned position DRPCu, the estimate is chan~ed to reflect the change in the accuracy of the DRP. The estimate embodies the concept that the actual location of the vehicle V is never precisely known, so that the estimate covers an area that the vehicle V is likely to be within.
As will be described below, the estimate of the accuracy of a given dead reckoned position DRP can be implemented in a variety of forms and is used to determine the probability of potential update positions of a given DRPC to a DRPCu.

2~ The F.stimate as a Probability Density Function or as a Contour of Equal Prohability (CEP) _ _ Fig. SA generally is a replot of Fig. lB
on an XYZ coordinate system, where the 2 axis depicts graphically a probahility density function PDF of the actual location of the vehicle V. Thus, Fi~. 5A shows along the XY plane the street St, together with the locations Lo and Lc and the current dead reckoned position DRPC previous~ly described in connection with Fig. lB. As shown in ~5 Fig. 5A, the peak P of the probability densitv function PDF is si-tuated directly above the DRPC.
The probability density function PDF is shown as having a number of contours each generated by a horizontal or XY plane slicing through the PDF
function at some level. Th se~contours represent contours of equal probability~ CEP, with each enclosing a percentage of the probability density, such as 50% or 90%, as shown.

Fi~. 5B is a projection of the contours cF~r of Fig. 5A onto the XY coordinates of the map M.
A given contour CEP encloses an area A having a certain probability of including the actual location of the vehicle V. Thus, for e~ample, the 90%
contour CEP encloses an area A which has a 0.9 probability of including the actual location of the vehicle V~ As will be further described, as the old dead reckoned position DRPo is advanced ~o the current dead reckoned position ~RPC and th~ error E
accumulates, as was described in relation to Fig.
lB, the area A of the CEP will become proportionately larger to reflect the accumulation of the error E and the resulting reduction in the accuracy of the D~PC; however, when the DRPC is updated to the DRPcu, as was described in connection with Fi~. lC, then the area A of the CEP will be proportionately reduced to reflect the resulting increase in the accuracy of the DRPCu. Whether expanded or reduced in size, the C~P still represents a constant probability of including the actual location of the vehicle V. As will be described, the CEP has a rate of gro~th or expansion which will change, accordingly, as certain measurements and other estimates change.
Fig. 5C is similar to Fig. 5~, except that it shows one example of a specific implementation of the CEP that is used in accordance with~ the present invention, as will be further described. For this implementation, a contour CEP is approximated by a rectangle having corners RSTU. The CEP îs stored and processed by the computer 12 as XY coordinate data defining ~he corners RSTU, respectively.

:

~ r~
~ ~33~i~

In other words, the CEP, whether stored and used in ~n el]iptical, rectangular or other such shape, may be considered to constitute a plurality of points, each identified by XY coordinate data, defining a shape enclosin~ an area A having a probability of including the actual location of the vehicle V.
Ficl. 5C-l shows qraphically the expansion or enlargement of the CEP as the vehicle V moves over a street St and as an old dead reckoned position DRPo is advanced to a current dead reckoned position DRPC. In Fic~. 5C-1, a gi~en DRPo is shown as not necessarily coinciding with an actual location Lo of the vehicle V, i.e., there is an accumulation error E. Surroundin~ ~he DRP~ is the CEP having an area A that is shown as containing the actual location Lo of the vehicle V. Upon tlle advancement of the DRPo to the DRPC, when the vehicle V has moved to the location Lc, the CEP will have been expanded from the area A defined by corners ~STU to the area A' defined by corners R'S'T'U'. More specifically, as the vehicle V mov~s from the location Lo to the location Lc~ the computer 12 processes certain data so that the CEP
may grow from area A to area A' at a varyin~ rate, as will be described below. Also, the manner in which the XY coordinate data of the corners RSTU are changed to clefine corners R'S'T'U' will be described below.
~ig. 5C-2 shows graphically the reduction in size of the CEP. Fig. 5C~2 indicates that at the time the vehicle V is at the location L~, the vehicle navigational al~orithm of the present invention has determined that a more probable :

r~

-~4-current position than the DRPC exists so that the latter has been updated to the DRPCu, as explained in Fig. lC. Consequent~y the expan~ed CEP havin~
corners R S'T'U' is also updated to a C~PU having an area A with corners R"S"T U~ to reflect the increased certainty in the accuracy of the DRPCu.
A~ain, the CEP having the area A ~ surrounds the DRPCu with a probability of including the actual location of the vehicle V. The detailed manner in which the CEP is updated to the CEPU hy the computer 12 will be described more fully below.
~ hile area A, area A' and area A of the respective CEPs have been described above and shown to include the actual location of the vehicle V, since the CEP is a probability function, it does not necessarily have to contain the actual ]ocation of the vehicle V. The vehicle navigational algorithm described below still uses the CFP to determine if a more pro~able current dead reckoned position DRP
exists.
3. Other Embodiments of the Estimate and its Growth The estimate of the accuracy of a given dead reckoned position DRP, which has a proba~ility of containing the actua] location of the vehicle;V, may be implemented in embodimen~s other than the CEP. For example, the estima~e may be a set ~o mathematical equations defining the PDF. Equation A
is an example of a PDF of a DRP advancement assuming independent zero mean normal distributions of errors ; in heading and distance, and to first order approximatioll, independence of errors in the orthogonal directions parallel and perpendicular to the true heading direction.

~TAK-417~--SDB8/020 .

~ r~
~3~56 ~ ~ / T\ / ~ ~ ~
PDF(D,P) = 2~aDap e I ~ a~ J+~ ap J J (A) where P = ~D sin H
and T
D ~ distance parellel to true heading direction ~DT - true distance of n~P advance a _ standard deviation of distance sensor error (a .. D percentage) H heading error P~ distance perpendicular to true heading direction ap _ standard deviation of position error perpendicular tv true heading direction (a percentage) which is a function of aH and ~DT
all _ standard deviation of heading sensor error Equation B is an example of a similar PDF of the accumulated error. Its axes, ~ and ~, have an arbitrary relation to D and P depending upon the vehicle's past track.
_~rl~2 ~ 2~
PDF ~ ) = 27r~f3a,4 e Ll af~ + ~u¢, J J (B) where major axis ~ --minor axis perpendicular to ~
o~ standard deviation of errors accumulated in ~ direction a _ standard deviation of errors accumulated ~ in ~ direction Assuming independence of errors, the vehicle position probability density function PDF after an àdvance can be calculated: by t~wo dimension convo~ution of the old PDF (equation ~) and the current PDF (equation A) and their~ respective headings. A new PDF of the form of equation B could then be approximated with, in general, a rotation of axis ~ to some new axis: ~' and ~ to ~' and an adjustment of o ~ and o~. The computer 12 can then :f~? ~ .f~ - io g~
~ a ~ J~ ~J~
ETAK-4178--SDs8/020 ~ ~ J ~

.

calculate the probability of potential update positions in accordance with these mathematical PDF
equations thus providin~ information similar to that of the CE~ as the vehicle V moves.
Alternatively, the computer 12 can store in memory a table of values defining in two dimensions the probability distribution. The table can be processed to find similar information to that contained in the CEP, as described more fully below.
In addition, the rate of growth of the CEP
can be em~odied in different ways. Besides the method described below, the rate of growth could be embodied by a variety of linear filtering techniques including Kalman filtering.
5 IV. Parameters Derived hy the Computer to Improve the Accuracy of Trackinq the Vehicle V
A. Parameters - Generall~
_ Computer l? will derive and evaluate from the above-descri~ed information one or more parameters that may be used to determine if a more probable position than the current dead reckoned position DRPC exists. These "multi-parameters"l any one or more of which may be used in the de~ermination, include ~1) the calculated heading H
of the vehicle V in comparison to the headings of the line segments S, (2) the closeness of the current dead reckoned position DRPC to the line segments S in dependence on the estimate of the~
accuracy of the DRPC, such as the CEP in the specific example described above, (3) the connectivity of the line segmellts S to the line segment S corresponding to a preceding DRPCu, (4) the closeness of the line segments S o one another :

~ 3~;~

(also disc~ssed below as "ambiguity"), and (5) the correl~tion of the characteristics of a given street S~, particulnrly the headings or path of the line segments S of the gi~en street St, with the calculated headings ~I which represent the ~ath of the vehicle V. Figs. 6A-6D show graphically and are used to explain the paramçters (1)-(4) derived by the computer 12. ~lore details of these and other parameters will be discussed below in relation to lo the details of the vehicle navigational algorithm.

B. Parameters - Specifically 1. ~eadinq H
Fig. ~A shows in illustration I the measured heading H of the vehicle ~. Fig. 6A also shows in respective illustrations II-IV a plurality of line segments S, ~or example line seqments Sl-S3, stored in the map data base. These segments Sl-S3 may have, as shown, different headings hl-h3, as may he calculated from the XY coordinate data of their respective end points EP. The heading H of the vehicle V is compared to the respective headings h of each segment S in the map data base corresponding to the navigation neighborhood currently used by ~he navigation algorithm, such as segments Sl-S3.
Depending on this heading comparison, compu~er 12 determines if one or more of these segments S
qualifies as a "line-of-position" or L-O-P in determining if a more probable current dead rec~oned position-DRPc exists. Such segments S qualifying as L-O-Ps are candidates for further consideration to determine if a DRPC is to~be upd~ated to DRPCu.

.

~3~

2. Closeness of DRP Related to Estimate Fig. 6B is used to explain one example of the closeness parameter with respect to the estimate of the accuracy of the DRP. Specifically, one criterion that is considered is whether a given line segment S intersects or is within the CEP. Segments S intersecting the CEP are more li~el~r to correspond to the actual location of the vehicle V than segments S not intersecting the CEP. A given line segment S doesn't intersect the CEP if, for example, all four corners RSTU (or R'S'T'U'I are on one side of the CEP. As shown in Fig. 6B, which illustrates eight representative line segments S1~S8, segments S2-S4 and S6-S7 (S6 and S7 correspond to one given street St) do not intersect the C~P and, therefore, are not considered further. Segments S1, S$ and S8 do intersect the CEP and, therefore, qualify as L-O-Ps or candidates for further consideration in determining if a more probable current dead reckoned position DRPC exists, as will be described below.
Fig. 6B happens to show that the actual location of the vehicle V at this time is on a street St corresponding to segment S8.
As an alternative, assume that the embodiment of the estimate being used is the table of entries of values of the probabili~y density function PDF described above. The computer 12 may determine the distance and heading between a given line segment S and the DRPC. From this and the table of PDE"s the computer~12 can determine the most probable posi~ion along the segment S and the probabiIi~y associated with that position. Any probability less than a threshold will result in the given llne s~egment ~ not belng cloae enough to the F.TAK-4178--S~8jO20 : :
. , .

~-2g--current dea~ reckoned position ~RPC to be a likely street St on ~Jhich the vehicle V may be moving, whereas any probability greater th~n the threshold may constitute such a likely street St. In S addition, these proba~ility values can be used to rank the relative closeness of candidate segments S~

3. Connectivity of the Line Segments S
It is more prohable that a given line segment S corresponds to a street St on which the vehicle V is moving if it i~ connected to a line segment S previously determined to contain the updated current dead reckoned position DRPCu~
Fig. 6C graphically illustrates several possible ways in which two line segments Sl and S2 are deemed connected. As shown in Example I of Fig. 6C, any two line segments Sl and S2 are connected if an intersection i of these two segments S1 and S2 is within a threshold distance of the end points EP of the t~lo segments Sl, and S2, respectively.
Alternatively, two line segments Sl and S2 are interconnected if the intersection i is inclusive of the end points EP, as shown by Example II and Example III in Fig. 6C.
To test for connectivity, for example, and with reference to Examples I-XII of Fig. 6C, the line segment Sl may be ~he segment S corresponding to the preceding updated current dead reckoned position DRPCu while line segment S2 may be a segment S being presently evaluated in connection with updating the current dead~reckoned position DRP . Computer 12 will compute from segment data contained in the navigation neighborhood of the map data base, the connectivity to determine if this .~,.
ETAK-4~78--SDB8/020 3~Ç;

segment S2 qualifies under this connectivity test.
That is, the present invention considers that the vehicle V ~ore likely will move about interconnected streets St and line segments S of a given street St, rather th~n about unconnected streets St or unconnected line segments S of a given street St.
Other segments S may or may not so qualify under this connectivity parameter. Since the present invention also allows for the vehicle V to move off and on the set of streets S of the map data base, this connectivity test is not absolute hut is one of the parameters used in the updating process more fully described later.
4. Closenass of Line Segments S to One Another (Ambiguity) __ Fig. 6D shows two line segments S1 and S2 on opposite sides of the current dead reckoned position DRPC. As will ~e further described, the computer 12 ultimately may determine that these two line segments Sl and S2 are the only two remaining line segments S that may likely correspond to the actual street St on which the vehicle V is moving.
However, if the computer 12 determines that these two segments S1 and S2 are too close together, or that the distance between Sl and DRPC is insignificantly different than the distance between S2 and DRPC, then one segment Sl or S2 may be as likely as the other se~ment Sl or S2 to correspond to the street St on which the vehicle V is actually moving. In this ambiguous event, neither segment S
nor S2 is selected as a more probable segment and the current dead reckoned position DRPC is not updated at this time.

.

~ f_
5. Correlation (a) Generally The correlation parameter generally describes the closeness of fit of a recent portion of the path taken ~y the vehicle V to the path defined by segments S in the navigation neighborhood. The correlation parameter is computed differently depending upon whether the vehicle V is turning or not. If the vehicle V is not turning a simple path matching is c~ldulated, as described below in section 5(~). If the vehicle V is turning a correlation function is calculated, as described below in section 5(c~.

(b) Path Matching Retween the Sequence of Previous Vehicle Headings and the Sequence of Connected Segment ~eadll,g.q _ _ _ As will be shown by the two ex~mples I and II of Fig. 6E, and described more fully below, path matching is used when the vehicle V has been determined not to be turning. In each e~ample I and II, ~he solid lines having the current dead reckoned position DRPC show a recent dead reckoned path used for matching and the dashed lines show an older dead reckoned path not used for matching. The other solid lines of examples I and II show respective sequences of connected line segments S. After computer 12 determines, for example, line segment S2 to be the most likely to correspond to the street~St on which the vehicle V is probably moving, ~hen this path match parameter will compare the dead reckoned path of the vehicle V with the path of the segment S2 and connected~ segments (if needed), such as 33~6 segment Sl, to determine if the respective paths match. Example I of Fig. 6E shows paths that do match, whereby segment S2 would be used for updating the current dead reckoned position DRPC to the S DRPCu. Example II shows paths that do not match, so th~t segment S2 would not be used for updating the current dead reckoned position DRPC, (c) Correlation Function Between the Sequence of Previous Vehicle Headings and the Sequence of Connected Se~ment Headinqs A correlation function, described nlore fully below, is used when it has been determined that the vehicle V has been turning. After computer 12 determines a given line segment S to be the most likely to correspond to the street St on which the vehicle V is probably moving, the correlation function is derived to determine if the segment S is sufficiently correlated to warrant updating the current dead rec~oned position DRPC. The computer 12 does this by calculating the ~est point RP of the correlation function and testing its value as well as certain shape factors. If .it passes these tests, this best point BP is stored for later use in updating the DRPC to DRPCu.
.

~TAK-4178--SDB8/020 ~33~6 V. Use of the Parameters Derived by the Computer 12 to Improve the ~ccuracy of Tracking the Vehicle V
A, Parameter Vse - Generall~
In the present invention, the parameters of Section IV. discussed above are used as logical tests in conjunction with other processing and logical tests to determine if a point along a selec-ted segment S, i.e,, the most probable seqment, i.s a more probable position of the vehicle V than the current dead reckoned position DRPC. If such a most probable segment S is selected, then an update of the DRPC to that point (the DRPCu) will be made as outlined in Section VI~ below and detailed more fully in Section IX.
The parameters are generally used to sequentially test and eliminate the set of segments S in the navigation neighhorhood from further consideration as candida~e segments S for the most probable segment S. As will he described in detail in Section IX., the navigation aIgorithm us~s~ these parameters and ather processing and logic to eliminate all but one or two segments S as candidate segments. The algorithm then makes a final determination if one segment S fully qualifies as having the highest probability of represen~ing~the street St where the vehicle V is moving and that the probability is sufficiently high to qualify for updating the current dead reckoned position DRPC to the DRPCu as the above-mentioned point on such one segment S.

ETAK-4178--SDB8~020 3S~

B. Parameter Use - Other Embodiments The use of these parameters for determining if and how to update the current dead reckoned position DRPC can take other embodiments.
For example, rather than a logical sequence of eliminating segments S, they may be used in a weighted score algorithm. In such an algorithm the parameters described in Section IV. above may be numerically computed for each segment S in the navigation neiqhborhood. Each parameter could be weighted by numerical values representing the average error bounds estimated for that parameter and representing the significance assigned to that parameter. In this way a weighted sum of scores could he computed for each segment S and the segment S with the best weighted sum determined. If that sum was sufficiently good the decision would be made to update.
In another embodiment a combination of the elimination method of the present invention and the scoring method discussed above, could be used.

VI. Update of the DRPc, the CEP and Sensor Calibration Data to Improve the Accuracy of Trackinq the Vehicle_V
A. Update - Generally Once a segment S, i.e., the most probable segment S, has been determined ~to be sufficiently prohable of containing the actual location of tlle vehicle V to justify updating the current dead~
reckoned position DRP , the computer 12 processes the segment, parameter and~DRP data to determine the most probable DRPCu, the updated CEPU and, if~
appropriate, updated distance and heading sensor ETAK-4178--SDB8/b20 , calibration coefficients. The method of calculating ~RPCu depends on whether the computer l2 cletermines that the vehi.cle V has been turnincJ or has been moving in a straight line.
~s will be described in detail later, if the vehicle V has been moving in a straight line, DRPCu is computed directly usi.ng the selected segment S, the DRPC, the angle and distance hetween them and the CEP. If the vehicle V is turning, the DRPCu is determined by calculating a correlation function obtained by comparing the sequence of recent vehicle headings to the segment S (and if necessary connected segments S). The best point ~P
of the correlation computation becomes the selected lS DRPCu if it passes certain quality tests.
The CEP is updated to CEP differently in accordance with the two methods of updating the DRPC, Also, when the update i9 judged to provide added information about the calibration of the sensors 18 and 28, the calibration coefficients are updated, B. Update -_Other Embodiments The method of updating DRPC to D~PC can take other embodiments. For example, the past DRP
2S positions, the most probable position along the selected segment S, the score of the segment S if a score was computed, as well as other parameter information could be input into a linear filter (not shown) for computing an optimum or least mean square position based on some assignment of values of the different inputs. The optimum or most probable position may or may not fall on a segment S.

ETAK-4l78--SDB~/020 VII. Sumln~rv -Thus far, there has been described a variety of information that is inputted to, stored and processed by the computer 12 to improve the accuracy of tracking the vehicle V. This information includes, for example, the distance and heading data input~ed to the computer 12, the map data base stored on medium 14 and the estimate of the accuracy of the dead reckoned positions DRP. As was also described, the computer 12 may use this information to derive one or more parameters, each of which and all of which, are useful for determining if a most proba~le segment S exists and if such segment S contains a more probable current dead reckoned position DRPCu than the current DRPC.
If it is determined that such a segmen~ S exists, the computer 12 computes a more probable position and then updates the DRPC to a DRPCu, the estimate of the accuracy of the DRP and the calibration coefficients. The computer 12 may selectively process the information described and other information to be described, and derive the parameters, and perform the updates in accordance with a vehiclP navigational algorlthm o the present invention, one embodiment of which will now be described.

VIII. Overall Computer Program Structure Figs. 7A-7C show three block diagrams which, together, constitute an overall computer program structure that is utilized by the sys~em 10.
Fig~ 7A references a main program, with Figs. 7~-7C
referencing interrupt programs. ~he interrupt program of Fig. 7~ is used to refresh the monitor 38 ::
, ~ 33~ ~

and to provide an operator interface via the console means 46. The interrupt program of Fig. 7C is the program performing the vehicle navigational algorithm of the present invention.
Generally, in the operation of the overall computer program structure, in response to all information that is processed by the computer 12, as described above and as will be further described below, the main program computes and formats data necessary to select and display the selected map M
and the vehicle symbol S shown on the monitor 38 and provide the segments S in the navigation neighborhood for the vehicle navigational algorithm.
The execution of this main program can be interrupted by the two additional programs of Fig.
7B and Fig. 7C. The refresh display program of Fig.
7B resets the commands necessary to maintain the visual images shown on the monitor 38 and reads in any operator command data via the console means 44 needed for the main program to select and format the display presentation. The interrupt program of Fig.
7B can interrupt either the main program of Fig. 7A
or the navigational program of Fig. 7C. The latter can only interrupt the main program and does so approximately every 1 second, as will be further described, IX. The Vehicle Navigational Program and Alqorithm Fig. 8 is a flow chart illustrating an embodiment of the overall vehicle navigational algorithm of the present invention performed by the 30 computer 12. As previously mentioned, every second the vehicle navigational program interrupts the main program. First, ~the computer 1~ advances an old ETAK-4178---5DE~8/02() ~ ~

dead reckoned position DRPo to a current dead rec~oned position ~RPC by dead reckoning tsee also Fic3. lB) and expands an estimate of the accuracy o~
the DRPC ~see also Fig. SC-l) and ~block 8A), as S described further below in relation to Fig. 9.
Next, a decision is made if it is time to test for an update of the DRPC, the estimate and otller information (block 8B), as described below in relation to Fi~. 12. If not, the remaining program is bypassed and control is returned to the main program.
If it is time to test for an update tblock ~B), then a multi-parameter evaluation is perormed by computer 12 to determine if a segment S in the navigation neighborhood contains a point which is more likely than the current dead reckoned position DRPC (block 8C), as will be described in relation to Fig. 13. I~ the multi-parameter eval~2ation does not re~ult in the determination of such a segment S
tblock SD), then the remaining program is hypassed and control is passed to the main program. If the multi-parameter Pvaluation indicates that such a more likely segment S does exist, then a position along this segment S is determined and an update is performed (block 8E), as will be described in connection with Fig. 28, and thereafter control ls returned to the main program. This update not only includes an update of the current dead reckoned position DRPC to the DRPC Isee Fig. lCl, and an update of the estimate tsee Fig. 5C-2), but also, if appropriate, an update of calibration data relating to the distance sensor means 16 and the headin~
sensor means 26 (see Fig~ 2).

ETAK-~17~--SDB8/020 : . ~

Fig. 9 shows a flow chart of the subroutine for advancing the DRPo to DRPC and expanding the estimate of the accuracy of the DRPC
(see block 8A)~ First, the DRP is advanced by dead reckoning to the DRPC (block 9A), as will be described in relation to Fig. 10. Next, the estimate of the accuracy of .~h~ DRPC is enlarged or expanded (block 9B), as will be described in connection with Fig. ~.l.
E`ig. 10 illustrates the flow chart of the suhroutine for advancing a given DRPo to the DRPC
~see block 9A). Reference ~ill be made to the equations shown on Fig. 10. First, the headin~ H of the vehicle V is measured by computer 12 (block lOA), which receives the heading data from the sensor means 26. The measured heading H is then corrected for certain errors (block lOB). That is, and as will be described in relation to Fig. 35-1, the computer 12 maintains a sensor deviation table 20 hy storing heading sensor deviation vs. sensor reading, which heading deviation is added to the output of the heading sensor means 26 to arrive at a more precise magnetic bearing. Additionally, the locaL magnetic variation from the map data base (see Section III.A.2.e) is added to the output of the:
heading sensor means 26 to arrive at a more accurate heading H of the vehicle V.
Then, a distance ad traveled since the calculation of the DRP is measured by the computer 12 using the distance data from sensor means 18 (block lOC). Next, the computer 12 calcuIa~es the distance aD (see Fig. lB) (block lOD), in which the calibration coefficient CD is described more fully :
: in relation to Fig. 35-2. Next, the DP.PC is ;
-~ ETAK-4178--SDB8/020 ~ :

calculated using equations 1' and 2' (block lOE), and this subroutine is then completed.
Fig. 11 discloses a flow chart of the subroutine for expanding the contour CEP (see block 9B). Reference also will be made to Fig. llA which is a simplification of Fig. 5C 1 and which shows the enlarged CEP having area A' after the vehicle V has traveled from one location to another and the distance ~D has been calculated.
First, the X and Y distance components of the calculated ~D are determined by the computer 12, as follows (block llA):

~Dx = ~D cos H (3) ~D = ~D sin H (4) Next, the computer 12 calculates certain variable heading and distance errors EH and ED, respectively, to be described in detail below.
Generally, these errors EH and ED relate to sensor accuracies and overall system performance.
Thereafter, new XY coordinate data are calculated by the computer 12, for each corner R'S'T'U' of the CEP as follows (block llC):

R'x = Rx ~ ED ' ~Dx H Y
R' = R - ED ~D + EH . ~Dx (6) S'x = Sx + ED ' ~Dx H Y
S' = S + ED ~D - EH QDx (8) x x ~ ED ~ ~Dx + ~H QDy (g) 30 T' = T + ED ~Dy EH x (10) U'x = Ux ~ ED ~Dx ~ EH Y (11) U' = Uy - ED ~ ~Dy - EH ~ x (12) '1~ ,/"

As indicated above, EH and ED are variables, as are ~D and ~D since these data depend on the distance traveled by vehicle V from one location to the other when it is time to advance the DRP and expand the CEP. Consequently, the rate at which the CEP expands will vary. For example, the higher the values for E~ or ED, the faster the CEP will grow, reflecting the decreased accuracy of the DRPC and certainty of knowing the actual location of the vehicle V.
With the DRPo now being advanced to the DRPC and the CEP being expanded, Fig. 12 illustrates the flow chart of the subroutine for determining if it is time to test Eor an update (see block 8BI.
First, the computer 12 determines if 2 seconds have elapsed since a previous update was considered (not necessarily made) (block 12A). If not, it is not time for kesting for an update (block 12P) and the remaining program is bypassed with control being returned to the main program.
If the 2 seconds have elapsed, computer 12 determines if the vehicle V has traveled a threshold distance since the previous update was considered (block l~C). If not, it is not time for testing for an update (block 12B). If yes, then it is time to determine if an update should be made ~block 12D).
Fig. 13 is a flow chart of the subroutine for performing the multi-parameter evaluation by the computer 12 (see blocks 8C and 8Dl. First, the computer 12 determines a most probable line segment S, if any, based on the parameters (1)-(4) listed above (block 13A), as will be further described in relation to Fig. 14. I~ a most probable line segment S has been found tblock 13B), then a '`D.

, 3~.

determination is made (block 13C) as to whether this most probahle segment S passes the correlation tests of the correlation parameter, as will be described in relation to Fig. 23 If not, a flay is set to bypass the update subroutine (block 13D). If yes, a flag is set (block 13E), so that control proceeds to the update subroutines.
Fig. 14 shows the flow chart of the subroutine for determining the most probable line segment S and if this line segment S is sufficiently probable to proceed with the update subroutines (see block 13A). Fir~t, the XY coordinate data of a line segment S are fetched by comput~r 12 from the navigation neighborhood of the map data base stored on medium 14 (block 14A). Then, the computer 12 determines if this line segment S is parallel to the heading 1~ of the vehicle within a threshol~ (see the heading parameter, Section IV B1.) (block 14B), as will be described in relation to Fig. 15. If not, then the computer 12 determines if this line segment S is the last segment S in the navigation neighborhood ~o fetch ~block 14C). If not, then the subroutine returns to block 14A, whereby the computer 12 fetches another segment S.
If the line segment S that is fetched is parallel to th~ heading H of the vehicle ~ within â
threshold ~block 14B), then the computer 12 determines if this line segment S in~ersects the CEP
(block 14D) ~see the clos~ness para~eter rela~ive to the estimate of the accuracy of the DRP ; Section IV
B2). An example of a procedure ~or determining whether a line segment S intersects the CEP i5 disclosed in a book entitled, "A]~orithms for Graphics and Image Processing," by Theodosios ETAK-4178--SDB8/~20 3~;

Pavlidis, Computer Science Press, Inc., 1982 at 15.2 entitled, "Clipping a Line Segment by a Convex Polygon", and ~15.3 entitled, "Clipping a Line Segment by a Regular Rectangle". If this line S seyment S does not intersect the CEP (block 14D), and if this line segment S is not the last segment S
in the navigation neighborhood that is fetched (block 14C), then the subroutine returns to block 14~, whereby the computer 12 fetches another line segment S. If this line segment S does intersect the CEP (block 14D), then this line segment S is added by the computer 12 to a list stored in memory of lines-of-position L-O-P (block 14E) which qualify as probable segments S for further consideration.
Next, the computer 12 tests this line segment S which was added to the list for the parameters of connectivity (see Section IV 83~ and the closeness of two line segments S ~see Section IV
B~) (block 14F), as will be further described in relation to Fig. 16. If this line segmen-t S fails a particuIar combination of these two tests, it is removed from the L-O-P list. The subroutine then continues to block 14C.
When the segment test of block 14C passes~
then a most probable line segment S, if any, is selected by the computer 12 from the remaining entries in the L-O-P list (block 14G), as will be further described in relation to Fig. 20. It is this selected most probable line segment S which is the segment to which the DRPC is updated to the DRPCu if it passes the tests of the correlation parameter.
Fig. 15 shows the flow chart of the subroutine for determining if a segment S is . ~`
. ., .

~44-parallel to the heading H of the vehicle V, i.e., the heading parameter (see block 14B). Initially, an angle ~ of the line segment S is calculated (block 15A) in accordance with the following equation:

a = arc tangent{tY2-yl)/(x2-xl)} (13) where Xl, X2, Yl, Y2 are the XY coordinate data of the end points EP of the line segment S currently being processed by the computer 12.
Then, the current heading H of the vehicle V is determined, i.e., the angle ~ (block 15B) from the heading data received from the sensor means 26.
Next, the computer 12 determines if ~ or ~ 180¦ is less than a threshold number of degrees (block 15C). If this difference is not less than the threshold (block 15D), then the computer 12 determines that this line segment S is not parallel to the heading H of the vehicle (block 15E). If this difference is less than the threshold (block 15D?, then the computer 12 determines that this segment S is parallel to the heading H of the vehicle V (block 15F).
Fig. 16 shows the flow chart of the subroutine for testing for the parameters of connectivity and closeness of two line segments S
(see block 14F). First, the computer 12 calculates the distance from the current dead reckoned position DRPC to the line segment S (now a line of-position L-O-P via block 14E) being processed tblock 16A), as will be described further in relation to Fig. 17.
Then, the computer 12 accesses the navigation neighborhood of the map data base to compute if this ~ ,....

A ~

~Z~33~

line segment S is connected to the "old street", which, as previously mentioned, corresponds to the line segment S ~o which the next preceding DRPCu was calculated to be on (block 16B). This line segment S S and the old street segment S are or are not connected, as was described previously in relation to Fig. 6C.
Then, if this is the first line segment S
being processed (block 16C), the XY coordinate data of this segment S are saved as n side 1" (block 16D) This "side 1" means that this line segment S is on one side of the DRPC, as mentioncd above in relation to Fig. 6D. Also, the result of the distance calculation (block 16A) is saved (block 16E), as well as the result of the segment connection calculation (block 16B) (block 16F).
If this line segment S currently being processed is not the first segment S (block 16C), then the computer 12 determines if this se~ment S is on the same side of the DRP as the side 1 segment S
(block 16G). If it is on the same side as the side 1 segment S, then the computer 12 selects the most probable segment S on side 1 (block 1611), as will be described in relation to the subroutine of Fig. l8 If this line segment S is not on side 1 (block 16G), then it is on "side 2", i.e., the other side of the DRPC. Accordingly, the most probable segment S on side 2 is selected (block l6I), as will~
be described for the subroutine of Fi~. 19. Thus, at the end of this subroutine of Fig. l6, a most probable line segment S~if~any on side 1 and a most probable line segment S if any on side 2 of the DRPC
have been selected, and these will be further tested for closeness or ambiguity, as will be described in ~-- ETAX-4l~78--SD~8~020 :

3~

relation to Fig. 20. All other L-O-P's on the list (see block 14E) have heen eliminated from further consideration.
Fig. 17 is a flow chart showing the subroutine for calculating a distance ~ from the DRPC to a line segment S (see block 16A). First, using the coordinate data X2Y2 and X1Y1, which define the segment S, and the XY coordinate data of the DRPC, the intersection I of a line l, perpendicular to the segment S, and the segment S is calculated by the computer 12 (block 17A). The reason for the perpendicularity of the line l is that this will provide the closest intersection I to the DRPC. This intersection I is identified by coordinate data X3Y3. Then, the distance d between the DRPC and the intersection I is calculated using the XY coardinate data of the DRPC and X3Y3 (block 17B).
Fig. 18 illustrates the flo~t chart of the subroutine for selecting the most probable line segment S on side 1 of the current dead reckoned position DRPC (see block 16H). First, the computer 12 determines if this line segment S being processed and the side 1 line segment S are both connected to the old street segment S (block 18A~. If so connected, then the computer 12, having saved the result of the distance calculation (block 16E), determines if this line segment S is closer to ~he current dead reckoned position DRPC than the side 1 line segment S (block 18B). If not, the side 1 segment S is retained as the side l segment S (block 18C). If closer, then this line segment S is sa~ed as the new side 1 segment S along with its distance and connectivity data ~block 18D3.

ETAK-417g~-SDB8/020 :

~ r~
3~

-~7-If this line segment S and the side 1 segment S are not both connected to the o].d street segment S (block 18A), then the computer 12 determ;.nes if this li.ne segment S and the side 1 segment S are not both connected to the old street segmen~ S ~block 18E~. If the answer is ves, then the subroutine proceeds via block 18P as above. If : the answer is no, then the computer 12 determines if this line segment S is connecte~ to the old street segment S and if the side 1 segment S is not so connected (block 18F). If the answer is no, then the side 1 segment S is retained as the side 1 segment S (bloc~ 18C)~ Otherwise, this line segment S becomes the side 1 segment S (block 18D). Thus, at the end of this subroutine, only one line segment S on one side of the current dead reckoned position DRPc i5 saved as the side 1 segment S.
Fig. 19 shows the flow chart of the subroutine for selectinq the most probable line segment S on side 2, i.e~, the other side from side 1 of the current dead reckoned position D~PC (see block 16I). If this is the first line segment S on side 2 being considered by the computer 12 (block l9A), then this line segment S is saved as the "side 2" segment S along with its distance and connectivity data (block 19B). If not, then the computer 12, having saved the results of the street connection tests (block 16F), decides if this line segment S and the side~ 2 segment S are both connected to the old street segment S tblock l9C).
If yes, then the computer 12, having saved the results of the distance calculation (block 16E), decides if this line segment:S is closer to the current dead reckoned positi.on DRPc than the side 2 ETAK-4178--5~8/020 -~8-segment S (block l9D). If not~ the side 2 segment S
is retained as the side 2 segment S Iblock 19E). I~
it is eloser, then this line segment S is now saved as the side 2 segment S along with its distance and connectivity data (block 19F).
If this line segment S and the side 2 segment S ar~ not both connected to the old street segment S (block 19C), then the computer 12 determines if this line segment S and the side 2 lo segment S are hoth not connected to the old street segment S (block 19G). If the answer is yes, then the subroutine proceeds through block 19D. If not, then a decision is made by the computer 12 if this line segment S is connected to the old street segment S and the side 2 segment S is not connected to the old street segment S (~lock l9H). If not, then the side 2 segment S is retained as the side 2 segment S (block l9E). If yes, then this line segment S is retained as the new side 2 segment S
along with its distance and connectivity data (block 19F).
Fig. 20 shows the flow chart of the subroutine for selecting the most probable segment S
of the remaining segments S (see block 14G). First, the computer 12, having made a list of segments S
qualifying as a line-of-position L-O-P (block 14Rj and eliminating all but no more than two, det~rmines if only one segment S has qualified~as such a line-of-position L-O-P (block 20A). If there is only one, then this line segment S is selected as the most probable segment S in the navigation neighborhood at this time~(block 20~. The computer 12 then determines if this most probable segment S
passes the tests of the cor:relation parameter (block : :
-~ ETAX-4178--SDB8/020 ~ f ~ ~

20C), as will be described in connection with the suhroutine of Fiq. 23. I this segment S does not pass these tests, no update will occur. If this segment S passes the correlation tests, then the subroutine continues accordingly towards determining the point on this line segment S to which the DRPCu should be positioned, i.e., towards an update of DRP to DRP
c cu If more than one remainin~ line se~ment S
qualifies as a line-of-position L-O-P (block 20A), then there is a side l segment S and a side 2 segment S, and the computer 12 determines if the side l segment S is connected to the old street segment S and if the side 2 segment S is not connected to the old street seqment S (block~2nD).
If the answer is yes, then the side 1 segment is selected as the most probable segment S in the navigation neighborhood (block 20E), and the subroutine continues directly to block 20C.
If the answer is no (block 20D), then the computer 12 determines if the side 2 segment S is connected to the old street segment S and the side 1 segment S is not connected to the old street segment S (block 20F). If the answer is yes, then the side 2 segment S is selected as the most probable segment S in the navigation neighborhood (block 20G), and the subroutine continues directly to block 20C. If the answer is no, then the computer 12 determines if the side l segment S and the side 2 segment S are too close together (block 20H) (see the ambiguity parameter; Section IV B4), as will be described more fully in relation to the flow chart of Fig. 21. If the side 1 segment S and the side 2 segment S are too close together, then the computer 12 determines that no most probable segment S exists at this time (~lock 20I) and no update will he made at this time.
If these two line segments S are not too close together (block 20~1), then the computer 12 S determines if one segment ~ is closer to the DRPC
than the other segment S within a -threshold (block 20J), as will be further described in connection with the subroutine of Fig. 22. If not, then the computer 12 determines that no most probable segment S occurs at this time (block 2nI); consequently, no update ~.~ill be made at this time. If yes, then the one segment S is selected as the most probable segment S ~block 20K) and the subroutine continues to block 20C. Thus, at the completion of this subroutine, either no most probable segment S exists at this time or a most probable segment S exists if it passes the test of the correlation parame-ter (see Section IV.B.5 above).
E'ig. 21 shows the flow chart of the subroutine for determining if the side 1 and slde 2 segments S are too close together (see block 20H~.
First, the distance between the two segments S is calculated by the computer 12 ~block 21A). Then, the computer 12 determines if this distance is below a threshold distance (block 21B). ~f ~es, then the two segments S are too close together, representing an ambiguous condition ~block 21C), thereby~
resulting in no updating at this time. If not, the segments S are determined to be not too close together Ibloc~. 21D) and an update possibly may occur.
Fi~. 22 illustrates the flow chart of the subroutine for determining if the side 1 segment S
or the side 2 segment S is significantly closer to Eli~K-4l73~-sDpJB/o2o ~ f~

the DRPC than the other (see block 20J). First, the computer 12 calculates the ratio of the distance from the DRPC to the side 1 segment S to the distance from the DRP to the side 2 segment S
(block 22A). Then, the computer 12 determines if this ratio is greater than a threshold or less than l/threshold, (block 22B), If not, then the ~RPC is determined to be not closer to one segment S than the other segment S (block 22C), thereby resulting in no updating at this time. If yes, ~hen the DPrC
is determined to be closer to the one segment S than the other (block 22D) and an update possibly may occur.
Fig. 23 shows the subroutine for performing the correlation tests with respect to the most probable segment S (see block 20C). As was discussed in relation to the subroutine of Fig. 13, once the most probable segment S has been determined to exist, a determination is made by the computer 12 as to whether or not the vehicle has been turning/
as will be described further in relation to Fig. 25.
If the computer 12 determines that the vehicle V has not been turning (block 23A), it per~orms the correlation test by a simple path matching computation (blocks 23~3-23F), as will be described in conjunction with Figs. 24A-24D [see also Section IV.B.5b above). Otherwise, it performs the correlation test by calculating and testing a correlation function (blocks 23G-23J) (see also Section IV~B.5c above).
Fig. 24A to Fig. 24D are illustrations of plots of various data used by the computer 12 in determining if the simple path match exists. Fig.
24A is a plot of XY positions of ~a plurality of ETAK-~178- rDB8/020 3~

segments S of the street St on which the vehicle V
may be actua]ly moving, in which this street St has six line segments Sl-S6 defined by end points a--g, as shown, and one of which corresponds to the most probable segment S. Fig. 24B is a plot of the XY
positions of a plurality of dead reckoned positions DRP previously calculated in accordance with the present invention and eauations (l) or ll') and (2) or (2'), as shown at points A-K, including the _urrent dead reckoned position DRPC at point K.
Fig. 24B shows these ~ead reckoned positions DRP
over a total calculated distance D traveled by the vehicle V, which is the sum of ~D1-~Dlo. Fig. 24C
shows the headings h1-h6 corresponding to the line segments Sl-S6, respectively, as a function of distance along the street St of Fig. 24A (as distinct from the X position). As previously mentioned, the map data base has end point data identifying the line segments S1-S6 of a given street St shown in Fig. 24A, but the heading data of Fig. 24C are calculated by the computer 12, as needed in accordance with the discussion below.
Fig. 24D shows the corresponding measured headings Hl-Hlo of the vehicle V for ADI-~Dlo, respectively, of Fig 24B.
The ~D distance data and the headin~ data H1-Hl~ shown in Fig. 24B and Fig. 24D are calculated by and temporarily stored in the computer 12 as a heading table of entries. Fig. 24D is a plot of this table. Specifically, as the vehicle V travels, every second the distance traveled and heading of the vehicle V are measured. An entry is made into the heading table if the vehlcle V has traveled more ETAK-4178--SDB8/ n 20 , ~3~

than a thresho]d distance since the preceding entry of the table was made.
With reference again to Fig. 23, the computer 12 calculates the heading h of the street S St for each entry in the heading table for a past threshold distance traveled by the vehicle V (block 23B~ . That is, this heading h of the street St is calculated for a threshold distance traveled by the vehicle V preceding the current dead reckoned position DRP indicated in Fig. 24B. For example, this threshold distance may be approximately 300 ft.
Then, the computer 12 calculates the RMS
(root mean square) heading error over this threshold distance (block 23CI. The RMS heading error calculation is perfcrmed in accordance with the following equation:
n RMS error (p) - 1 i~O(street heading (i,p) - heading(i))~ (14) n where: n = number of entries in headin~ table heading ~i) = heading of vehicle V at ith entry in heading table street heading ~i,p) = street heading for ith entr~ in heading table assuming the ~tehicle V is at a position p.
::
The computer 12 then determines if this RMS heading error (calculated for one position p -thé DRPC) is less than a threshold (block 23D). If it is, then the computer 12 determines that the measured dead reckoning path of the vehicle V does match this most probable segment S and the latter is saved (block 23E). If not, then the computer 12 determines that the measured dead reckoning path of ;~ ETAK-4178--SDB8/020 , the vehicle V does not match this most proba~le segmentl so that there is no most probable segment S
~block 23F). Thus, if the match exists, there is a most prob~ble segment ~ to which the current dead reckoned position DRPC can be updated; otherwi.se, no update is performed at this time.
If the computer 12 determines that the vehicle V has been turning (b]ock 23A), then it performs the correlation test by computation of a correlati.on function (blocks 23G-23J). First, the computer 12 calcu].ates a correlation function betwe~n the measured pa~h of the vehic]e V and the headings of certain line segments S including the rnost probable segment S and line segments S
connected to it tblock 23G), as will be described further in relation to Fig. 26. The computer 12 then determi.nes if the results from this correlation function passes certain threshold t~st~ (hlock 23~), as will be described in relation to Fig. 27. If not, then no most probable segment is found ~block 23F). If the correlation function does pass the threshold tests (block 23H), then XY data of a "most probable point", i.e., the best point BP previously mentioned, on the correlation function is saved corresponding to a position along the segment S with the best corr~lation (block 23I). Then, this segment S is saved as the most proba~le segment.
Fig. 25 shows the subroutine for determining if the vehicle V is turning (see block 23A), The computer 12 begins by comparing the data identifying the heading H associated with the current dead reckoned position DRPC and the data identifying the preceding heading l~ associated with the old dead reckoned positiori DRPo (l~lock 25A). If :

f~ ~

3~

the current headin~ data indicate that the current heading H has changed more than a threshold number of degrees (block 25B), then the computer 12 decides that the vehicle V has ~een turning ~block 25C).
If the current heading H has not chanyed more than a threshold number of degrees (block 25B), then the computer 12 determines if the vehicle V has been on the current heading H for a threshold distance (block 25D). If not, the vehicle V is determined to be turning (block 25C); however, if the vehicle V has been on the current heading H for a threshold distance (block 25D), then a decision is made by the computer 12 that the vehicle V is not turning (block 25E).
lS Fig. 26 illustrates the flow chart of the subroutine for calculating the correlation function between the path of the vehicle V and the selected line segments S mentioned ahove (see block 23G~, while Fig. 26-1 illustrates the calculated 2Q correlation function. The correlation function is calculated by first calculating a maximum dimension L of the CEP associated with the DRP (block 26A)o Then, with reference again ~o Fig. 24A and Fig. 24C, which are also used to explain this correlation test, the two end points EP1, EP2 of the interval L
which are plus or minus L/2 respectively from a best guess (B~) position for the DRPCu are calculated by the computer 12 (block 26B). Next, the computer 12 divides this interval I. into a plurality of positions which are, for example, 40 feet apart (block 26C~. Next, for each such position, the heading h of the street St is calculated for each ~D
distance entry in the above-mentloned heading table lblock 26D). Thereafter, the ~MS heading error for ETA~-4178--SDB8/020 `

~ r~

33~;6 each position (p) along the interval ~ is calculated by the computer 12, using equation (14) (block 26E).
Fig. 27 ill~strates the 10w chart of the subroutine for determining if the correlation function passes certain thresholds (see hlock 23H).
First, the computer 12 finds the position of minimum RMS error (block 27A~, which is shown in Fig ~6-1.
Then, the computer 12 determines if this RMS error is below a threshold (block 27B). If not, the remaining subroutine is bypassed and no most probable segment S is found ~returning to block 23F). If the RMS error is helow a threshold, then the cu~vature of the correlation ~unction at the minimum position is calculated by taking a second order difference of the RMS error vs. position ~block 27C). If this curvature is not above a threshold (block 27D), then the correlation test fails and the remaining subroutine is bypassed (block 27F). If this curvature is ahove the threshold (block 27D), then the computer 12 determines that the correlation calculation passes the test of all thresholds (block 27E~, whereby the position of the RMS minimum error is the best point BP (see block 23I) that becomes DRPCu. If the curvature is above the threshold, then this assures that the correlation parameter has peaked enough.
For example r if the line se~ments S for the distances covered by the heading table are straight, then the second order difference would be zero and the correlation parameter would not contain any position inormation for the DRPCu.
Consequentlv, and with reference again to Fig. 8, assume now that as a result of the multi-parameter evaluation (block 8C), that a more likely -~ ETAK-417~--SDB8/0~0 position for the D~PC can be determined (block 8D), in that there i5 ~ line segment S to which the DRPC
may be u~dated. Therefore, Fig. 2~ is a flow chart showing generally the subroutine for the update (see S block 8E). Thus, ~irst the computer 12 updates the current dead reckoned position DRP to the current updated dead reckoned position DRPCu (block 28A), as will be further described in relation to Fig. 29.
Next, the computer 12 updates the estimate ~f the accuracy of the DRPC (block 28B), as will be described in relation to Fig. 32. N~xt, the sensor means lfi and sensor means 26 are recalibrated (block 28C), as will be descrihed in relation to Fig. 35.
Fig. 29 illustrates the flow chart of the subroutine for updating the DRPC to the DRPCu. If the vehicle has been turning (block 29A), then the XY coordinate data of the DRPC are set to ~he XY
coordinate data of the best correlation point ~P
previously calculated (see block 23I), thereby updating the DRPC to the DRP~ (block 29B). Then, a dead reckoning performance ratio PR is calculated (block 29C), which, for example, is equal to the distance hetween the DRPC and the DRPCu divided by the calculated distance ~D the vehicle V has traveled since the last update of a DRPC to a DRPCu.
This performance ratio PR is used to calculate a certain error in the system 10 ~hat, as previously mentioned and as will be further described, is used for determining the varying rate or rate of growth of the CE~. If the vehicle V has not ~een turning (block 29A), then the DRPC i~ set to the most probable constant course position ~block 79D), as will be described in relation to Fig. 30, followed ~3~

by the calculation of the dead reckoning performance ratio r'R ~block 29C).
Fig. 30 illustrates the flow chart of the subroutine for updating a given DRP to a given DRPCu when the vehicle V is on a c~nstant heading H
~see block 29D). Fig. 30-l also will be used to de~cribe the updating of the DRPC to the DRPCu and shows the DRPC, a given CEP associ.ated with the DRPC
and the most probable line seqment S.
Thus, first the computer 12 calculates the aspect ratio AR of the CEP, which equals ¦RS ¦ . ¦ST ¦
(block 30A). Then, the computer 12 determines if this aspect ratio AR is close to 1 within a threshold (block 30B). If it is, then the update of the DRPC is made to the ~losest point along the most probable segment S ~block 30C). As shown in Fig.
30-1, the closest point is point P3 which is the point at which a line l, drawn through the DRPC and perpendicular to the segment S1, intersects the latter.
If the aspect ratio AR is not close to I
within the threshold ~block 30~, then the computer 12 calculates an angle ~ of the segment S shown in Fig. 30-1 (block 30D). Then, the computer 12 calculates an angle ~ of the major axis of the CEP, as shown in Fig. 30-1, (block 30E). Next, the computer 12 determines if the anyle (~ - ~) is less than a threshold (bl.ock 30F). If it is, then the subroutine proceeds to block 30C. I not, the DRPC
3n is updated to a most probable point (approximately ; the most probable point) on the segment S (block 30G), as will now he described in relation to Fig.
31.

ETAK-4178--SD~8/020 ;6 Fiq. 31 shows the flow chart of the suhroutine for updating the DRP to a most probable point on the most probable segment S (see block 30G). Reference again will also be made to Fig.
S 30-1. First, the computer 12 determines the sides which are parallel ~o the major axis of the CEP, i.e., sides Sl and S~ in the example shown in Fig.
30-1, (block 31A). Next, the computer 12 calculates the points Pl and P2 where the sides S1 and S~
intersect the most probable segment ~ (block 3lB).
Next, the computer 12 calculates the mid-point P~
between point Pl and P2 (block 31C). Then, the computer 12 calculates the closest point P3 (block 31D) in the manner previously described. Next, a distance d between point P3 and point P4 is calculated by the computer 12 (block 31E). Finally, the computer 12 calculates the XY coordinate data of the DR~ (block 31F) in accordance with the cu following equations:

cu (x) = P3 (x) + d cos (a - ~) cos a (15) cu (Y~ P3 (y) + d cos (~ - ~) sin ~ (16) Having now updated the DRPC to the DRPCu, the computer 12 performs the suhroutine shown in Fig. 32 for updating the CEP associated with the DRPC to an updated CFP associated with the DRPCu (see block 28B). If the vehicle has not been~
turlling (block 32~), then the CEP ~is updated based on the constant heading most probable position;~
~hlock 32B), as will be described in Fig 33. If the vehicle has been turning, the CEP will be updated based on the calculation of the correlation ETAK-4178--sDB8/020 :

... ,. .~

3~6 function (block 32C), as will be described in Fig.
3~.
Fig. 33 shows the flow chart of the subroutine for updating the CEP to the CEPu based on the constant heading most probable position ~see block 32s~. Also, reference will be made to Fig.
33-1 which is used to explain the flow chart of Fig.
33 r in which Fig. 33-1 shows a given CEP, the associated DRPC, the DRPC and the resulting CEPu.
First, assume that the computer 12 has calculated the DRPC as described previously in relation to Fig. 30. Then, an anqle ~ of the most probable segment S is calculated (block 33A). Then, the computer 12 calculates a line 11 which is parallel to the most probable segment S and passes through the DRPC (block 33~3, i.e., line 11 also has the an~le Q. Next, points P1 and P2 along the line 11 which intersect the CEP are calculated (block 33C).
Next, the computer 12 ca]culates the distance dl between the points Pl and P2 (block 33D). Next, for the major or longitudinal axis of the CEPu, the distance d2 = d1/~ is calculated ~bloc~ 33~). Then, the computer 12 determines the half axis or distanc~
d3 for the CEPU perpendicular to the most probable segment S, in which d3 is equal to the half-width of the width W of the street St that is fetched from the navigation neighborhood of the map data base (block 33F). The calculated dlstances, d2 and d3, are compared to threshold minimum distances~
according to the map accuracy data fetched from the map data base (block 33G~ to set the minimum size of the CEPU (see Section III.A,2.f). Finally, the XY
coordinate data of the corners R"S"T"U" of the CEPU
arP calculated as follow~s (block 33H):
:
ET~K-4178--SD~R/020 ~ .

~ r~

~335~;

cu (x) + d2 cos ~ - d3 sin ~ (17) Y cu (Y) + d2 sin ~ d3 cos (18) cu (~) ~ d2 cos - d3 sin ~ (19) cu (Y) + d2 sin - d3 cos ~ (20) cu (x) d2 cos a + d3 sin (21) cu (Y) ~ cl2 sin - d3 cos ~ (22) cu (x) - d2 cos ~ - d3 sin a ( 2 3 ) cu (Y) - d2 sin a + d3 cos ~ (24) Fig. 34 shows the flow chart of the subroutine for updatiny the CEP to the CEPU based on the outco~e of correlation function (see block 32C).
Fig. 34-1, which shows ~he most probable se~ment S, the D~PCu and the resulting CEPu, will also be used to describe the flow chart of Fig. 34. Thus, first, the computer 12 calculates an angle (block 34A).
Then, an estimated uncertainty of the position of the DRPCu based on the curvature o~ the correlation function is calculated, i.e.~ the distance d2 (block 34B). Next, the computer 12 determines the half-width, dl, of the street St based on its width W which is fetched from the navigation neighborhood of the map data base ~block 34C). As similarly described above, the calculated distances, dl and d2, are compared to threshold minimum distances according to the map accuracy data fetched from the map data hase to set the minimum size of the CEPu;
(see Section III.A.2f). Next, the updated CEPU is calculated usin~ similar equa~ions as shown for R", as Eollows (block 34D):

cu (x) dl sin ~ * d2 cos ~251 cu (Y) + dl cos ~ d2 sin ~ ~263 ::
' ~
ETAK-4178--SD~8/020 ~ ~

~33`~
-6~-~ litl~ the DRPCu being determined (see block 28A), and the CEP being determined (see block 28~), Fig. 35 now shows the flow chart of the subroutine for recalibrating the sensor means 16 and 26 (see block 28C). If the vehicle V is turning (block 35A), as may be determined in a manner previously descri~bed, then the remaining subroutine is bypassed and the sensor means 16 and 26 are not recalibrated at this time. If the vehicle V is not turning, then the heading sensor means 26 is recalibrated ~block 35B), as will be described more fully below in relation to Fig. 35-1. Next, if the vehicle V did not just finish a turn, then the remainin~
subroutine is bypassed (block 35C). If the vehicle V did just finish a turn, then the distance sensor means 16 is recalibrated (block 35D), as will be described more fully below in relation to Fig. 35-2.
Fig. 35-1 shows a plot of the deviation of the heading sensor means 26 as a function of the output of the heading sensor means 26. This plot is stored on medium 14 as a heading deviation table mentioned previously. Upon updating the DRPC to the DRPCu, the measured heading H of the vehicle ~' and the actual heading h of the street St corresponding to the DRPCu are then known, as previously described. Consequently, with this heading data being available, any error or deviation between the measured heading H and the actual heading h of~ the street St is known. Therefore, the computer 12 can now make an appropriate correction in the heading deviation table corresponding to a particular output of the heading sensor means ~26 to correct a corresponding calibration coefficient stored on ~TAK-4178--SDB8/020 ~3~

medium 14 and, thereby, provide the more accurate advancement of a given DRP to a given DRPC.
With reference to Fig. 35-2, assume that the vehicle V is traveling on a street Stl and makes a right turn onto the street S~2. Assume also that after the turn onto the street St2, the calculation of the DRPC places the vehicle V from position A to either position B, which is short of the street St2, or to position ~' which is beyond the street St2.
Also assume that as a result of thP vehicle navigational algorithm, the DRP at position B or position B' is updated to position C which happens to coincide with the actual location of the vehicle V.
The calibration of the distance sensor means 16 is checked after the vehicle V makes the turn onto the street St2. When the vehicle navigational algorithm updates the DRP to the DRPCu for the first time to position C after the turn is made, the calibration coefficient CD (see Fig. 10) of the distance sensor means 16 is increased or decreased, as follows. If the DRPC placed the position of the vehicle V short of the street St2 within a thxeshold, as shown at point B, the calibration coefficient CD is too low and, therefore, increased. If, however, the DRPC placed the vehicle V beyond the street St2 within a threshold, as shown at ~', the calibration coefficient CD is too high and, therefore, is decreased. As with other caIibration data, the ; distance calibration coefficient CD is stored on the medium 14 and processed by the computer 12 to provide a more accurate DRP.

ETAK-4178-~SDR8/020 -6~-As was mentioned in relation to Fig. 5C-1, and discussed in relation to equations (5)-~12), the CEP may be enlarged at a varying rate as the DRPo is advanced to the DRP as a function of the error variables E~ and ED. Fig. 36 is a flow chart of a subroutine for determining EH and ED. First, the computer 12 calculates a change in heading from information receive~ from the flux gate compass 28 shown in Fig. 2 (block 36A), as a DRP is advanced to a DRPC. Then, the computer 12 calculates the change in heading from information received from the differential wheel sensors 18 of Fig. 2 (block 36B) as the DRPo is advanced to the DRPC.
Next, the computer 12 calculates an error el based on the above calculations (block 36C), as will now be described in detail. As already indicated, heading measurements are obtained from two sources, one being the flux ga~e compass 28 and the other being the differential wheel sensors 18.
The flux gate compass 28 measures the horizontal component of the terrestrial magnetic field and indicates the orientation of the vehicle V relative to magnetic north. The differential wheel sensors 18 measure the rotation of opposing wheels on the same axis of the vehicle V from which an angle A of turning may be calculated, as follows:

A = (DR - DL)/T (27~

where DR is the distance trave~led by the rlght wheel, DL is the distance traveled by the left wheel, and T i5 the track or di~tance between the right and left wheels. E~uation 27 holds true for rear wheels and should be modified for front wheels.

`' ~ : ~ :

3~

~ oth sensor 28 and differential wheel s~nsors 18 are subject to measurement errors. The flux gate compass 2~ will incorrectly indicate the orientation of the vehicle V if the terrestrial magnetic field is distorted (e.g., near large steel structures). Additionally, if the vehicle V is not on a level surface (e.g., driving on a hill), and the compass 28 is not gimbled, the com~ass 28 will incorrectly read due to magnetic dip error. If the compass 28 is qimbled, it will read incorrectly when the vehicle V accelerates and decelerates, again due to magnetic dip error. For these reasons, the compass 28 is not absolutely accurate.
The differential wheel sensors 18 are sub~ect to errors because of wheel slip. If the vehicle V accelerates or decelerates too quickly, one or both of the wheels will slip and the measured distance will be incorrect, whereby the angle A will be incorrectly calculated. Additionally, if the vehicle V turns sharply or fast enough, the wheels will slip due to lateral acceleration and, thereby, incorrectly indicate the distance each wheel traveled. Finally, tlle point of contact of each wheel with the streets can change, making the track T different and, hence, introducing error.
Consequently, the computer 12 makes comparisons between the heading informa~ion from the compass 28 and from the differential wheel sensors 18 to determine how accurate the overall heading measurement is, i.e., to determine el. If both agree, i.e., e1 = 0, the rate of growth of the CE~
will not be affected by this factor. If, however, they disagree, i.e., e1 ~ 0, then the CEP will grow at an increased rate, reflecting the apparently .

' 5~

decreased accuracy of the heading measurement and, ~ence, of the knowledge of the actual location of the vehicle V.
~1ith reference again to Fig. 36, having calculated el (block 36C), the computer 12 now calculates an update performance error e2l as follows tblock 36D~:

e2 ~ K ~ DR Performance Ratio t28) where K = constant, and the DR Performance Ratio (PR) is that described above (see block 29C) Next, the computer 12 calculates EH, as follows (block 36E):

~ (29) where el and e2 are as defined above, and e3 is a basic sensor accuracy of the flux gate compass 28, e.g., sin 4 .07 Then, the computer 12 calculates ED, as follows (block 36F):

ED = e22 + e4~ (30~l where e2 is as defined above, and e4 is the basic accuracy of the distance sens~or means 16, e.g., .01.
Thus, the rate of growth of the CF.P is dependent on one or more factors, including (1) the characteristics of the heading; sensor data that indicate the quality of the sensor data, i.e., e1, (2) the quality of- the previous dead reckoning performance, i.e., e2, (3~ the basic sensor accuracy, i.e., e3 and e4, and (4~ the distance ~D

ETAK-4178--SD~8/020 traveled by the vehicle V, pursuant to equations ~5)-(12).

X. Su~nary of the Vehicle Naviqational Algorithm As the vehicle V moves over streets St identified by the map M, a given DRP will be advanced and updated, and a given estimate of the accuXacy of the DRP
will change accordingly. As this updating occurs, the vehicle symbol 5 on the monitor 38 will be moved relative to the displayed map ~, so that the driver may see the current location of the vehicle V on or near a street St. Accordingly, the driver will then be able to navigate the vehicle V over the streets St to reach a desired destination~ If, for example, the vehicle V were a police car or taxi cab, a communications network ~not shown) also could be employed to send the position data of the vehicle V from the vehicle V to a central station for monitoring the current position of the vehicle V and other similar vehicles V coupled within such a network~
The present invention provides a technique that allows a vehicle V to be reliably and acc~rately navigated. This is accomplished through the maintenance, use and derivation of a significant amount of information, includin~ the position of the vehicle V, the map data base, the estimate of the accuracy of the position of the vehicle V and the updating of the calibration data.
As a result, the present invention makes reasonable decisions as to whether to update a given DRPC. For example, the present invention will n~ot update to a street St that is so far away from a DRP that it is not more probable that the vehicle V is on that street than off all the streets in the navigation neighborhood of the map data base. ~Conversely, an update will occur .
._ . . .

~ r~
3~

to a distant street St if it is computed to be more probable that the vehicle V is on that street.
Furthermore, the vehicle V may move on and off streets St shown in the map M, such as onto driveways, parking lots and new streets St (paved or unpaved) that have not been included in the map M; yet, the vehicle navigational algorithm will accurately track the vehicle V due, in part, to the updating only to positions which are more probable.

XI. Pro~ram Code Listin~s Assembly language code listings of significant aspects of the vehicle navigation algorithm, which may be executed on the IBM PC mentioned above, are included as part of this specification in the form of computer printout sheets. The title, operation an~ general content of these assembly language code listings are as follo~s:
l. NAV - This is the main navigation function which is called to test for and do the update.
2. ~R - This calculates the dead reckoned positions and calls QEP CALC.
3. QEP CALC - This expands the contour of equal pro~ability CEP (or QEP).
4~ STRS~CH - This searches the map data base ; 25 for streets and performs part of the multiparameter evaluation - particularly~ this evaluates the heading parameter, calls INQEP (see below), calls SFCONNECT ~see below) and evaluates the closeness of two line segments S.
5. INQEP - This determines the intersection of a line segment S with the CEP.
6. SFCONNECT - This determines if two streets St are connected.

~` ~
., ~
ETAK-4178--SD~8/0~0 :

3~i
7. ~CORCALC - This performs a binary search correlation calculation to evaluate the correlation parameter, including calling NPAM; MCBUF and CORREI,ATE
(see below) - if the vehicle V is turning, this also calculates DRPCu.
8. NPAM - This finds a point on a segment S
that is a specified distance away from a ~iven point on some segment S where distance is measured along a specified sequence of segments S.
9. MC~UF - This performs map course buffering~ particularly this calculates the DR heading and compares it with the street heading.
10. CORRELATE - This calculates the RMS error at the particular point determined by NPAM.
15 11. IPTDIST - This calculates the intersection of a line (extending from a point) perpendicular to another line and the distance from the intersection to the point.
12. ~EPMOD - This updates CRP to CEPU, and determines DRPCu if the vehicle is not turning.
13. UPDSTCAL - This updates the calibrat,ion coefficients for the distance sensor means 16.
14. DEVCORR - This updates the calibration coefficients for the heading sensor means 26.
25While the invention has been particularly shown and described with reference to preferred embodiments thereof, it will be understood by those skilled in the art that the foregoing and other changes in form and detail may be made therein without departing from the spirit and scope of the invent~ion.

`~ ETAK-4178--SDB8/020 ~7 ~ ~AV

Q~IGMODEL EQU O
lnclude prologue.h @CODE ENDS
@DATAI SEGMENT
dw ~DATAI ENDS
~CODE SEGM~NT BYTE PUBLIC 'CODE' @CODE ENDS
@DATAU SEGMENT
db 16 DVP (?) public NAV
@DATAU ENDS
@DATAB SEGMENT
extrn IDRPX:word extrn ID~PY:word extrn COMPASS:word extrn DELTA:word extrn ICOURSE:word extrn TURN:word extrn STGHTDST:word extrn MAPCOUR:word extrn ONSTRTF:word extrn NORM:word extrn DISTCAL:word -71- ~AV

@DATAB ENDS
QCODE SEGMENT BYTE PUBLIC 'CODE' @CODE ENDS
extrn STRSRCH:near extrn UPNORM:near extrn BCORCALC:near extrn QEP MOD:near extrn lATAN2:near extrn UPDSTCAL:near extrn DEVUPDT:near extrn ROTUPDT:near extrn CNTRUPDT:near QCODE SEGMENT BYTE PUBLIC 'CODE' NAV PROC NEAR
.00: ;35 push BP
move BP,SP
sub SP,14 mov AX,QIW
or AX,AX
je .048 ¦`
mov AX,COMPASS
mov QUW+4,A~
mov AX,COMPASS
mov @UW+8,AX
; ~ mov AX,DELTA

:` ~

mov Q UW+ 6, AX
mov AX, DELTA
mov ~ U~+ 10, AX
mov AX, O
mov @IW,AX
mov @UW+12 ,AX
mov @UW+l 4, AX
mov DX, O
mov @UW,AX
mov ~ UW+ 2, DX
.048: ;80 mov AX, Q
mov -12[BP] ,AX
nlov ONSTRT~, AX
mov AX, TURN
or AX, AX
j e . OA4 cmp WORD PTR Q UW+ 12, O
jne . 087 mov AX, 1 mov @ UW+ 12, AX
pu sh WORD PTR Q UW+ 2 push WORD PTR @UW
push WORI) PTR @UW+8 push WORD PTR QUW+l O
pu sh WORD PTR Q UW+ 4 push WORD PTR @ UW+6 ca 11 UPNOR~
add SP, 12 .087: ; 91 `-mov AX, 1 pu sh AX
call STRSRCH
add SP, 2 cmp AX, 0 `

. ~

. :., ., . - :

.

3~;

je .Og9 call BCORCALC
.099: ;94 mov AX,i mov @UW+14,AX
mov SP,BP
pop BP
ret .OA4: ;97 mov AX,@UW+12 or AX,AX
je .OC8 mov AX,l MOV -12~BP~,AX
mov AL,O
mov @UWt12,AX
mov AX,DELTA
mov @~W~lO,AX
mov AX,COMPASS
mov QUW+8,AX
.OC8: ;104 mov AX,O
push AX
call STRSRCH
add SP,2 mov -14EBP],AX
cmp ~Y,O
jne .0104 mov AX,O
mov -12[BP~,AX
mov AX,DELTA
mov QUW~6,AX
mov AX,COMPASS
mov QUWt4,AX
mov AX,STGHTDST

mov DX, STGHTDST+2 mov ~UW,AX
mov ~ UliJ+2, DX
mov SP, BP
pop BP
ret .0104: ;110 mov AX, IDRPX
mov DX, ID~PX+2 mov - 8 [BP], AX
mov -6 [BP],DX
mov AX, IDRPY
mov DX, IDRPY+ 2 mov -4 [BP~ ,AX
mov -2 [BP],DX
push WORD PTR -14 tBP]
call QEP MOD
add SP, 2 or AX, AX
jne ?l jmp . 0 lDD
?1:
mov SI, 14 [BP~
mov AX, +4 ~SI~
mov SI,-14 ~BP]
sub AX, [SI]
push AX
mov SI,-14 [BP]
mov AX,+6 [SI~
mov SI,-14 ~BP]
sub AX,+2 rSI~
push AX :
ca l l IATAN ~ ~
add SP, 4 ~ :
mov -1~ [BP~

~.
' :

3S~;
75~ ~3AV

mov AX,-12EBP]
or AX,AX
je .016F
push WORD PTR -2~BP]
~ush WORD PTR -4[BP]
push WORD PTR -6[BP]
push WORD PTR -8[BP]
push WOR~ PTR ~UW+4 call UPDSTCAL
add SP,10 .016F: ;120 mov AX,@UW+14 or AX,AX
je .01~5 pUsh WORD PTR -10fBP]
push WORD PTR COMPASS
call DEVUPDT
add SP,4 push WORD PTR -10[BP]
push WORD PTR COMPASS
call ROTUPDT
add SP,4 push WORD PTR -10[BP]
push WORD PTR COMPASS
call CNTRUPDT
add SP,4 mov AX,0 mov @UW+14,AX
.OlA5: ;126 mov AX,-10[BP]
sub AX,ICOURSE
cmp AX,-16384 jge .01B4 jmp SHORT .01C1 .OlB4: ;128 ~., '33~6 mov AX , - 1 0 [BP ]
sub ~X, ICOURSE
cmp AX, 16384 j le . 01CE
. 01Cl: ; 128 mov AX ,--1 0 [ BP ]
cwd add AX,-32768 adc DX, 0 jmp SHORT . 011:)2 . 01CE: ; 128 mov AX ,--1 0 [ BP
cwd .QlD2: ; 128 mov MAPCOUR, AX
mov AX, 1 mov ONSTRTF, AX
. 0 lDD : , 1 3 2 mov AX, DELTA
mov @UW+~ ,AX
moV AX, COMPASS
mov QUW+4, AX
mov AX, STGHTDST
mov DX, STGHTDST+2 mov @UW,AX
mov ~UW+2 ,DX
mov AX, O
mov -12 [BP] ,AX
mo~ SP, BP
pop BP
ret NAV ENl~P

~CODE ENDS
~CODE SEGMENT BYTE PUBLIC ' CODE ' ``"` .

.

include epilogue . h end ~ , . .
....~.
..." ~_ :

.

Q~IGMODEL EQU 0 include prologue.h @CODE ENDS
@DATAU SEGMENT
db 42 DUP (?) public DR
@DATAU E~DS
QDATAB SEGMENT
extrn ICOURSE:word extrn COMPASS:word extrn IDRPX:word extrn IDRPY:word extrn IDISTX:word extrn IDISTY:word extrn IDIST:word extrn IQEPX:word extrn IQEPY:word extrn PERP ER:word extrn MAPCOUR:word extrn ONSTRTF:word ~ lf ~ ~ ~

extrn COUR TC:word extrn DELTA:word extrn INITDR:word extxn TURN:word extrn SIGHTDST:word extrn COURDIFF:word ~DATAB ENDS
@COpE SEGMENT BYTE PUBLIC ' CODE ' @ CODE ENDS
extrn COUR MOD:near extrn LABS:near extrn WCFLTR:near extrn RDSEN50R:near extrn DRC~LC:near extrn SDEV:near extrn ICOS:near extrn ISIN:near extrn ISQRT:near extrn QEP CALC: near 3~

extrn QABS:near QCODE SEGMENT BYTE PUBLIC 'CODE' DR PROC NEAR
@CODE ENDS
extrn $LRSSHIFT:near extrn $LMUL:near extrn ~LLSHIFT:near QCODE SEGMENT BYTE PUBLIC 'CODE' .00: ;4 push BP
mov BP,SP
sub SP,24 lea SI,-14[BP]
- push SI
lea SI,-16[BP]
push SI
lea SI,COMPASS
push SI
~all RDSENSOR
add SP,6 mov AX,INITDR
or AX,AX
jne ?l jmp .0C5 ?1:
mov AX,COMPASS
mov @UW+6,AX
mov AX,0 mov DELTA,AX
mov @UW~8,AX
mov INITDR,AX

~i3~35~;
-81- D~

lea SI,~UW+16 mov lSI],AX
lea SI,@UW~14 mov [SI],AX
lea SI,QUW+12 mov ~SI],AX
mov AX,@UW+6 lea SI,QUW+22 mov [SI],AX
lea SI,@UW+20 mov lSI],AX
lea SI,QUW+18 mov [SI],AX
mov AX,COMPASS
lea SI,@UW+28 mov [SI],AX
lea SI,@UW+26 mov [SI]~AX
lea SI,QUW+24 mov [SI],AX
mov AX,0 mov ~UW~32,AX
mov @UW+30,AX
mov AX,-16[BP]
mov QUW,AX
mov AX,-14[BP]
mov @UW~2,AX
mov AX,COMPASS
mov QUW+4,AX
mov AX,3393 mov DX,3 mov @UW+36,AX
mov @UW+38,DX
mov AX,0 33~;

mov DX, 0 mov STGHTDST,AX
mov STGHTDST+2,DX
mov AX, COMPASS
mov QU~+40 ,AX
mov l~X ~ O
mov TURN, AX
.0C5 ;114 lea SI, IDIST
push SI
lea SI,-22 [BP]
push SI
mov AX,-16 [BP]
sub AX, @UW
push AX
moY AX,-14 ~BP]
sub AX, @UW+2 push AX
cal l DRCALC
add SP, 8 mov AX, IDIST
mov DX, IDIST~2 mov BX, @ UW+3 6 mov Cx, @UW+38 add BX, AX
adc CX, DX
mov @UW+36 ,BX
mov Q USI+3 8, CX
mov AX, COMPASS
sub AX, QUW+4 mov -24 [BP] ,AX
mov AX,-22 [BP~
add @U~+6 ,AX
mov AX, COMPASS

. . ~

`:

~83- DR

sub AX,@U~+6 mov DELTA,AX
mov AX,@UW+36 mov DX,@UW+38 cmp DX,3 jge ?2 jmp .02lA
?2:
jne .0139 cmp AX,3392 ja ?3 jmp .021A
?3:
.013~: :123 mov AX,0 -mov DX,0 mov QUW+36,AX
mov @UW~38,DX
mov AX,3 push AX
inc WORD PTR @UW+30 mov AX,@UW+30 pop BX
cwd idiv BX
mov @UW~30,DX
mov AX,DELTA
lea SI,@UW+12 mov DX,~UW+30 shl nx, 1 add SI,DX
mov [SI],AX
mov AX,QUW+6 lea SI,QUW~18 s mov DX,@UW+30 shl DX,1 add SI,DX
mov [SI],AX
mov AX,COMPASS
lea SI,@UW+24 mov DX,QUW+30 shl DX,1 add SI,DX
mov [SI],AX
mov AX,@UW~32 or AX,AX
je .0lA0 dec WORD PTR @UW+32 jmp .02lA
.0lA0 ;135 lea AX,@UW+12 push AX
call SDEV
add SP,2 cmp AX,728 jle .0lFF
mov AX,3 ~ov @UW~32,AX
lea AX,@UW+24 push AX
call SDEV
add SP,2 push AX
lea AX,@UW~18 push AX
call SDEV
add SP,2 pop DX

, . ~ :

cmp AX,DX
jge .OlED
mov AX,IDIST
mov DX,IDIST+2 push DX
push AX
mov AX,18 mov DX,O
push DX
push AX
call $LRSSHIFT
pop AX
pop DX
jmp SHORT .OlF9 .OlED ;140 mov AX,COUR TC
mov DX,3 mov CX,DX
shl AX,CL
cwd .OlF9 ;140 mov @UW~34,AX
jmp SHORT .02lA
.OlFF: ;142 mov AX,IDIST
mov VX,IDIST+2 push DX
push AX
mov AX,16 mov DX,O
push DX
push AX
call $LRSSHI~T
pop AX

l~a~3~

pop DX
mov @ ~ 3 4, AX
. 021A ; 149 push WORD PTR @UW+34 push WORD PTR QUW+8 push WORD PTR DELTA
call COIJR MOD
add SP, 6 mov @ UW+ 8, AX
mov AX, @UW+8 add AX, @UW+6 mov ICOURSE,AX
mov AX, ICOURSE
mov DX, ICOURSE
sub DX, @UW+10 mov BX, 1 mov CX, BX
sar DX, CL
sub AX,DX
mov -20 [BP] ,AX
push WORD PTR -20 [BP]
ca l l IC(:)S
add SP, 2 mov DX, 4 mov CX, DX
sar AX, CL
cwd pu sh DX
push AX
mov AX, IDIST
mov DX, IDIST+2 push DX
push AX
mov AX,5 ~p~

mov DX,O
push DX
push AX
call $LRSSHIFT
pop AX
pop DX
push DX
pu sh AX
call $LMUL
pop AX
pop DX
push DX
pu sh AX
mov AX, 6 mov DX,O
push DX
push AX
call $LRSSHIFT
pop AX
pop DX
mov IDI STX, AX
mov IDISTX+2,DX
push WORD PTR -20 [BP]
call ISIN
add SP, 2 mov DX,4 mov CX,DX
sar AX,CL
cwd push DX
push AX
mov AX,IDIST
mov DX,IDIST+2 push DX

.
., push AX
mov AX,5 mov DX,O
push DX
push AX
c~ LRSS~IFT
pop AX
pop DX
push DX
push AX
call $LMUL
pop AX
pop DX
push DX
push AX
mov AX,6 mov DX,O
push DX
push AX
call $LRSSHIFT
pop AX
pop DX
mov IDISTY,AX
mov IDISTY~2,DX
mov AX,IDISTX
mov DX,IDISTX~2 mov BXJIDRPX
mov CX,IDRPX~2 add BX,AX
adc CX,DX
mov IDRPX,BX
mov IDRPX~2,CX
mov AX,IDISTY
mov DX,IDISTY+2 y, .~ . ~

mov BX,IDRPY
mov CX,IDRPY+2 add BX,AX
adc CX,DX
mov IDRPY,BX
mov IDRPY+2,CX
mov AX,PERP_ER
mov DX,PERP ER+2 mov -12~BP],AX
mov -10[BP],DX
push WORD PTR IDIST~2 push WORD PTR IDIST
push WORD PTR DELTA
call WCFLTR
aad SP,6 push DX
push AX
mov AX,16 mov DX,0 push DX
push AX
call $LRSS~IFT
pop AX
pOp DX
mov -8~BP],AX
mov -6[BP],DX
mov AX,PERP_ER
mov DX,PERP_ER~2 push DX
push AX
mov AX,16 mov DX,0 push DX
push AX

call $LRSSHIFT
pop AX
pop DX
mQv -4[BP~,AX
mov -2[BP],DX
push WORD PTR -6[BP]
push WORD PTR -8[BP]
push ~YORD PTR -6[BP]
push WORD PTR -8~BP]
call ~LMUL
PoP AX
pop DX
push WORD PTR -2[BP]
push ~ORD PTR -4[BP]
push WORD PTR -2[BP]
push WORD PTR -4~BP]
call $LMUL
pop BX
pop CX
add AX,BX
adc DX,CX
push DX
push AX
call ISQRT
add SP,4 cwd push DX
push AX
mov AX,16 mov DX,0 push DX
push AX
call $LLSHIFT
pop AX
.

~33~

pOp DX
mov PERP_ER,AX
mov PERP ER~2,DX
call QEP CALC
mov AX,-12[BP]
mov DX,-10[BP]
mov PERP ER,AX
mov PERP_ER+2,DX
push WORD PTR IDIST+2 push WORD PTR IDIST
call I.ABS
add SP,4 mov BX,STGHTDST
mov CX,STGHTDST+2 add BX,AX
adc CX,DX
mov STGf~TDST,BX
mov STGHTDST+2,CX
mov AX,ICOURSE
sub AX,@UW+40 push AX
call QABS
add SP,2 cmp AX,COURDIFF
jge ~042F
mov AX,20 cwd push DX
push AX
mov AX,16 mov DX,0 push DX
push AX
call $LLSHIFT

~3~

pOp AX
pOp DX
cmp DX,STGHTDST+2 ja .0426 jne .041D
cmp AX,STGHTDST
jae .0426 .041D: ;172 mov AX,0 mov TURN,AX
jmp SHORT .042D
.0426: ;172 mov AX,l mov TURN,AX
.042D: ;172 jmp SHORT .044C
.042F: ;173 mov AX,ICOURSE
mov @UW+40,AX
mov AX,0 mov DX,0 mov STGHTDST,AX
mov STGHTDST,+2,DX
mov AX,1 mov TURN,AX
.044C: ;177 mov AX,-16~BP~
mov @UW,AX
mov AX,-14[BP]
mov @UW+2,AX
mov AX,COMPASS
mov QUW+4,AX
mov AX,ICOURSE
mov @UW+10,AX

~;g3~

mov SP,BP
pop BP
ret DR E~1DP
@COD~ ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' include epilogue.h end @BIGMODEL EQU 0 include prologue.h @CODE ENDS
@DATAC SEGMENT
db 101,114,114,111,114,32,105,110,32,102 db 117,110,99,116,105,111,110,32,113,101,112,99,97,108,99,0 db 101,114,114,111,114,32,105,110,32,113 db 101,112,9g,97,108,99,32,32,115,119,105,116,99,104,32,0 QDATAC ENDS
QCODE SEGMENT BYTE PUBLIC 'CODE' public QEPCALC
@CODE ENDS
QDATAB SEGMENT
extrn QEPX:word extrn QEPY:word extrn IQEPX:word extrn IQEPY: word extrn DRPX:word extrn DRPY:word extrn PERP ER:word extrn PARL ER:word extrn DISTX:word ' . '~1~

extrn DISTY:word @DATAB ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' ~CODE ENDS

extrn PUTS:near @CODE SEGMENT BYTE PUBLIC 'CODE' QEPCALC PROC NEAR
@CODE ENDS
extrn $DLOAD:near extrn $DCVTL~near extrn $DCEQ:near extrn $DMUL:near extrn $DSUB:near extrn $DSTORE:near QDATAI SEGMENT
dw 0,0,0,0 dw 0,0,0,0 @DATAI ENDS
ex~rn $DCGR:near extrn $DCLE:near ~DATAI SE~MENT
dw 0,0,0,0 dw 0,0,0,0 @DATAI ENDS

. ~ /

33~

extrn $DADD:rl~ar extrn $DNEG:near extrn $ISWITCH:near extrn $LCVTD:near QCODE SEGMENT BYTE PUBLIC 'CODE' ~ ;16 push BP
mov BP,SP
sub SP,46 lea AX,DISTX
push AX
call $DLOAD
mov AX,O
cwd push DX
push AX
call ~DCVTL
call $DCEQ
pop AX
or AX,AX
je .03C
lea AX,DISTY
pu~h AX
call $DLOAD
mov AX,0 cwd push DX
push AX
call $DCVTL
call ~$DCEQ~

..

3~

pop AX
or AX,AX
je . 03C
mov SP,BP
pop BP
ret .03C: ;3 mov AX, O
mov -4 f BP],AX
.042: ;38 cmp WORD PTR - 4 [ BP ], 4 j ge . OA2 lea AX, DI STX
push AX
ca 11 $DLOAD
lea SI,QEPY
mov AX,-4 [13P]
shl AX,l shl AX,l shl AX,l add SI !AX
push SI
call $DLoAD
call $I)MUL
lea AX,DISTY
push AX
call ~LOAD
lea Sl, QEPX
mov AX,-4 [BP]
shl AX, 1 ~hl AX, 1 shl AX, 1 add SI ,AX
push SI

call $DLOAD
call $DMUL
call $DSUB
l~:a SI ,-46 [BPJ
mov A.X,-4 [BP]
shl AX,l shl A~f,l shl AX, 1 add SI ,AX
push SI
call $DSTORE
add SP, 8 . O9D: ; 39 inc WORI~ PTR -4 [BP]
jmp SHORT . 042 .OA2: 39 mov AX, 4 mov -2 [BP] ,AX
lea SI ,~22 [BP]
push SI
call $DLOAD
lea AX, QIW
push AX
call $DLOAD
call $DCGR
pop AX
or AX,AX
j e . ODE
lea SI,-46 [BP]
push SI
call $DLOAD
lea AX, @~W+8 push AX
call $DLOAD

_^ : . .'Æ ~

~ f - g 9- EPCALC

call $DCLE
pOp AX
or AX,AX
je . ODE
m<~v AX, O
call -2 [BP], AX
j mp SHORT . 014 0 . ODE: ; ,o,3 mov ~.X, O
mov -4 ~BP] ,AX
.OE4: ;44 cmp WORD PT~ - 4 [ BP ], 3 jge . 014Q
lea SI ,-46 ~E~P]
mov AX,-4 [BP]
shl AX,l shl AX,l shl AX,l add SI ,AX
push SI
call $DLOAD
lea AX, ~IW+16 push AX
call ~DLOAD
call $DCGR
pop .~X
or AX, A~C
je . 013B
lea SI,-46 IBP]
mov AX,-4 [BP]
add AX, 1 shl AX,1 shl AX ,1 shl AX,l ~;

3~i add SI ,AX
push SI
call $DLOAD
lea ~X, @IW~24 push AX
ca l l ~DLOAD
call $DCLE
pop AX
or AX,AX
je . 013B
mov AX,-4 [BP]
add AX, 1 mov -2 ~BP] ,AX
. 013B: ; 47 inc WORD PTR -4 [BP]
jmp SHORT . OE4 . 0140: ; 48 cmp WORD PTR -2 tBP] ,4 jne . 0158 mov AX, O
mov -2 [BP] ,AX
lea AX, @SW
push AX
call PUTS
add SP, 2 .0158: ;59 mov AX,-2 rBP~
mov -4 [BP] ,AX
mov AX, O
mov -6 [BP],AX
. 0164: ; 59 cmp WORD PTR - 4 [ BP ], 4 jge . 0182 mov AX,-6 [BP]

35~
~101- QEPC~C

lea SI,-14 [BP]
mov DX,-4 [BP]
sh 1 DX , l add SI, DX
mov [SI] ,AX
.017A: ;59 inc WOE~D PTR -4 [BP]
inc WOFcD PTR -6 ~BP]
jmp SHORT , 0164 .0182: ;59 mov AX, O
mov -4 [BP] ,AX
. ~188: ; 60 mov AX,-4 rBP]
cmp AX, -2 [BP]
jge . OlA7 mov AX,-6 [BP]
lea SI,-14 [BP]
mov DX,-4 [BP]
shl DX, 1 add SI ,DX
mov rSI] ,AX
.019F: ;60 inc WORD PTR -4 [BP]
inc h1ORD PTR -6 ~BP~
jmp SHORT . 0188 .OlA7: ;60 mov AX, Q
mov -4 [BP] ,AX
. OlAD: ; 65 cmp ~ORD :PTR -4[BP] ,4 jl ?l jmp . 04A8 ?l `

.

::

f~ r -lea SI,-14[BP]
mov AX,-4[BP]
shl AX,l add SI,AX
mov AX,[SI]
push AX
jmp .04lB
.OlC7: ;67 lea AX,PARL ER
push AX
call $DLoAD
lea . AX,DISTX
push AX
call $DLOAD
call $DMUL
lea AX,PERP ER
push AX
call $DLOAD
lea AX,DISTY
push AX
call $DLoAD
call SDMUL
call $DADD
lea SI,QEPX
mov AX,-4~BP]
shl AX,1 shl AX,1 shl AX,l add SI,AX
push SI
call $DLOAD
call $DADD
push SI
call $DSTo~E
~:

..

. :

-103- Q~PCALC

add SP,8 lea AX,PARL ER
push AX
call $DLOAD
lea AX,DISTY
push AX
call $DLOAD
call $DMUL
lea AX,PERP ER
push AX
call $DLOAD
lea AX,DISTX
push AX
call $DLOAD
call $DMUL
call $DSUB
lea SI,QEPY
mov AX,-4[BP]
shl AX,1 ; shl AX,1 shl AX,l add SI,AX
push SI
call $DLOAD
call $DADD
push SI
call $DSTORE
add SP,8 jmp .0432 .0256: ;71 lea AX,DISTX
push AX
call SDLOAD
lea AX,PARL ER

.

~ r~ ';~1 3~~

push AX
call $DLOAD
call $DNEG
call $DMUL
lea AX,PERP_ER
push AX
call $DLOAD
lea AX,DISTY
push AX
call $DLOAD
call $DMUL
call $DADD
lea SI,QEPX
mov AX,-4[BP]
shl AX,1 shl AX,l shl AX,1 add SI,AX
push SI
call $DLOAD
call $DADD
push SI
call $D5TORE
add - SP,8 l~a AX,DISTY
push AX
call $DLOAD
lea AX,PARL_ER
push AX
call ~DLOAD
call $DNEG
call $DMUL
lea AX,PERP_ER
push AX :

:

, . ..~
.

3~;

call ?DLOAD
lea AX,DISTX
push AX
call $DLOAD
call $DMUL
call $DSUB
lea SI,QEPY
mov AX,-4[BP]
shl AX,l shl AX,l shl AX, 1 add SI ,AX
push SI
call SDLOAD
call $DADD
push SI
call $DSTORE
add SP,8 jmp .0432 .02EB: ;7S
lea AX,DISTX
push AX
call $DLoAD
lea AX,PARL LR
push AX
call $DLOAD
call $DNEG
call $DMUL
l~a AX,PERP ER:
push AX
call $DLOAD
lea AX,DISTY `-push AX
call $DLOAD

;~ .
. ~.,, : :

.

3~6 call $DMUL
call $DSUB
lea SI,QEPX
mov AX,-4[BP]
shl AX,l shl AX,l shl AX,1 add SI,AX
pu h SI
call $DLOAD
call $DADD
push SI
call $DSTORE
add SP,8 lea AX,DISTY
push AX
call $DLoAD
lea AX,PARL ER
push AX
call $DLOAD
call $DNEG
call $DMUL
lea AX,PERP ER
push AX
call $DLOAD
lea AX,DISTX
push AX
call $DLOAD
call $DMUL
call $DADD
lea SI,QEPY
mov AX,-4[BPJ
shl AX,1 shl AX,1 .. . .

. . .

;:

~107- QEPCALC

shl AX,1 add SI,AX
push SI
call $DLOAD
call $DADD
push SI
call $DSTORE
add SP,8 jmp .0432 .038~: ;79 lea AX, PARL ER
push AX
call $DLOAD
lea AX, DISTX
push AX
call $DLOAD
call $DMUL
lea AX, PERP EX
push AX
call $DLOAD
lea AX,DISTY
push AX
call $DLOAD
call $DMUL
call $DSUB
lea SI, QEPX
mov AX, 4 [BP]
shl AX, 1 shl AX ,1 shl AX,l add S I, AX
push SI
call $DLOAD
call $DADD

. .
~: :

push SI
call $DSTORE
add SP,8 lea AX,PARL ER
push AX
call $DLOAD
lea AX,DISTY
push AX
call $DLOAD
call $DMUL
lea AX,PERP_ER
push AX
call $DLOAD
lea AX,DISTX
push AX
call ~DLOAD
call $DMUL
cdll $DADD
lea SI,QEPY
mov AX,-4[BP~
shl AX,1 shl ~X,1 shl AX,1 add SI,AX
push SI
call $DLOAD
call $DADD
push SI
call $DSTORE
add SP,8 jmp SHORT .0432 .040E: ;~3 lea AXj@SW~26 push AX

,. .~ ~, . .

~3~
-109- QE:PCALC

c a l l PUTS
add SP, 2 jmp SHORT ~ 0432 . 041B: ; 85 c al 1 $ I SWITCH
dw 4 dw 3 dw dw dw dw . 040E
dw . 0380 dw . 02EB
dw . 0256 dw . 01C7 . 0432: ; 85 mov AX, O
mov DX, 1 push DX
push AX
c a l l $ DCVTL
lea SI, QEPX
mov AX,-4 [BP]
sh 1 AX, 1 shl AX,l shl AX, 1 add SI ,AX
push SI
call $DLOAD
call $DMUL
cal 1 $I.CVTD
pop AX
pop DX
lea SI, IQEPX

. . , ~

.

-110- QEPC~LC

mov BX, -4 [BP ) sh 1 BX , 1 shl BX,l add SI ,BX
mov [SI] ,AX
mov +2 [SI] ,DX
mov AX, O
mov DX ,1 push DX
pu sh AX
cal 1 $DCVTL
lea SI, QEPY
mov AX, ~ 4 [BP]
shl AX,l shl AX,l shl AX, 1 add SI ,AX
push SI
call $DLOAD
ca 11 $DMUL
call $LCVTD
pOp AX
pOp DX
lea SI, IQEPY
mov BX, -4 [BP ]
shl BX ,1 shl BX ,1 add SI ,BX
mov [SI],AX
mov +2 [SI] ,DX
.04A2: ;88 inc WORD PTR -4 [BP]
j mp . 0 lAD
- . 04A8: ; 88 '; , ~ EPCALC

mov SP,BP
pOp BP
ret QEPCALC ENDP

QCODE ENDS
QCODE SEGMENT BYTE PUBLIC 'CODE' include epilogue.h end c~
... ~.~ ......

35~
-112~ STRSRCH

@BIGMODEL EQU 0 include prologue.h ~CODE ENDS
~DATAI SEGMENT
dw @DATAI ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' @CODE ENDS
QDATAU SEGMENT
db 16 DUP (?) X MIN LABEL WORD

public X MIN

X MAX LABEL WORD

public X MAX

Y MIN LABEL WORD

public Y MIN

Y MAX LABEL WORD

public Y MAX
public STRSRCH
@DATAU ENDS
@DATAB SEGMENT
extrn IQEPX:word .`. .

- - STRSRC~i extrrl IQEPY:word extrn IDRPX:word extrn IDRPY:word extrn ICOURSE:woxd extrn MXDEVDIR:word ~xtrn STRPTR:word ~xtrn STRDAT:word extxn STRCOOR:word extrn LANECOOR:word @DATAB ENDS
~CODE SEGMENT BYTE PUBLIC 'CODE' ~CODE ENDS
extrn PRIORITY:near extrn IN~EP:near extrn IPTDIST:near extrn IATAN2:near extrn DOTPROD:near ~ ::
extrn CVSITSF~near ~ :

extrn SFADD:near :
.,~;~ , ~ .

-114- ~TRSRCH

extrn CLIP:near extrn RTLANE: near extrn CLOSTPT: near extrn SFINCLSV: near extrn SFCONECT:near extrn CVSFTSI:near QCODE SEGMENT BYTE PUBLIC 'CODE' STRSRCH PROC NEAR
@CODE ENDS
~xtrn $LRSSHIFT: near @CODE SEGMENT BYTE PUBLIC 'CODE' ;61 push BP
mov BP,SP
sub SP,122 mov AX,0 mov -76~BP],AX
mov -78[BP],AX
mov -80[BP],AX
~ov AL,l mov -86[BP]/AX
mov AX,32766 mov -48[BP],AX
mov -5Q[BP],AX
mov AX,O
mov STRDAT,AX
mov STRCOOR,AX

..~

lea AX,LANECOOR
mov -96[BP],AX
l~a AX,-122[BP]
mov -106[BP],AX
lea AX,-114[BP]
mov -104[BP],AX
mov AX,STRPT~
mov -30[BP],AX
mov hX,32766 mov QUW+4,AX
mov QUW,AX
mov -64[BP],AX
mov -66~BP],AX
mov AX,-~2766 mov QUW+6,AX
mov ~UW+2,AX
mov -60[BP],AX
mov -62[BP],AX
mov AX,0 mov -84[~P],AX
.06~: ;142 cmp WORD PTR -84 [BP] ,4 jge .OEl lea SI,IQEPX
mov AX,-84[BP]
shl AX,l shl AX,l add SI,AX
mov AX,[SI]
mov DX,+2[SI]
add AX,-32768 adc DX,0 push DX
push AX

'`."' .. ~ .

~33~;

mov AX, 16 mov DX,0 push DX
push AX
call $LRSSHIFT
pop AX
pOp DX
lea SI ,-28 [BP]
mov BX , - 8 4 ~ BP~
shl BX, 1 add S I, BX
mov ~SI] ,AX
lea SI, IS;~EPY
mov AX , -8 4 ~ BP]
shl AX, 1 shl AX,1 add SI ,~X
mov AX, [SI]
mov DX,~2 [SI]
add AX,-32768 adc DX, 0 push DX
push AX
mov AX, 16 mov DX, 0 push DX
push AX
call $LRSSHIFT
pop AX
pop DX
lea SI,-20 [BP]
mov BX,-8g[BPj shl BX ,1 add SI ,BX

-117- STRSRCli mov [SI],AX
.ODC: ;145 inc WORD PTR -84[~P~
jmp SHORT .06D
~OE1: ;145 mov AX,IDRPX
mov DX,IDRPX+2 add AX,-32768 adc DX,0 push DX
push AX
mov AX,16 mov DX,0 push DX
push AX
call $LRSSHIFT
pop AX
pop DX
mov -12[BPJ,AX
mov AX,IDRPY
mov DX,IDRPY~2 add AX,-32768 adc DX,0 push DX
push AX
mov AX,16 mov DX,0 push DX
push AX
call $LRSSHIFT
pop ~X
pop DX
mov -10[BP],AX
mov AX,0 , -118-- STRSP~C}i mov -84 [BP] ,~S
.0129: ;149 cmp WORD PTR - 8 4 [ BP ], 4 jl ?l jmp . OlC1 ? 1 :
lea SI,-28 [BP]
mov AX , -8 4 [BP ]
shl AX,1 add SI ,AX
mov AX, [SI]
cmp AX, QUW
jge . 0155 lea S I, -2 8 [BP]
mov AX , - 8 4 [BP ]
shl AX,l add SI, AX
mov AX, [SI~
mov @UW,AX
, 0155: ; 152 lea SI,-20 [BP]
mov AX , -8 4 [BP~
shl AX,1 add SI ,~X
mov AX, [SI]
cmp AX, @UW+4 jge . 0177 lea S I, -2 0 [BP]
mov AX,-84 ~BP]
shl AX, 1 add SI ,AX
mov AX,`[SI]
mov QIJW~4 ,AX
. 0177:

,, .. ~ ': ~ ' : ~
11 9- STRSRCH

lea SI, -2 8 [BP ]
mov AX,-84 [BP]
shl AX ,1 add SI ,AX
mov AX, [SI]
cmp AX, @UW+2 j le . 0199 lea SI , -2 8 [ BP ]
mov AX,-84 [BP]
shl AX,l add SI ,AX
mov AX, [Sl]
mov ~UW+2 ,AX
. 0199: ; 156 lea S I , - 2 0 [ BP ]
mov AX,-84 [BP]
shl AX ,1 add SI, AX
mov AX, [SI]
cmp AX, @llW+6 j le . 0 lBB
lea SI ,-20 [BP]
mov AX,-84 EBP]
shl AX,l add SI ,AX
mov AX, ~SI3 mov ~ 6 ,AX
. OlBB: ; 158 inc WORD PTR -84 [BP]
jmp . 0129 . OlCl: ; 158 mov AX,-12 ~BP]
sub AX, 20 mov DX, @UW

3~;

add DX,AX
mov ~UW,DX
mov AX , - 1 0 [ BP ]
sub AX, 20 mov DX, QUW+4 add DX, AX
mov @ UW+4, DX
mov PLX,-12 [BP]
add AX, 20 mov DX, ~ 2 add DX,AX
mov ~UW+2, I:)X
mov AX,-10 [BP]
add AX, 2 0 mov DX, @ UW+ 6 add DX, AX
mov @UW~6, DX
mov ~X, @IW
or AX,AX
je . 0247 mov SI,~IW
mov AX, [SI]
sub AX , - 1 2 [BP ]
mov SI ,-106 rPP]
mov [SI] ,AX
mov SI,QIW
mov AX,+4 [SI]
sub AX, 12 [BP~
mov SI,-106 [BP]~ ~ I
mov ~4 [ SI ] , AX
mov SI, @IW
mov AX,+2 [SI]
sub AX,-10 [BP]
mov SI,-106 IBP]

~,i`~ :

~ ~' , .

~2~3~6 -121- STP~SRCH

mov +2[SI],AX
mov SI,@IW
mov AX,+6rSI]
sub AX,-10[BP]
mov 5I,-106[BP]
mov ~6[SI],AX
.0247: ;173 mov SI,-30[BP]
add WORD PTR -30[BP],2 mov AX,[SI]
mov -94[BP],AX
or AX,AX
jne ?2 jmp .0633 ?2 mov SI,-94[BP]
mov SI,+2[SI]
mov -88[BP],SI
mov AX,O
mov -82tBP],AX
.026A: ;178 mov SI,-94[BP]
mov AL,[SI]
cbw sub AX, 1 cmp AX,-82ZBP]
ig ?3 jmp .0690 ?3:
mov AXI-88[BPJ
mav -I02[BP],AX
mov SI,-102[~P]
mov AX,[SI]
mov -74~BP],AX

. ,_ ~33~;
-122- STRSP~Cf7 mov SI ,-102 [BP]
mov AX , +4 [ SI ]
mov -72 [BP] ,AX
mov S I , ~ 1 0 2 [ BP ]
mov AX,+2 [SI]
mov -70 [BP] ,AX
mov SI,-102 [BP]
mov AX,+6 [SI]
mov -68 [BP] ,AX
lea SI, - 6 8 ~ BP ]
push SI
lea SI ~-72 [BP]
push SI
lea SI,-70 [BP]
push SI
lea SI,-74 [E3P]
push SI
call CLIP
add SP, 8 cmp AX, O
jne . 02C2 jmp . 0685 .O?C2: ;186 ~,ov SI , -l 0 2 [ BP ]
mov AX,+4 [SI]
mov SI,-102 ~BP3 sub AX, [SI]
push AX
mov SI~--102 rBP]
mov AX, +6 r SI ]
mov SI,-102 [BP]
sub AX,~2;~SI]
push AX
call IATAN2 :

_ ,, `

' 3~

add SP,4 mov -42[BP],AX
mov AX,-42~BP]
sub AX,ICOURSE
mov -40[BP],AX
mcv AX,MXDEVDIR
neg AX
cmp AX,-40[BP]
jge .0304 mov AX,-40[~P~
cmp AX,MXDEVDIR
jge .0304 jmp SHORT .0315 .0304: ;196 mov AX,MXDEVDIR
cwd add AX,-327~8 adc DX,-l cmp AX,-40[BP]
jle .0317 .0315: ;196 jmp SHORT .0332 .0317: ;196 ,~ mov AX,-32768 mov DX,-l push DX
push AX
- mov AX,MXDEVDIR
cwd pop BX
pop CX
sub BX,AX
sbb CX,DX
cmp BX,-40[BP]

:
:

, .:

3~
-12 4 - STRSRC~I

jl ?4 jmp . 0685 ? 4 :
. 0332: ; 196 mov SI,-102 [BP]
mov AX, [SI]
mov S I , - ~ 6 [BP ]
mov [SI],AX
mov SI ,-102 [BP]
mov AX , +2 [ SI ]
mov SI, ~96 ~BP~
mov +2 [SI],AX
mov S I ,--1 0 2 [BP ]
mov AX,+4 [SI]
mov SI,-96 [BP~
mov +4 [SI],AX
mov SI,-102 [BP]
mov AX,+6 [SI]
mov SI,-9S [BP]
mov +6 [SI] ,AX
push WORD PTR ICOURSE
mov SI,-94 [BP]
mov AL,+1 [SI]
cbw push AX
call PRIORITY
add SP, 2 push AX
push WORD PTR -96 [BP]
c al 1 RTLA~E
add SP, 6 push WORD PTR ~96 ~BP]
call INQEP
add SP, 2 .

or AX,AX
jne ?5 jmp . 0685 ?5:
cmp WORD PTR +4 [BP] ,1 jne . 0g05 lea SI,-4 [BP]
push SI
mov AX, 0 push AX
call CVSITSF
add SP, 2 push DX
push AX
mov SI ,-96 [BP]
mov AX, +6 [SI~
sub AX,-10 [BP]
push AX
call CVSITSF
add SP, 2 push DX
push AX
mov SI ,-96 [BP]
mov AX, ~2 [ SI ]
sub AX , - 1 0 [ BP ]
push AX
call CVSITSF
add SP, 2 push DX
push AX
lea SI,-8 [BP]
push SI
mov AX !~
push AX

3~

call ACSITSF
add SP, 2 push DX
pu sh AX
mov SI, - 96 [BP]
mov AX,+4 [SI]
sulb AX,-12 [BP]
push AX
cal 1 CVSITSF
add SP, 2 push DX
push AX
mov SI,-96 ~BP]
mov AX, [SI]
sub AX , - 1 2 [ BP ]
push AX
call CVSITSF
add SP, 2 pllsh DX
push AX
call CLOSTPT
add SP, 2 8 mov --4 4 ~BP ], AX
jmp SHORT . 0475 . 0405: ; 218 l~a SI, ~4 [BP ]
push S I
mov AX, 0 push AX
ca l l CVSITSF
add SP,2 push DX
push AX
mov SI ,~96 ~BP]

3~6 mov AX,+6 [SI]
sub AX , - 1 0 [ BP ]
push AX
call CVSITSE' add SP, 2 push DX
push AX
mov SI,-96 [BP]
mov AX,+2 [SI]
sub AX, 10 [BP]
push AX
call CVSITSF
add SP, 2 pu sh DX
push AX
lea SI , - 8 [BP ]
push SI
mov AX, O
push AX
call CVSITSF
add SP, 2 push DX
push AX
mov SI ,-96 [BP]
mov AX,+4 r5I]
sub AX , - 1 2 [ 13P ]
push AX
call CVSITSF
add SP, 2 push DX
push AX
mov SI ,-96 [BP]
mov AX, [SI]
sub AX,-12 [bP] ~ :

'` :
~ --.

3~6 push AX
Cd 1 1 CVSIT5F
add SP, 2 push DX
push AX
call IPTDIST
add SP, 28 mov -44 ~8P] ,AX
0475 ; 226 cmp WORD PTR +4 [BP] ,1 jne . 047E
jmp SHORT . 04DE
. 047E: ; 234 push WORD PTR -2 [BP]
push WORD PTR -4 ~BP]
mov SI,-96 [BP]
mov AX,+6 rSI]
sub AX,-10 [BP]
push AX
ca 11 CVS ITSF
add SP, 2 push DX
push AX
mov SI,-96 [BP3 mov AX,+2 ~SI]
sub AX,--10 ~BP]
push AX
ca 11 CVSI TSF
add SP,2 push DX
push AX
push WORD PTR -6 [BP]
push WORI) PTR --8 [BP]
mov SI,-96 [BP]
::

::

3~6 mGv AX,+4 [SI~
sub AX,-12 [BP]
push AX
ca 11 CVS I TSF
add SP, 2 push DX
push AX
mov S I , - 9 6 [ BP ]
mov AX, [SI]
sub AX , - 1 2 ~ BP ]
push AX
ca 11 CVSITSF
add SP, 2 pu sh DX
push AX
c~ 11 SF I NCL SV
add SP, 24 or AX, AX
jne ?6 jmp . 0685 ?6:
.04DE: ;234 push WORD PTR -6 [BP]
pu sh ~ORD P~R - 8 ~ BP ]
mov AX, 127 mov DX,-32768 push DX
pu sh AX
c al 1 SFADD
add SP t 8 mov ~~ [BP] ,AX
mov -6 [BP],DX
push WORD PTR -2 [BP~
push WORD PTR -4 [BP]

L '~

3~~
-130- STRSRC~I

mov AX,127 mov DX,-32768 push DX
push AX
call SFADD
add SP,8 mov -4[BP~,AX
mov -21BP],DX
mov SI,~102[BP]
mov AX,[SI]
sub AX,-12[BP]
mov SI,-104[BP]
mov [SI],~X
mov SI,-102[BP]
mov AX,+4[SI]
sub AX,-12[BP]
mov SI,-104[BP]
mov +4[SI],AX
- mov SI,-102[BP]
mov AX,+2[SI]
sub AX,-10[BP]
mov SI,-104[8P]
mov +2[SI],A~
mov SI,-102[BP]
mov AX,+6[SI]
sub AX,-10[BP]
mov SI,-104[BP]
mov +6[SI],AX
push WORD PTR -106[BP]
push WORD PTR -104[BP]
call SFCONECT
add SP,4 mov -80~BP],AX
mov AX,-86[BP~

~' :
-13 1- STRSRCH

or AX,AX
~e . 05Al push WORD PTR -6 [BP]
push WORD PTR -8 [BP]
c al l CVSFTS I
add SP, 4 mov -58 [BP] ,AX
push WORD PTR -2 [BP]
push WORD PTR -4 [BP]
ca 11 CVSFTSI
add SP, 4 mov -54 [BP] ,AX
mov AX,-44 [BP]
mov 5 0 [ BP ~ , AX
mov AX,-102 [BP]
mov -100 [BP] ,AX
mov AX,-94 [BP]
mov -92 [BP] ,AX
mov AX,-80 [BP]
mov -78 [BP] ,AX
mov AX, O
mov -8 6 [BP] ,AX
jmp . 0685 . 05Al: ; 262 push : WORD PTR -2 [BP]
push WORD PTR --4 [ BP ]
call CVSFTSI
add SP, 4 push AX
mov AX, 0 push AX
push WORD PTR -6 [BP3 push WORD PTR -8 [BP]
call CV5FTSI

:
:
- ;~, `AC`

aad SP, 4 push AX
mov AX,0 push AX
push WORD PTR -54 [BP]
mov AX, O
pu sh AX
push WORD PTR -58 [BP]
mov AX, O
push AX
call DOTPROD
add SP, 16 cmp DX,0 jl . 0~35 jne . 05E3 cmp AX, 0 jbe . 0635 . 05E3: ; 267 mov AX,-80 [BP]
cmp AX,-78 [BP]
j le . 0 5 ED
j mp SHORT . 0 5FD
. 05ED: , 270 mov AX,-80 [BP]
cmp AX,-78 ~BP]
jne . 0633 mov AX, -4 4 [BP]
cmp AX,-50 [BP]
jge . 3633 .05FD: ;270 push WORD PTR -6 [BP]
push WORD PTR ~ - 8 [ BP ]
call CVSFTSI
add SP, 4 3~;

mov -58 [BP] ,AX
push WORD PTR -2 [BP]
push WORD PTR -4 [BP]
ca 11 CVSFTSI
add SP,4 mov -54 [BP] ,AX
mov AX,-44 [BP]
mov -50 [BP] ,~X
mov AX,-80 [BP]
mov -78 [BP] ,AX
mov AX,-102 [BP]
mov -100 [BP] ,AX
mov AX , -94 [BP ]
mov - 92 [BP] ,AX
.0633: ; 278 jmp SHORT .0685 .0635: ; 278 mov AX,-80 [BP]
cmp AX,-76 [BP]
jle ~ 063F
jmp SHORT .064F
.063F: ; 281 mov AX,-80 [BP]
cmp AX,-76 [BP]
jne .0685 mov AX,-44 [BP]
cmp AX,-48 [BP]
jge .0685 .064F: ; 281 push WORD PTR -6 [BP]
push WORD PTR -8 [BP]
call CVSFTSI
add SP,4 mov -56 ~BP] ,AX

3~

push WORD PTR -2[BP]
push WORD PTR -4[BP]
call CVSFTSI
add SP,4 mov -52[BP],AX
mov AX,-44[BP]
mov -48[BP],AX
mov AX,~80[BP]
mov -76[BP],AX
mov AX,-102[BP]
mov -98[BP],AX
mov AX,-94~BP]
mov -90[BP],AX
.0685: ;295 inc WORD PTR -82[BP]
add WORD PTR -88[BP],4 jmp .026A
.0690: ;235 jmp .0247 .0693: ;296 cmp WORD PTR -50[BR],0 jne .069F
mov AX,l jmp SHORT .06A2 .069F: ;299 . mov AX,-50rBP]
.06A2: ;29~
mov -50[BP],AX
cmp WORD PTR -86rBP],O
jne .06FF
cmp WORD PTR -48~BP]i32766 jge .06FD
mov AX,-78[BP]
cmp AX,-76[BP]

:
`

' . . ~
' jle .06BD
jmp SHORT .0708 .06BD: ;310 ~ov AX,-78[BP]
cmp AX,-76~BP]
jge .06C8 jmp .078A
.06C8: ;31~
mov AX,-48[BP]
add AX,-S0[BP]
cmp AX,30 jge .06D5 jmp SHOP~T .0701 .06~5: ;319 mov AX,-50[BP]
push AX
mov BX,100 mov AX,-48[BP]
imul BX
pop BX
cwd idiv BX
mov -46[BP],AX
cmp WO~D PTR -46[BP],300 jle .06Fl jmp SHORT .0708 .06Fl: ;323 cmp WORD PTR -46[BP],33 jge .06FB
jmp .078A
.06FB: ;326 jmp SHORT .0701 .06FD: ;329 jmp SHORT .0708 .,;,~"~

~136- STRSRCH

. 06FF: ; 331 jmp SHORT . 0701 . 0701: ; 334 mov AX, 0 mov SP, BP
pop BP
ret . 070~: ; 337 lea AX, ~UW+8 mov ~ IW, AX
mov AX,-92 [BP]
mov STRDAT, AX
mov AX,-100 [BP]
mov STRCOOR, AX
mov SI,-10û [BP]
mov AX, [SI]
mov S I , - 9 6 [13P]
mov [SI] ,AX
mov SI,~IW
mov [SI] ,AX
mov SI,-l00 [BP]
mov AX,+4 [SI]
mov SI,-96 [BP]
mov +4, [SIl ,AX
mov SI, @I~
mov +4 [SI],AX
mov SI,-100 [BP]
mov AX,+2 ~SI]
mov SI , - 9 6 [ BP ]
mov +2 [ SI ] , AX
mov SI, @IW
mov +2 [SI],AX
mov SI,-l00 [BP]
mov AX ,-6 [SI]

;
, , -137- STRSRC~

mov SI ,-96 [BP]
mov +6 [SI] ,AX
mov SI, @IW
mov ~6 [ SI ] ,AX
push WORD PTR ICOURSE
mov SI,-92 [BP]
mov AL,+1 [SI]
cbw push AX
cal 1 PRIORITY
add SP, 2 push AX
push WORD PTR -96 ~BP]
cal 1 RTI~NE
add SP, 6 mov AX,-96 [BP]
mov SP,BP
pop BP
ret . 078A: ; 350 lea AX, @UW+8 mov @IW,AX
mov AX,-90 rBP]
mov STRDAT, AX
mov AX,-98 [BP]
mov STRCOOR, AX
mov SI,-98 [BP3 mov AX, ~SI]
mov SI,-96 [BP]
mov [SI] ,AX
mov SI,@IW
mov [SI] ,AX
mov SI,-98 [BP]
mov AX,+4, ~9I]

'~

.

3~6 mov SI/-96~BP]
mov +4~SI],AX
mov SI,@IW
mov +4~SI],AX
mov SI,-98[BP]
mov AX,+2[SI]
mov SI,-96[BP]
mov -t2[SI],~
mov SI,@IW
mov +2[SI],AX
mov SI,~8[BP]
mov AX,+6[SI]
mov SI,-96~BP]
mov +61SI],AX
mov SI,@IW
mov +6[SI],AX
push WORD PTR ICOURSE
mov SI,-90[BP]
mov AL,~l[SI]
cbw push AX
call PRIORITY
add SP,2 push AX
push WORD PTR -96[BP]
call RTLANE
add SP,6 mov AX,-96[BP]
mov SP,BP
pop BP
ret STRSRCH EN~P

~CODE ENDS

3~

@CODE SEGMENT BYTE PUBLIC 'CODE' include epilogue.h -~ :
' ?'.~ `
'`~` ~
~.

~. :

35~

include prologue.h public INQEP
@CODE ` ENDS
@DATAB SEGMENT
extrn IQEPX:word extrn IQEPY:word ~DATAB ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' @CODE ENDS
extrn CVSLTSF:near extrn CVSITSF:near extrn CVSFTSL:near extrn SFXPROD:near extrn INT2LONG:n ar extrn SFCMP:near @CODE SEGMENT BYTE PUBLIC 'CODE' INQEP PROC NEAR
.00: ;27 push BP
mov BP,SP
sub SP,72 mov AX,0 , ~ .

~233~

mov -22 [BP) ,AX
.0C: j43 cmp WORD PTR -22 [BP] ,4 jge . 06A
lea SI, IQEPX
mov AX,-22 [E~P]
shl AX ,1 shl AX, 1 add SI,AX
pu s h WORD PTR ~ 2 [ S I ]
push WORD PTR [ S I ]
ca l l CVSLTSF
add SP,4 lea SI,-72[BP]
mov BX,~22[BP]
shl BX,l shl BX,1 add SI,BX
mov [SI],AX
mov +2[SI],DX
lea SI,IQEPY
mov AX,-22[BP]
shl AX,l shl AX,1 add SI,AX
push WORD PTR ~2[SIl push WORD PTR [SI]
ca 11 CVSLTSF
add SP, 4 lea SI , -5 6 [ BP ]
mov BX,-22~BP]
shl BX,1 shl BX,l add SI,BX

~ .. X-mov [SI] ,AX
mov +2 [ S I ] , DX
.065: ,46 inc WORD PTR -22 [BP]
jmp 9HORT . 0C
.06A: ;46 mov SI,+4 [BP]
push WORD PTR [SI]
call INT2LONG
add SP, 2 pu sh DX
pu sh AX
call CVSLTSF
add SP, 4 mov -20 [BP] ,AX
mov -18 [BP] ,DX
mov SI,+4 [BP]
push WORD PTR +5 [SI]
call INT~LONG
add SP, 2 push DX
push AX
call CVSLTSF
add SP, 4 mov -16 [BP] ,AX
mov -14 [BP] ,DX
mov SI,~4 [BP]
push WORD PTR +2 [SI]
call INT2LONG
add SP, 2 pu sh DX
push AX
call CVSLTSF
add SP, 4 . ., I y~ . .

3~;
-143- I~J~EP

mov -12[BP],AX
mov -l0[BP],DX
mov SI,~4[BP]
push WORD PTR ~7[SI]
call INT2LONG
add SP,2 push DX
pUsh AX
call CVSLTSF
add SP,4 mov -8[BP],AX
mov -6lBP],~X
mov AX,0 mov -24[BP],AX
lea SI,-56[BP]
puSh WO~D PTR +2[SI]
pUsh WORD PTR [SI]
lea SI,-72[BP]
push WORD PTR ~2[SI]
push WORD PTR [SI~
push WORD PTR -10 [BP]
push WORD PTR -12[BP]
push WORD PTR -18[BP]
pUSh WORD PTR -20~BP]
push WORD PTR -6[BP]
push WORD PTR -8~BP]
push WORD YTR -14[BP]
push WORD PTR -16~BP]
pUSh WORD PTR -10[BP]
push WORD PTR -12[BP~
push WORD PTR 18[BP]
push WORD PTR -20[BP~
call SFXPROD
add SP,32 ~21 f ~ J ~
~r~

mov -4[BP],AX
mov -2[BP],DX
mov AX,O
cwd push DX
push AX
push WORD PTR -2[BP~
push WORD PTR -4[BP]
call SFCMP
add SP,8 cmp AX,-1 jle .0133 mov AX,l jmp SHORT .0136 .0133: ;57 mov AX,O
.0136: ;57 mov -26[BP],AX
mov AX,3 lea SI,-30[BP]
mov [SI],AX
mov Ah,1 mov -22[BP],AX
.0147:- ;59 cmp WORD PTR -22[BP],4 jl ?l jmp .01F7 ?1:
lea SI,-56[BP]
mov AX,-22[BP]
shl AX,l shl AX,1 add SI,AX
push WORD PTR +2[SI]

, . ~ .

~.~2~
-145- I~QEP

push hlORD PTR [SI]
lea SI,-72 [BP]
mov AX , - 2 2 [ BP ]
shl AX,l shl AX, 1 add SI, AX
push WORD PTR +2[SI]
push WORD PTR [SI]
push WORD PTR -10[BP]
push WORD PTR -12~BP]
push WORD PTR 18[BP]
push WORD PTR --20 [BP]
push WORD PTR -6 [BP]
push WORD PTR -8[BP]
push WORD PTR -14 ~BP]
push WORD PTR -16 [BP]
push WORD PTR -10[BP]
push WORD PTR 12[BP]
push WORD PTR -18[BP]
push WORD PTR -20[BP]
call SFXPROD
add SP,32 mov -4[BP],AX
mov -2[BP],DX
mov AX,O
cwd push DX
push AX
push WORD PTR -2[BP]
push WORD PTR - 4 [ BP ]
call SFCMP
add SP, 8 cmp AX,-l j~e .0lBF

mov AX,l jmp SHORT .OlC2 .OlBF: ;62 mov AX,O
.OlC2: ;62 mov -28[BP],AX
mov AX,-28[BP]
cmp AX,-26[BP]
je .OlE8 mov AX,-22[BP]
sub AX,l lea SI,-32[BP]
mov DX,-24[BP]
inc WORD PTR -24[BP]
shl DX,l add SI,DX
mov [SI],AX
mov AX,-28[BP]
mov -26[BP],AX
.OlE8: ;70 cmp WORD PTR -24[BP],2 jne .OlFl jmp SHORT .OlF7 .OlFl: ;71 inc WORD PTR -22[BP]
jmp .0147 .OlF7: ;71 cmp WORD PTR -24[BP],O
: jne .0205 mov AX,O
mov SP,BP
pop BP
ret .0205: ;76 .

~ .
'. .

3~;~

mov AX,O
mov -22[BP],AX
.020B: ;76 cmp WORD PTR -22[BP],2 jl ?2 jmp .040C
?2:
lea SI,-56[BP]
mov AX,4 push AX
lea DI,-32[BP]
mov AX,-22[BP]
shl AX,1 add DI,AX
mov AX,[DI]
add AX,1 pop BX
cwd idiv BX
shl DX,1 shl DX,l add SI,DX
push WORD PTR +2[SI~
push WORD PTR [SI]
le~ SI,-72[BP]
mov AX,4 push AX
lea DI,-32~BP]
mov AX,-22[BP]
shl AX,l add DI,AX
mov AX,[DI]
add AX,l pop BX

bq . .

-148- INQ~P

cwd idiv BX
shl DX,l shl DX,1 add SI,DX
push WORD PTR +2[SI]
push WORD PTR ~SI]
lea SI,-56[BP]
lea DI,-32[BP]
mov AX,-22[BP]
shl AX,l add DI,AX
mov AX,[DI]
shl AX,1 shl AX,l add SI,AX
push WORD PTR +2[SI]
push WORD PTR [SI]
lea SI,-72[BP]
lea DI,-32~BP~
mov AX,-22~BP]
shl AX,1 add DI,AX
mov AX,[DI]
shl AX,1 shl AX,l add SI,AX
push WORD PTR +2[SI]
push WORD PTR [SI3 push WORD PTR -10[BP]
push WORD PTR -12[BP]
push WORD PTR -18[BP3 push WORD PTR -20[BP]
lea SI,-56[BP]

. ~

~:

-149- IN~EP

lea DI,-32[BP]
mov AX,-22[BP]
shl AX,l add DI,AX
mov AX,[DI]
shl AX,l shl AX,l add SI,AX
push WORD PTR +2[SI]
push WORD PTR [SI]
lea SI,-721BP]
lea DI,-32[~P]
mov AX,-22[BP]
shl AX,l add DI,AX
mov AX,[DI]
shl AX,l shl AX,l add SI,AX
push WORD PTR +2[SI]
puqh WORD PTR [SI]
call SFXPROD
add SP,32 mov -4[BP],AX
mov -2~BP~,DX
mov AX,0 cwd push DX
push AX
push WORD PTR 2[BP]
push WORD PTR -4[BP]
call SFCMP
add SP,8 cmp AX,-l :

.

' ~3~

jle .02FB
mov AX,1 jmp SHORT .02FE
.02FB: ;83 mov AX,0 .02FE: ;83 lea SI,-40[BP]
mov DX,-22[BP]
shl DX,1 shl DX,1 add Sl,DX
mov [SI],AX
lea SI,-56[BP]
mov AX,4 push A~Y
lea DI,-32[BP]
mov AX,-22[BP]
shl AX,1 add Dt,AX
mov ~Y,[DI]
add AX,1 pop BX
cwd .idiv BX
shl DX,l shl DX,l add SI,DX
push WORD PTR +2[9I]
push WORD PTR ~SI]
lea SI,-72[BP]
mov AY,4 push AX
le~ DI,-32[BP]
. mov AX,-22[BP]

.

35~

shl AX,1 add DI,AX
mov AX,[DI]
add AX,l pop BX
cwd idiv BX
shl DX,l shl DX,l add SI,DX
push WORD PTR +2[SI]
push WORD PTR [SI]
lea SI,-56[BP]
lea DI,-32[BP]
mov AX,-22[BP]
shl AX,l add DI,AX
mov ~X,[D~]
shl AX,1 shl AX,1 add SI,AX
push WORD PTR +2[SI]
p~sh WORD PTR [SI]
lea SI,-72[BP]
lea DI,-32[BP]
mov AX,-22[BP]
shl AX,l add Dl,AX
mov AX,[DI]
shl AX,1 shl AX,1 add SI,AX
push WORD PTR ~2[SI]
push WORD PTR [SI]

~33~6 push WORD PTR -6[BP]
push WORD PTR -8[BP]
push WORD PTR -14[BP]
push WORD PTR -lS[BP]
lea SI,-56[BP]
lea DI,-32[BP]
mov AX,-22[BP]
shl AX,l add DI,AX
mov AX,[DI]
shl AX,l shl AX,l add SI,AX
push WORD PTR +2[SI]
push WORD PTR [SI]
lea SI,-72[BP]
lea DI,-32[BP]
mov AX,-22[BP]
shl AX,l add DI,AX
mov AX,[DI]
shl AX,l shl AX,l add SI,AX
push WORD PTR +2[SI]
push WORD PTR [SI]
call SFXPROD
add SP,32 mov -4[BP],AX
mov -2[BP],DX
mov AX,O
cwd push DX
push AX

push WORD PTR - 2 [ BP ]
push WORD PTR -4 [BP]
c a l l SFCMP
add SP, 8 cmp AX, ~ 1 j le . 03F2 mov AX, 1 jmp SEIORT . 03F5 .03F2: ;89 mov AX, 0 .03F5: 89 lea SI,-40 [BP]
mov DX,-22 [BP]
shl DX, 1 add DX ,1 shl DX,1 add SI, DX
mov [SI] ,AX
. 040~: ; 90 inc WORD PTR 22 [BP]
jmp . 020B
.û40C: ;go lea SI, -3 8 [BP]
lea DI,-4Q [BP]
mov AX, [DI]
cmp AX, [SI]
jne . 0437 lea SI,-34 [BP]
lea DI,-36 ~BP]
mov AX, [DI]
cmp AX, [SI]
jne . Qd~37 lea SI l-36 [BP]
lea DI,-40 [BP]

-154- IN~EP
__ mov AX,~DI]
cmp AX,[SI]
je .0437 mov AX,0 mov SP,BP
pop BP
ret .0437: ;94 mov AX,1 mov SP,BP
pop BP
ret INQEP ENDP

QCODE ENDS
~CODE SEGMENT BYTE PUBLIC 'CODE' include epilogue.h end !

.

3~

include prologue.h public SFCONECT
@CODE ENDS
extrn CVSITSF:near extrn SFADD:near extrn SFSUB:near extrn SFDIV:near extrn SF~IUL:near extrn XPROD:near extrn SFINTRST:near . extrn SFINCLSV:near extrn SFCMP:near @CODE SEGMENT BYTE PUBLIC ' CODE ' SFCONECT PROC NEAR
.00~ ;25 push BP
mov BP, SP
sub SP, 44 mov AX, +4 [BP ]
cmp AX, 0 jne . 010 ~2~6 ~ 15 6 - SFCONECT

jmp SHORT . 018 . 010: ; 33 mov AX , + 6 [ BP ]
cmp AX, O
j ne . O lF
.018: ;33 mc)v AX,O
mov SP,BP
pop BP
ret .OlF: ;34 mov AX,+4[BP]
cmp AX,+6 [BP]
jne . 02E
mov AX ,1 mov SP,BP
pop BP
ret .02E: ;37 mov SI, +6 [BP ]
mov DI,+4 [EP]
mov AX, [DI]
cmp AX, [SI]
jne . 04A
mov SI ,+6 [BP]
mov DI, +4 [BP ]
mov AX,+2 [DI]
cmp AX,+2 [SI]
jne . 04A
jmp SHORT . 065 .04A: ;38 mov SI, +6 [BP ]
mov DI , + 4 [ BP ]

3~

mov AX, [DI]
cmp AX, +4 [ S I ]
j ne . 0 6C
mov SI,+6[BP3 mov DI, +4 [BP3 mov AX,~2 [DI]
cmp AX,+6 [SI]
jne . 06C
.065: ;38 mov AX ,1 mov SP, BP
pop BP
ret .06C: ; 40 mov SI, +6 [BP]
mov DI,+4 [BP]
mov AX,+4 [DI]
cmp AX, [ SI ]
jne . 089 mov SI,+6 [BP3 mov DI,+4 [BP]
mov AX,+6 [DI]
cmp AX,+2 [SI]
jne . 089 j mp SHORT . OA5 .089: ;41 mov SI,~6 [BP]
mov DI,+4 [BP]
mov AX,+4 [DI]
cmp AX,+4 [SI]
j ne . OAC
mov SI,+6 [BP]
mov DI, +4 [BP]

r . ~. ''.. ~ ,, _ ..

3~;

mov AX,+6[DI]
cmp AX,+6[SI]
jne .OAC
.0~5: ;41 mov AX,1 mov SP,BP
pop BP
ret .OAC: ;43 mov SI,+4[BP]
push WORD PTR [SI]
call CVSITSF
add SP,2 mov -32[BP],AX
mov -30[BP],DX
mov SI,+4[BP]
push WORD PTR ~4[SI]
call CVSITSF
add SP,2 mov -28[BP],AX
mov -26[BP]~DX
mov SI,+4[BP]
push WORD PTR + 2 [ S I ]
call CVSITSF
add SP,2 mov -16[BP],AX
mov -14[BP],DX
mov SI,+4[BP]
push WORD PTR ~6[SI]
call CVSITSF
add SP,2 mov -12[BP],AX
mov -lO[BP],DX
mov SI,+6[BP]

: ~ .

~33~;

push WO~D PTR [ SI ]
ca 1 ï CVS I TSF
add SP, 2 mov -24 lBP~ ,AX
mov --22 [BP],DX
rnov SI,~6 [BP]
push WORD PTR +4 [SI]
ca 11 CVS I TSF
add SP, 2 mov -20 [BP] ,AX
mov -18 [BP],DX
mov SI,+6 [BP]
push WORD PTR +2 [SI]
ca 11 CVS ITSF
add SP, 2 mov -8 [BP],AX
mov -6 [EP] ,DX
mov SI,~6 [BP]
push WORD PTR +6 [SI]
call CVSITSF
add SP, 2 mov -4 [BP] ,AX
mov -2 [BP],DX
mov AX, 20 push AX
call CVSITSF
add SP, 2 mov -36 [BP],AX
mov -34 [BP] ,DX
lea SI,-40 [BP]
push SI
lea SI,-44 [BP]
push SI
push WORD PTR -2 [BP]

3~;

push WORD PTR -4[BP]
push WORD PTR -6[BP]
push WORD PTR -8[BP]
push WORD PTR -10[BP]
push WORD PTX 12[BP]
push WORD PTR -14~BP]
push WORD PTR -16[BP]
push WORD PTR -18fBP]
push WCRD PTR -20[BP]
push WORD PTR -22[BP]
push WORD PTR -24[BP]
push WORD PTR -26[BP]
push WORD PTR -28[BP]
push WORD PTR -30[BP]
push WORD PTR -32[BP]
call SFINTRST
add SP,36 or AX,AX
jne ?1 jmp .03EF
?1:
push WORD PTR -38[BP]
push WORD PTR -40fBP]
push WORD PTR -10[BP]
push WORD PTR -12[BP]
push WO~D PTR -14[BP]
push WORD PTR -16[BP]
push WORD PTR -42[BP]
push WORD PTR -44[BP]
push WORD PTR -26[BP]
~ush WORD PTR -28[BP]
push WORD PTR -30[BP]
push WORD PTR -32[BP]
call ~FINCLSV

3~
-161- SFCO~ECT

add SP,24 or AX,AX
je .01C0 jmp ~0239 .OlC0: ;74 push WORD PTR -34[BP~
push WORD PTR -36[BP]
push WORD PTR -38[BP]
push WORD PTR -40[BP]
push WORD PTR -14[BP]
push WORD PTR -16[BP]
call SFSUB
add SP,8 push DX
push AX
push WORD PTR -38[BP]
push WORD PTR -40[BP]
push WORD PTR -14[BP]
push WORD PTR -16[BP]
call SFSUB
add SP,8 push DX
push AX
call SFMUL
add SP,8 push DX
push AX
push WORD PTR 42[BP]
push WORD PTR -44[BP]
push WORD PTR -30[BP]
push WORD PTR -32[BP]
call SFSUB
add SP,8 push DX

~ 16 2 ~ SFCONF~CT

push AX
push WORD PTR -42[BP]
push WORD PTR -44[BP]
push WORD PTR -30[~P]
push WORD PTR -32[BP]
call SFSUB
add SP,8 push DX
push AX
call SFMUL
add SP,8 push DX
push AX
call SFADD
add SP,8 push DX
push AX
call SFCMP
add SP,8 cmp AX,0 jge .023C
.0239: ;74 jmp .02B8 .023C: ;74 push WORD PTR -34[BP~
push WORD PTR -36[BP]
push WORD PTR -38[BP]
push WORD PTR -40[BP]
push WORD PTR -10[BP]
push WORD PTR -12[BP]
call SFSUB
add SP,8 push DX
push AX

>:

f~ ~ f push WORD PTR -38[BP]
push WORD PTR -40~BP]
push WORD PTR -10[BP]
push WORD PTR -12~BP]
call SFSUB
add SP,8 push DX
push AX
call SFMUL
add SP,8 push DX
push AX
push WORD PTR -42[BP]
push WORD PTR -44[BP]

push WORD PTR -26[BP]
push WORD PTR 28[BP]
call SFSUB
add SP,8 push DX
push AX
push WORD PTR -42[BP]

push WORD PTR -44[BP]
push WORD PTR -26[BP]
push WORD PTR -28~BP]
call SFSUB
add SP,8 push DX

push AX
call SFMUL
add SP,8 push DX
push AX
call 5FADD
add SP,8 .

~L~2~3~6 push DX
push AX
call SFCM~
add SP,8 cmp AX,0 jl ?2 jmp .03E5 ?2:
.02B8: ;74 push WORD PTR -38[BP]
push WORD PTR -40[BP]
push WORD PTR -2[BP]
push WORD PTR -4[BP]
push WORD PTR -6[BP]
push WORD PTR -8[BP]
push WORD PTR -42[BP]
push WORD PTR ~44[BP]
push WORD PTR -18[BP]
push WORD PTR -20[BP]
push WORD PTR -22[BP]
push WORD PTR -24[BP]
call SFINCLSV
add SP,24 or AX,AX
je .02E9 jmp .0362 .02E9: ;74 push WORD PTR -34[BP]
push WORD PTR -36[BP]
push WORD PTR -38[BP]
push WORD PTR -40[BP]
push WORD PTR -6[BP]
push WORD PTR ~8~BP]
call SFSUB

, ~, 3~
-16 5 - SFCONE:CT

add SP, 8 push DX
push AX
push WORD PTR -38 ~BP]
push WORD PTR -40 [BP]
push WORD PTR -6 [BP]
push WORD PTR -8 [BP]
ca l l SFSUB
add SP, 8 push DX
push AX
call SFMUL
add SP, 8 push DX
push AX
pu s h WORD PTR --4 2 [ BP ]
push WORD PTR -44 [BP]
push ~ORD PTR -22 [BP]
push WORD PTR -24 [BP]
call SFSUB
add SP,8 push DX
push AX
push WORD PTR --42 [BP]
push WORD PTR -d~4 [BP~
push WORD PTR -22 [BP3 push WORD PTR -24 [BP3 ca 11 SFSUB
add SP, 8 push DX
push AX
~all SFMUL
add SP, 8 push DX

.... _ .. . .
~ .. ..

-166~ SFCO~ECT

push AX
call SFADD
add SP,8 push DX
push AX
call SFCMP
add SP,8 cmp AX,0 ~ge .0365 .0362: ;74 jmp .03DE
~0365: ;74 push WORD PTR -34[BP]
push WORD PTR -36[BP]
push WORD PTR -38[BP]
push WORD PTR -40[BP]
push WORD PTR -2[BP]
push WORD PTR ~4[BP]
call SFSUB
add SP,8 push DX
push AX
push WORD PTR -38[BP]
push WORD PTR -40[BP]
push WORD PTR -2[BP~
push WORD PTR -4[BP]
call SFSUB
add SP,8 push DX
push AX
call SFMUL
add SP,8 push DX
push AX

,, ,~

~33~

push WORD PTR -42[BP]
push WORD PTR -44~BP]
push WORD PTR -18[BP]
push WORD PTR -20~BP]
call S~SUB
add SP,8 push DX
push AX
push WORD PTR -42~BP]
push WORD PTR -44[BP]
push WORD PTR -18[BP]
push WORD PTR -20[BP]
call SFSUB
add SP,8 push DX
push AX
call SFMUL
add SP,8 push DX
push AX
call SFADD
add SP,8 push DX
push AX
. call SFCMP
add SP,8 cmp AX,O
jge .03E5 .03DE: ;74 mov AX,l mov SP,BP
pOp BP
ret .03E5: ;76 mov AX,0 mov SP,BP
pop ~P
ret ,03EC: ;77 jmp .0499 .03EF: ;78 mov SI,+4[BP]
push WORD PTR +6[SI]
mov SI,+6[BP]
push WORD PTR +2[SI]
mov SI,+4[BP]
push WORD PTR +4[SI]
mov SI,+6[~P]
push WORD PTR [SI]
mov SI,+4[BP]
push WORD PTR +2[SI]
mov SI,+6[BP]
push WORD PTR +2[SI]
mov SI,+4[BP]
push WORD PTR [SI]
mov SI,~6[BP]
push WORD PTR [SI]
call XPROD
add SP,16 or DX,AX
je .042D
mov AX,0 mov SP,BP
pop BP
ret .042D: ;84 push WORD PTR -61BP]
push WORD PTR -8[BP]

.~ .

I ~ t~ .

~2~
-169- SFCO~ECT

push WORD PTR -10[BP]
push WORD PTR -12[BP]
push WORD PTR -14[BP]
push WORD PTR -16[BP]
push WORD PTR -22[BP]
push WORD PTR -24[BP]
push WORD PTR -26[BP]
push WO~D PTR -28~BP]
push WORD PTR -30[BP]
push WO~D PTR -32[BP]
call SFINCLSV
add SP,24 or AX,AX
je .045D
jmp SHORT .048B
.045D: ;B5 push WORD PTR -2[BP]
push WORD PTR -4[BP]
push WORD PTR -10[BP]
push WORD PTR -12[BP]
push WORD PTR -14[BP]
push WORD PTR -16[BP]
push WORD PTR -18[BP]
push WORD PTR -20[BP]
push WORD PTR -26[BP]
push WORD PTR -28LBP]
push WORD PTR -30[BP]
push WORD PTR -32[BP]
call SFINCLSV
add SP,24 or AX,AX
je .0492 .048B: ;85 mov AX,1 mov SP, BP
1?P BP
ret .0492: ;87 mov AX,0 mov SP, BP
pop BP
ret . 0499: . ; 88 mov AX, O
mov SP,BP
pop BP
ret SFCONECT ENDP

@CODE ENDS
@CODE SEGM}:NT BYT:i3 PUBLIC ' CODE ' include epilogue . h end 3~
~ 171 - BCORCAr C

~BIGMODEL EQU 0 lnclude prologue.h QCODE ENDS
DATAC SEGMENT
db 67~ 114~114~101~108~97~116~105~ 110~46~46~32 db 102~114~ 109~32~37~100~44~37~100~32~116~ 32~37~100 db 44~37~100~44~32~99~ 114~114~32~97~110~103~61~32~37 db 100~44~32~99~97~114~32~97~110~103~61~32~37~100~10~0 @DAT~AC ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' public BCORCALC
QCODE ENDS
~DATAB SEGM~NT
extrn STRDAT:word extrn STRCOOR:word extrn IDRPX:word extrn IDRPY:word extrn IQEPX:word extrn IQEPY:word extrn ICOUSRE:word QDATAB ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' @CODE ENDS
extrn CVSITSF:near ~33~

. _ extrn CVSLTSF:near extrn CLOSTPT:near extrn CVSFTSI:ne~r extrn ISQRT:near extrn NPAM:near extrn MCBUF:near extrn CORELATE:near extrn PRINTF:near extrn IATAN2:near extrn ISMUL:near extrn ICOS:near extrn ISIN:near extrn PRIORITY:near extrn QEP EXP:near ~CODE SEGMENT BYTE PUBLIC 'CODE' BCORCALC PROC NEAR
QCODE ENDS
extrn $LRSSHIFT:near extrn $LMUL:near ;33~6 extrn ~LSDIV:near extrn $LLSHIFT:near @CODE SEG~NT BYTE PUBLIC 'CODE' ,00: ;25 push BP
mov BP,SP
sub SP,82 mov AX,0 mov -26[BP],AX
mov AX, IDRPX
mov DX,IDRRX+2 push DX
push AX
mov AX,16 mov DX,0 push DX
push AX
call $LRSS~IFT
pop AX
pop DX
mov -54~BP],AX
mov AX, IDRPY
mov DX,IDRPY~2 push DX
push AX
mov AX,16 mov DX,0 .
push DX
push AX
call $LRSSHIFT
pOp AX
pop DX

. . . .
. .

~3356 mov -52 [BP] ,AX
mov AX, STRDAT
mov -82 [BP] ,AX
mov AX, STRCOOR
mov -~0 [BP] ,AX
lea SI,-46 [BP]
push SI
mov AX, 0 pu sh AX
call CVSITSF
add SP, 2 push DX
push AX
mov SI, STRCOOR
mov AX, +6 [SI]
sub AX,-52 [BP]
push AX
call CVSITSF
add SP,2 push DX
push AX
mov SI, STRCOOR
mov AX,+2 [SI]
sub AX , -5 2 [ BP ]
push AX
call CVSITSF
add SP, 2 push DX
push AX
lea SI,-50 [BP]
push SI
mov AX, 0 push AX
call CVSITSF

1: ~;' ;

~2~
-1 75- E~CORCABC

add SP, 2 push DX
push AX
mov SI, STPcCOOR
mov AX, ~4 [SI]
SUb AX~-54 [BP) push AX
call CVSITSF
add SP, 2 push DX
push AX
mov S I, STRCOOR
mov AX, [SI]
sub AX , -5 4 [ BP ]
push AX
call CVSITSF
add SP, 2 push DX
push AX
ca l l CLOSTPT
add SP, 28 push WORD PTR -48 [BP]
push WORD PTR --50 [BP]
call CVSFTSI
add SP, 4 mov DX,~54 [BP]
add DX, AX
mov -54 [BP] ,DX
puSh WORD PTR ~4 4 [BP ]
push WORD PTR -46 [BP]
call CVSFTS I
add SP, 4 mov DX, -5 2 [BP]
add DX ,AX

~. ~

. ~

;a~233~;

mov -52[BP],DX
lea SI,IQEPX
mov AX,[SI]
mov DX,+2[SI]
lea SI,IQEPX+8 sUb AX,[SI]
sbb DX,+2[SI]
push DX
pu8h AX
mov AX,16 mov DX,O
push DX
push AX
call $LRSSHIFT
pop AX
pop DX
mov -18[BP],AX
mov -16[BP],DX
lea SI,IQEPY
mov AX,[SI]
mov DX,+2[SI]
lea SI,IQEPY+8 sub AX,[SI]
sbb DX,+2[SI]
push DX
push AX
mov AX,16 mov DX, O
push DX
push AX
call $LRSSHIFT
pop AX
pop DX
mov -14~BP],AX

. . , .. ~ .. . .

3~6 mov -l 2 [BP], DX
push WORD PTR -16 [BP]
push WORD PTR -18 [BP]
push WORD PTR -16 ~BP]
push WORD PTR ~18 [BP]
call SLMUL
pop AX
pop DX
pusA W9RD PTR -12 [BP]
push WORD PTR -14 [BP~
push WORD PTP~ -12 [BP]
push WORD PTR -14 [ BP ]
call ~LMUL
pop AX
pop CX
add AX,BX
adc DX, CX
push DX
push AX
call ISQRT
add SP, 4 mov -20 [BP] ,AX
cmp WORD PTR -2 0 [ BP ], 2 4 0 jl~ .0172 mov AX, 240 jmp SHORT . 0175 . 0172: ; 80 mov AX,-20 [BP]
. 0175: ; 80 mov -2 0 [BP], AX
mov AX , -2 0 [ BP]
neg AX
mov DX ,1 mov CX, DX

.. . . .

3~

sar AX,CL
push AX
lea SI,-52[BP]
push SI
lea SI,-54[BP]
push SI
lea SI,-80tBP]
push SI
lea SI,-821BP]
push SI
call NPAM
add SP,10 mov -24[BP],AX
push WORD PTR -52[BP]
push WORD PTR -54[BP]
push WORD PTR -80~BP]
push WORD PTR -82[BP]
call MCBUF
add SP,8 call CORELATE
lea SI,-78[BP]
mov [SI],AX
cmp AX,0 ]ge .01C0 jmp .074B
.OlC0: ;g0 mov AX,0 lea SI,-70[BP]
mov [SI],AX
mov AX,-20[BP]
mov DX,l mov CX,DX
sar AX,CL
sub AX,-24[BP]

. . ~, .

~33~
, .
-17g- BCORCA~C

push AX
lea SI,-52[BP]
push SI
lea SI,-54[BP]
push SI
lea SI,-8G[BP]
push SI
lea SI,-82[BP]
push SI
call NPAM
add SP,10 mov -22[BP],AX
push WORD PTR -52[BP]
push WORD PTR -54[BP]
push WORD PTR -80[BP]
push WORD PTR -82[BP]
call MCBUF
add SP,8 call CORELATE
lea SI,-74[BP]
mov [SI],AX
cmp AX,O
jge .0211 jmp .074B
.0211: ;97 mov AX,-22[BP]
mov -56[BP],AX
lea SI,-66[BP]
mov [SI],AX
mov AX,-56[BP]
mov DX,l mov CX,DX
sar AX,CL
mov -62~BP],AX

~23~
-180- BCORC~JC

lea SI,-68[BP]
mov [SI],AX
mov AX,-62[BP]
neg AX
push AX
lea SI,-52[BP]
push SI
lea SI,-54[BP]
push SI
lea SI,-80[BP]
push SI
lea SI,-82[BP]
push SI
call NPAM
add SP,10 push WORD PTR -52[BP]
push WORD PTR -54[BP]
push WORD PTR -80[BP]
push WORD PTR -82[BP]
call MCBUF
add SP,8 call CORELATE
lea SI,-76[BP]
mov [SI],AX
cmp AX,0 jge .026C
jmp .074B
.026C: ;109 lea SI,-68[BP]
mov AX,[SI]
lea SI,-70[BP]
sub AX,[SI]
cmp AX,8 jla .027D

jmp S~ORT .028F
.027D: ;109 lea SI,-66[BP]
mov AX,[SI]
lea SI,-68[BP]
sub AX,[SI]
cmp AX,8 j9 ?2 jmp .048B
?1 .028F: ;10 lea SI,-76[BP]
lea DI,-78[BP]
mov AX,[DI]
cmp AX,[SI]
jle ~02CF
lea SI,-74[BP]
lea DI,-76[BP]
mov AX,[DI]
cmp AX,[SI]
jg .02CF
lea SI,-66[BP]
mov AX,[SI]
lea SI,-68~BP]
sub AX,[SI]
lea SI,-68[BP]
mov DX,[SI]
lea SI,-70[BP]
sub DX,[SI]
cmp DX,AX
jl .02C7 mov AX,1 mov -10[BP],AX
jmp SHORT .02CD

~ ~ r- .

~33~6 .02C7: ;121 mGv AX,2 mov -10[BP],AX
.02CD: ;122 jmp SHORT .0329 ~02CF ;123 lea SI,-76[BP]
lea DI,-78[BP]
mov AX,[DI]
cmp AX,[SI]
jg .0303 lea SI,-74[BP]
lea DI,-76[BP]
mov AX,[DI]
cmp AX,[SI]
~1~ .0303 lea SI,-74[BP~
lea DI,-78[BP]
mov AX,[DI]
cmp AX,[SI]
jge . 02FB
mov AX,l mov -10 [BP] ,AX
jmp SHORT .0 301 02FBo ; 128 mov AX, 2 mov -10[BP],AX
0301 ; 129 jmp SHORT O 0329 0303 ; 130 lea SI,-76 [BP ]
lea DI,-78[BP]
mov AX,[DI]
cmp AX,[SI]

~2~

jle .0323 lea SI,-74[BP]
lea DI,-76~BP]
mov AX,[DI]
cmp AX,[SI]
jle .0323 mov AX,2 mov -10[BP],AX
jmp SHORT .0329 .0323: ;134 mov AX,1 mov -10[BP3,AX
.0329: ;139 cmp WORD PTR -10[BP],l je ?2 jmp .03DF
?2:
lea SI,-70[BP]
mov AX,~SI]
lea SI,-63[BP]
add AX,[SI]
mov DX,l mov CX,DX
sar AX,CL
lea SI,-64[BP]
mov [SI],AX
lea SI,-64[BP]
mov AX,[SI]
sub AX,-62[BP]
push AX
lea SI,-52~BP]
push SI
lea SI,-54[BP]
: push SI

:

3~

lea SI,-80[BP]
push SI
lea SI,-82[BP]
push SI
call NPAM
add SP,10 lea SI,-64[BP]
mov AX,[SI]
mov -62[BP],AX
push WORD PTR -52[BP]
push WORD PTR -54[BP~
push WORD PTR -80[BP]
push WORD PTR -82[BP]
call MCBUF
add SP,8 call CORELATE
lea SI,-72[BP]
mov [SI],AX
cmp AX,0 jge .0392 jmp .074B
.0392: ;147 lea SI,-76[BP]
lea DI,-72[BP]
mov AX,[DI]
cmp AX,[SI]
jle .03B4 lea SI,-72[BP]
mov AX,[SI]
lea SI,-78[BP]
mov SI,[AX]
lea SI,-64[BP]
mov AX,[SI]
lea SI t -70[BP]

-185- BCOP~CALC

mov [SI],AX
jmp SHORT .03DC
.0~B4: ;149 lea SI,-74[BP~
mov AX,[SI]
lea SI,-74[BP]
mov [SI],AX
lea SI,-6~[BP]
mov AX,[SI]
lea SI,-66[BP]
mov [SI],AX
lea SI,-72 [BP~
mov AX,[SI]
lea SI,-76[BP]
mov [SI],AX
lea SI,-64[BP]
mov AX,[SI]
lea SI,-68[BP]
mov [SI],AX
.03DC: ;153 jmp .~4S8 .03DF: ;154 lea SI,-68[BP]
mov AX,[SI]
lea SI,-66[BP]
add AX,[SI]
mov DX,l mov CX,DX
sar AX,CL
lea SI, 64[BP]
mov [SI],~X
lea SI,-64[BP]
mov AX,[SI]
sub AX,-62[BP]

:' ~ . .
. ~ .

3~

push AX
lea SI~-52 [BP]
push SI
lea SI,-54 [BP]
push SI
lea SI,-80 [BP]
push SI
lea SI,-82 [BP]
push SI
call NPAM
add SP, 10 lea SI,-64 [BP]
mov AX , [ SI ]
mov -62 [BP] ,AX
push WORD PTR -52 [BP]
push WORD PTR -54 ~BP]
push WOE~D PTR -80 [BP]
push WORD PTR -82 [BP]
call MCBUF
add SP, 8 cal 1 CORELAT~
lea SI ,-72 [BP]
mov [SI] ,AX
cmp AX, 0 jge . 043E
jmp . 074B
. 043E: ; 160 lea SI,-72 [BP]
lea DI,-76 [BP]
mov AX, [DI]
cmp AX, [ S I ]
jle . 0474 lea SI,-76 [BP]
mov AX , [ SI ]

~2~
-187- BCO~CALC

lea SI,-78~BP]
mov [SI],AX
lea SI,-68[BP]
mov AX,[SI]
lea SI,-70 [BP]
mov [SI],AX
lea SI,-72[BP]
mov AX,[SI]
lea SI,-76[BP]
mov [SI],AX
lea SI,~64[BP]
mov AX,[SI]
lea SI,-68[BP]
mov [SI],AX
jmp S~IORT .0488 .0474: ;163 lea SI,-72[BP]
mov AX,[SI]
lea SI,-74tBP]
mov [SI],AX
lea SI,-64[BP]
mov AX,[SI]
lea SI,-66[BP]
mou [SI],AX
.0488: ;167 jmp .026C
.048B: ;168 le~ SI, 76[BP]
lea SI,-78[BP]
mov AX,[DI]
cmp AX,[SI]
~g ?3 jmp .074B
?3:

.~ }~ - ~

: ' "' `:

~33~6 -188- BCORC~LC

lea SI,-74[BP
lea DI,-76[BP]
mov AX,[DI]
cmp AX,[SI]
jl ?4 jmp .074B
?4:
lea SI,-76[BP]
mov AX,[SI]
cmp AX,3600 jl ?5 jmp .074B
?5:
lea SI,-66 ~ BP]
mov AXj[SI]
lea SI,-70[BP]
sub AX,[SI]
push AX
lea SI,-78[BP]
mov AX,[SIJ
lea SI,-76[BP]
mov DX,[SI]
mov BX,l mov CX, BX
shl DX,CL
sub AX,DX
lsa SI,-7~[BP]
add AX,[SI~
pop BX
cwd idiv BX
cmp AX,17 jg ?6 jmp .074B

. ~ , ~.

~3~

?6:
lea SI,-70~BP]
mov AX,[SI]
lea SI,-68[BP]
add AX,[SI]
mov DX,l mov CX,DX
sar AX,CL
mov -8[BP],AX
lea SI,-68[BP]
mov AX,[SI]
lea SI,-66[BP]
add AX,[SI]
mov DX,l mov CX,DX
sar AX,CL
mov -6[BP],AX
lea SI,-78[BP]
mov AX,[SI]
lea SI,-76[BP]
sub AX,[SI]
mov -4[BP],AX
lea SI,-76[BP]
mov AX,~SI]
lea SI,-74[BP]
sub AX,[SI]
mov -2[BP],AX
mov AX,-6[BP]
cwd push DX
push AX
mov AX~-2[BP]
sub AX,-4[BP]
cwd 33~

push DX
push AX
mov AX , - 6 [ BP ]
sub AX , - 8 [ BP ]
cwd push DX
push AX
mov AX,-2 [BP]
cwd push DX
push AX
call $LMUL
pop AX
pOp DX
push DX
push AX
call $LSDIV
pop AX
pop DX
pOp BX
pop CX
sub BX ,AX
sbb CX, DX
lea SI,-64 [BP]
mov [SI] ,BX
lea SI ,-64 ~BP]
mov AX , [ SI ]
sub AX , - 6 2 [ BP ]
push AX
lea SI ,~52 [BP]
push SI
lea SI,-54 [BP]
push SI
lea SI ,-80 [BP]

push SI
lea SI , - 8 2 [ BP ]
push SI
call NPAM
add SP, 10 mov AX, 182 push AX
mov AX, ICOURSE
pOp BX
cwd idiv BX
push AX
mov AX, 182 push AX
mov AX,-54 [BP~
mov BX, IDRPX
mov CX, IDRPX~2 pu sh CX
pu sh BX
mov BX, 16 v CX, O
pu sh CX
push BX
call $LRSSHIFT
pop BX
pop CX
s ub AX, BX
push AX
mov AX , -5 2 [ BP ]
mov BX, IDRPY
mov CX, IDRPY~2 push CX
push BX
mov BX, 16 ?

-19 2 - BCOP~CALC

mov CX,O
push CX
push BX
call $LRSSHIFT
pop HX
pOp CX
sub AX,BX
push AX
call IATAN2 add SP ~ 4 pop BX
cwd idiv BX
push AX
push WORD PTR -52 ~BP]
push ~ORD PTR --54 [BP]
mov AX, IDRPY
mov DX, IDRPY+2 pu sh DX
push AX
mov AX, 16 mov DX, 0 pu sh DX
push AX
call $LRSSHIFT
pop AX
pop DX
push AX
mov AX, IDRPX
mov DX, IDPcPX+2 push DX
push AX
mov AX, 16 mov DX, 0 ..... .

pu sh DX
pu sh AX
call $LRSSHIFT
pop AX
pOp DX
pu sh AX
lea AX, @SW
push AX
call PRINTF
add SP, 14 mov AX,-54 [BP]
cwd push DX
push AX
mov AX, 16 mov DX, 0 push DX
push AX
call $LLSHIFT
pop AX
pop DX
mov IDRPX, AX
mov IDRPX+2, DX
mov AX,-52 [BP]
c~d push DX
push AX
mov AX, 16 mov DX, û
push DX
push AX
call $LLSHIFT
pop AX
pop DX

.
~ .

3~
-194- ~CORCALC

mov IDRPY,AX
mov IDRPY+2,DX
mov AX,-80[BP]
mov STRCOOR,AX
mov Sl,STRCOOR
mov AX,+4~SI~
mov SI,STRCOOR
sub AX,ZSI]
push AX
mov SI,STRCOOR
mov AX,+6[SI]
mov SI,STRCOOR
sub AX,+2[SI]
push AX
call IATAN2 add SP,4 mov -28[BP],AX
mov AX,20 push AX
push WORD PTR -28[BP]
call ICOS
add SP,2 push AX
call ISMUL
add SP,4 cwd push DX
push AX
mov AX,16 mov DX,0 push DX
push AX
call $LLSHIF~
pop AX

.

3~
- -195 ~CORCALC

pop DX
mov -36 [BP],AX
mov -34 [BP~ ,DX
mov AX, 20 push AX
push WORD PTR -28 [BP]
call ISIN
add SP, 2 push AX
call ISMUL
add SP, 4 cwd push DX
push AX
mov AX, 16 mov DX, 0 push DX
push AX
call $LLSHIFT
pop AX
pop DX
mov -32 [BP] ,AX
mov -30 [13P],DX
mov SI, STRDAT
mov AL,~l [SI]
cbw push AX
call PRIORITY
add SP, 2 mov -42 [BP] ,AX
mov AX,-42 [BP]
imul WORD PTR -42 ~BP]
add AX, 196 cwd .

~33~
- ~ -19 6- CORCALC

push DX
push AX
cal 1 I SQRT
add SP, 4 push AX
mov AX, 0 push AX
mov AX,-32 [BP]
mov DX , -3 0 [BP ]
neg DX
neg AX
sbb DX, 0 push DX
push AX
call CVSLTSF
add SP, 4 push DX
push AX
push WORD PTR -30 [BP]
push WORD PTR -32 [BP]
call CVSLTSF
add SP, 4 push DX
pu sh AX
mov AX,~36 [BP]
mov DX,-34 [BP]
neg DX
neg AX
sbb DX, 0 pu sh DX
push AX
call CVSLTSF
add SP, 4 push DX

3~

push AX
push WORD PTR -34[BP]
push WORD PTR -36[BP]
call CVSLTSF
add SP,4 push DX
push ~Y
call QEP EXP
add SP,20 mov AX,1 mov SP,BP
pop BP
ret .074~: ;213 mov AX,0 mov STRDAT,AX
mov STRCOOR,AX
mov SP,BP
pop BP
ret BCORCALC ENDP
QCODE ENDS
QCODE SEGMENT BYTE PUBLIC 'CODE' include epilogue.h end @BIGMODEL EQU 0 include prologue.h ~CODE ENDS
@DATAU SEGMENT
db 14 DUP (?) public NPAM
QDATAU ENDS
QCODE SEGMENT BYTE PUBLIC 'CODE' @CODE ENDS
extrn CVSFTSL:near extrn CVSITSF:near extrn SFADD: near extrn SFSUB: near extrn SFMUL:near extrn SFDIV:near : extrn ISQRT:near extrn @ABS:near extrll CVSFTSI:near extrn RSFTSI:near QCODE SEGMENT BYTE PUBLIC 'CODE' NPAM PROC NEAR

3~;6 ` -199-- NPAM

@CODE ENDS
extrn $LMUL: near @CODE SEGMENT E~YTE PUBLIC ' CODE ' .00: ;41 push BP
mov BP, SP
sub SP, 24 mov S I , + 4 [ BP ]
mov SI,+4[SI]
mov -24 [BP], SI
mov AX,+10 [BP]
mov -18 [BP] ,AX
push WORD PTR +10 [BP]
call CVSITSF
add SP, 2 mov -8 [BP],AX
mov - 6 [ BP ] , DX
mov -4 [BP] ,AX
mov -2 [BP] ,DX
mov SI,+4 [BP]
mov SI, [SI]
mov DI,+4 [BP~
mov DI, [DI]
add SI,~8 [DI]
mov DI, -~4 [ BP]
mov DI,+2 [DI]
add SI,+4 [DI]
mov -20 [BP],SI
.043: ;77 mov AX, 1 or AX ,AX
jne ?l jmp . 0333 ~, . /

, 3~

?1:
mov SI,-24[BP]
mov AX,[SI~
cmp AX,@UW-~2 je .05A
jmp SHORT .066 .05A: ;80 mov SI,-24[BP]
mov AX,+2[SI~
cmp AX,@U~+4 je .068 .066: ;80 jmp SHORT .074 .068: ;80 mov SI,-24[BP]
mov AX,+5[SI]
cmp AX,@UW+6 je .076 .074: ;80 jmp SHORT .085 .076: ;80 mov SI,-24[BP]
mov AX,+7[SI]
cmp AX,~UW+8 jne ?2 jmp .OFE
?2 ~085: ;80 mov SI,-24[BP]
mov AX,[SI~
mov @UW+2,AX
mov SI,-24[BP]
mov AX,+2[SI]
mov ~ 4,AX

~2~

mov S I , - 2 4 [ BP ]
mov AX,+5 [SI]
mov @ UW+ 6, AX
mov SI ,-24 [BP]
mov AX,+7 [SI]
mov Q UW+ 8, AX
mov AX, QUW+6 sub AX, QUW+2 mov @ UW+ 10, AX
mov AX, @ UW+ 8 sub AX, @UW+4 mov @UW+12 ,AX
mov AX, QUW+l0 cs~rd push DX
push AX
mov AX, @UW+10 cwd pu sh DX
push AX
call $LMUL
pop AX
pop DX
pu sh DX
pu sh AX
mov AX, @UW+12 cwd push DX
push AX
mov AX, QUW+12 cwd push DX
push AX
call $LMUL

.~

~33~;

pOp AX
pop DX
pop BX
pop CX
add BX,AX
adc CX,DX
pu sh CX
push BX
call ISQRT
add SP, 4 mov @UW,AX
. OFE: ; 93 push WORI) PTR ~UW+l~
call ~ABS
add SP, 2 push AX
push WORD PTR ~UW+10 call @ABS
add SP,2 pop DX
cmp AX, DX
j le . 0152 push WORD PTR @UW
call CVSITSF
add SP, 2 push DX
pu sh AX
push WORD PTR @ UW+ 10 call CVSITSF
add SP, 2 push DX
push AX
mov SI, +6 [ BP ]
mov AX, [SI]

33~

sub AX,@UW+2 push AX
call CVSITSF
add SP,2 pu~h DX
push AX
call SFDIV
add SP,8 push DX
push AX
call SFMUL
add SP,8 jmp SHORT .018A
.0152: ;97 push WORD PTR @UW
call CVSITSF
add SP,2 push DX
push AX
push WORD PTR @UW~12 call CVSITSF
add SP,2 push DX
push AX
mov SI,+8[BP]
mov AX,[S~]
sub AX,@UW+4 push AX
call CVSITSF
add SP,2 push DX
push AX
call SFDIV
add SP,8 push DX
push AX
call SFMUL
add SP,8 .018A: ;97 mov -16[BP],AX
mov -14[BP],DX
push ~ORD PTR -6[BP]
push WORD PTR -8[BP3 push WORD PTR -14[BP]
push WORD PTR -16[BP]
call SFADD
add SP,8 mov -12[BP],AX
mov -10[BP],DX
push WOR~ PTR -10[BP]
push WORD PTR -12[BP]
call CVSFTSI
add SP,4 cmp AX,0 jge .0212 mov AX,@UW+2 mov SI,+6[BPj mov [SI],AX
mov AX,@UW+4 mov SI,~8[BP]
mov [SI],AX
mov AX,-12[BP]
mov DX,-10[BP]
mov -8[BP],AX
mov -6[BP],DX
mov AX,-24[BP~
mov -22[BP],AX
sub AX,5 5~

cmp AX,-20 [BP]
jae . 0203 push WORD PTR -6 [BP]
push WORD PTR -8 [BP]
push WORD PTR -2 [BP]
push WORD PTR -4 [BP]
call SFSUB
add SP, 8 push DX
push AX
call RSFTSI
add SP, 4 mov SP, BP
pop BP
ret . 0203: ; 109 mov AX, -2 4 [BP]
mov -22 [BP] ,AX
sub AX,5 mov --24 [BP] ,AX
jmp . 0330 . 021~: ; 110 push WORD PTR -10 [BP]
push WORD PTR -12 [BP]
call CVSFTS I
add SP, 4 cmp AX, @UW
jg ?3 j mp . 0 2AF
?3 mov AX, @UW~6 mov SI, +6 [BP]
mov [SI] ,AX
mov AX, @UW+8 3~
-206- NPhM

mov SI,+8 [BP]
mov [SI] ,AX
push WORD PTR @UW
call CVSITSF
add SP, 2 push DX
push AX
push WORD PTR -10 [BP]
push WORD PTR -12 [BP]
call SFSUB
add SP,8 mov -8 [BP] ,AX
mov -6 [BP] ,DX
mov AX , - 2 4 ~ BP ]
mov -22 [BP] ,AX
add AX,5 push AX
mov AX,-20 [BP]
pu sh AX
mov BX, 5 mov SI,+4 [BP]
mov SI , +2 E SI ]
mov AL,+2 [SI]
and AX,255 mul BX
pop SI
add SI ,AX
sub SI,5 pop DI
cmp SI ,DI
ja . 02A0 push WORD PT~ -6 [BP]
push WORD PTR -8 [BP]
push WORD PTR -2 [BP3 33~
-~ -207- NP~M

push WOR~ PTR -4[BP]
call SFSUB
add SP,8 push DX
push AX
call RSFTSI
add SP,4 mov SP,BP
pop BP
ret .02A0: j118 mov AX,-24[BP]
mov -22[BP],AX
add AX,5 mov -24[BP],AX
jmp .0330 .02AF: ;ll9 push WORD PTR -10[BP]
push WORD PTR -12[BP]
push WORD PTR QUW
call CVSITSF
add SP,2 push DX
push AX
push WORD PTR ~UW~10 call CVSITS~
add SP,2 push DX
push AX
call SFDIV
add SP,8 push DX
push AX
call SFMVL

.

3~

add SP, 8 push DX
push AX
ca 1 l RSFTS I
add SP, 4 add AX, ~UW-~2 mov SI, +6 [ BP
mov [SI] ,AX
push WORD PTR --10 [BP]
pu~h WORD PTR -12 [BP~
push WORD PTR @UW
call CVSITSF
add SP, 2 push DX
push AX
push WORD PTE~ 12 call CVSITSF
add SP, 2 pu sh DX
push AX
call SFDIV
add SP, 8 push DX
pu sh AX
call SFMUL
add SP, 8 push DX
push AX
call RSFTSI
add SP, 4 add AX~ ~UW+4 mov SI,+8 [BP]
mov ~SI~ ,AX
mov AX, 18 ~ BP ]

mov SP, BP
pop BP
ret . 0330: ; 129 jmp . 043 . 0333: ; 130 mov SP, BP
pop BP
ret NPAM ENDP

~ CODE ENDS
QCODE: SEGMENT BYTE PUBLIC ' CODE ' include epilogue . h end 335~

include prologue.h public M Q UF
@CODE ENDS
QDATAB SEGMEMT
extrn ICOURSE:word extrn HIST:word @DATAB ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' @CODE ENDS
extrn IATAN2:near extrn ISQRT:near @CODE SEGMENT BYTE PUBLIC 'CODE' MCBUF PROC NEAR
@CODE ENDS
extrn ~L~UL~nea~

@CODE SEGMENT BYTE PUBLIC 'CODE' .00: ;36 push BP
hP~
~Ub ~P,24 mov SI,+4[BP~
mov SI,+4[SI]
mov -18[BP],SI
mov -16~BP],SI
mov AX,0 3~;

mov HIST+4,AX
mov SI,~18[BP]
mov AX,~5[SI]
mov SI,-18[BP]
sub AX,[SI]
push AX
mov SI~18[BP]
mov AX,+7[SI]
mov SI,-18[BP]
sub AX,~2[SI]
push AX
call IATAN2 add SP,4 mov -10[BP],AX
mov AX,-10[BP]
mov -8[BP],AX
mov AX,-l mov -12~BP],AX
mov AX,-10[BP]
sub AX,ICOURSE
cmp AX,16384 jle .056 jmp SHORT .063 .056: ,76 mov AX,-10[BP~
sub AX,ICOURSE
cmp AX,-16384 jge .07C
.063 ;76 mov AX,l mov -12[BP],AX
add WORD PTR -16[BP],5 mov AX,-32768 mov DX,-l ~ ~.

.... _.... ._ 3~;

mov BX,-8[BP]
add BX,AX
mov -8[BP],BX
.07C ;84 mov AX,O
mov -6[BP],'iAX
mov -4[BP],AX
mov SI,+4[BP]
mov SI,[SI]
mov DI,+4[BP]
mov DI,[DI]
add SI,+8[DI]
mov DI,+4[BP]
mov DI,~2[DI]
add SI,+4[DI]
mov -14[BP],SI
.09E: ;93 mov AX,-16[BP]
cmp AX,-14[BP]
jae ?1 jmp ~020D
?1:
mov AX,-14[BP]
push AX
mov BX,5 mov SI,+4~BP]
mov SI,+2[BP]
mov AL,+2[SI]
and AX,255 mul BX
pop SI
add SI,AX
sub SI,5 cmp SI,-16[BP]

;5 - ' .

.

3~

jae ?2 jmp . 020D
? 2 :
mov SI,-16 [BP]
mov BX, 5 mov AX,-12 [BP~
imul BX
sub S I, AX
mov AX, [SI]
mov S I , - 1 6 [BP ]
sub AX, [SI]
push AX
mov SI,-16 [BP]
mov BX,5 mov AX,-12~BP]
imu l BX
sub SI ,AaC
mov AX, +2 [SI]
mov SI,-16 [BP]
sub AX,+2 [SI]
push AX
call IATAN2 add SP, 4 mov -10 [BP] ,AX
mov SI,-16 [BP]
moY AX,~2 [SI]
sub AX , + 8 l BP ]
cwd push DX
push AX
mov SI, -16 [BP]
mov AX, +2 [ SI ]
sub AX,+8 [BP]
cwd 33~;

push DX
push AX
call $LMUL
pop AX
pop DX
push DX
push AX
mov SI,-16 ~BP]
mov AX, [SI]
sub AX,+6 [BP]
cwd push DX
push AX
mov SI,-16 [BP]
mov AX, [SI]
sub AX , +6 [ BP ]
cwd push DX
push AX
call $LMUL
pop AX
pop DX
pop BX
pop CX
add BX, AX
adc CX ~ DX
push CX
push BX
call ISQRT
add SP, 4 mov -2 [BP~ ,AX
mov AX,-2 [BP]
add -4 [BP] ,AX
. 0153: ; 113 ~, ~

3~

lea AX,HIST+134 mov DX,HIST+2 shl DX,l add AX,DX
mov SI ,AX
mov AX, [SI]
push AX
lea AX,HIST+134 push AX
mov AX,16 pu sh AX
mov AX,HIST+2 add AX,-6~BP]
pop BX
cwd idiv BX
shl DX,l pop SI
add S I, DX
pOp AX
sub AX,[SI]
mov -24[BP],AX
cmp AX,-4[BP]
jge .OlE9.
mov AX,-24[BP3 cmp AX,+lO~BP]
jge .OlE9 mov AX,-lO[BP]
mov DX,-lO[BP~
sub DX,-8~BP]
mov BX,l mov CX,BX
sar DX,~L
sub AX,DX

.~.~. . , - ~ . ~ -P

3~

lea DX,HIST+70 mov BX,-6[BP]
shl BX,1 add DX,BX
mov SI,DX
mov [SI],AX
mov AX,-lO[BP]
mov -8[BP],AX
mov AX,-6[BP]
add AX,l mov HIST-~4,AX
mov AX,HIST-~4 cmp AX,+12[BP]
jl .OlCC
jmp SHORT .020~
.OlCC: ;122 . mov AX,16 puSh AX
mov AX,HIST+2 add AX,-6fBP]
pop BX
cwd idiv BX
- cmp DX,HIST
jne .OlE3 jmp SHORT .020D
.OlE3: ;124 inc WO~D PTR -6[BP]
jmp .0153 .OlE9: ;126 mov SI~-16[BP]
mov AX,[SI]
mov +6[BP],AX
mov SI,-16[BP]

3~i mov AX,+2 [SI]
mov +8 [BP] ,AX
mov BX, 5 mov AX,-12 [BP~
imu l BX
mov DX,-16 [BP]
add DX, AX
mov -16 [BP] ,DX

jmp . 09E
. 020D: ; 131 mov SP,BP
pop BP
ret MCBUF ENDP

@CODE ENDS
@CODE SEGMENT BYTE PUBLIC ' CODE ' include epilogue.h end @BIGMODEL EQU 0 include prologue.h public CORELATE
@CODE ENDS
@DATAB SEGMENT
extrn HIST:word @DATAB ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' ~CODE ENDS
extrn ISQRT:near @CODE SEGMENT BYTE PUBLIC 'CODE' CORELATE PROC NE~R
@CODE ENDS
extrn $LSDIV:near extrn $LLSHIFT:near ~CODE SEGMENT BYTE PUBLIC 'CODE' .00: ;17 push BP
, mov BP,SP
sub SP,14 mov AX,0 mov DX,0 mov -8~BP],AX
mov -6~BP],DX
mov AX,0 mov -14~BP],AX
mov AX,HIST+2 3~;

mov -12 [BP],AX
. 01F: ; 37 lea AX, HIST+6 mov DX , ~ l 2 l BP ]
shl DX, l add AX, DX
~lov SI, AX
mov AX, [SI]
lea DX,HIST+70 mov BX,-14 lBP]
shl BX ,1 add DX, BX
mov SI,DX
sub AX, [SI]
mov DX, 8 mov CX, DX
sar AX,CL
rnov -4 lBP] ,AX
mov AX,-4 lBP]
imul WORD PTR ~4 lBP]
cwd mov BX,-8 ~BP]
mov CX,-6 lBP]
add BX, AX
adc CX, DX
mov -8 [BP],BX
mov -6 ~BP] ,CX
mov AX,-12 [BP]
mov -10 [BP~ ,AX
mov AX, 16 push AX
inc WORD PTR -12 [BP]
mov AX / -12 [BP]
pop BX

3~
- 2 2 0 - CORELAT~' cwd idiv BX
mov -12 [BP] ,DX
.075: ;43 inc WORD PTR -14 [BP]
mov AX,-14 [BP]
cmp AX, HI ST+ 4 j ge . 0 8C
mov AX,HIST
cmp AX,-10 [BP~
je . 08C
jmp SHORT . 0 lF
.08C: ;43 mov AX,-14 [BE']
cwd push DX
push AX
push WORD PTR -6 [BP]
push WORD PTR -8 [BP]
call $LSDIV
pop AX
pop DX
push DX
pu sh AX
mov AX, 16 mov DX, 0 push DX
push AX
call $LLSHIFT
pop AX
pop DX
push DX
push AX
oall ISQRT

, ~

~L~2~3~
-221- CORE~TE

add SP,4 mov SP,BP
pop BP
ret CORELATE ENDP

~CODE ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' include epilogue.h end , - .

, 3~i -222- IpTDrsT

@BIGMODEL EQU 0 include prologue.h public IPTDIST
QCODE ENDS
extrn CVSFTSL:near extrn SFADD:near extrn SFSUB:near extrn SFMUL:near extrn SFDIV:near extrn ISQRT:near QCODE SEGMENT BYTE PUBLIC 'CODE' IPTDIST PROC NEAR
.~0: ;21 push BP
mov BP,SP
suh SP,28 push WORD PTR ~20[BP~
push WORD PTR +18[BP]
push WORD PTR +24[BP]
push WORD PTR +22[BP]
call SFSUB
- add SP,8 mov -8[BP],AX
mov -6[BP],DX
push WORD PTR ~6~BP]

.

3~

push WORD PTR +4[BP]
pu sh WORD PTR +10[BP]
push WORD PTR +8[BP]
call SFSUB
add SP,8 mov -4[BP],AX
mov -2[BP],DX
push WORD PTR 2[BP]
push WORD PTR -4[BP]
push WORD PTR -2[BP]
push WORD PTR -4[BP~
call SFMUL
add SP,8 push DX
push AX
push WO~D PTR -6[BP]
push WORD PTR -8[BP]
push WORD PTR -6[BP]
push WORD PTR -8[BP]
call SFMUL
add SP,8 push DX
push AX
call SFADD
add SP,8 mov -20[BP],AX
mov -18[BP],DX
push WORD PTR -6[BP]
push WORD PTR -8~BP]
push WORD PTR +28[BP]
pu~h WORD PTR +26[BP]
ca 11 SFMUL
add SP,8 push DX

push AX
push WORD PTR -2[BP]
push WORD PTR -4[BP]
push WORD PTR +14[BP]
push WORD PTR +12[BP]
call SFMUL
add SP,8 push DX
push AX
call SFADD
add SP,8 mov -16~BP],AX
mov -14[BP],DX
push WORD PTR +~4[BP]
push WORD PTR +22[BP]
push WORD PTR +6[BP]
push WORD PTR +4[BP]
call SFMUL
add SP,8 push DX
push AX
push WORD PTR +20[BP]
push WORD PTR ~18[BP]
push WORD PTR +l0[BP]
push WORD PTR +8[BP]
call SFMUL
add SP,8 push DX
push AX
call SFSUB
add SP,8 mov -12[BP],AX
mov -10[BP],DX
push WORD PTR ~18[BP~

' ~'' ' ~ .

push WORD PTR -20[BP]
push WORD PT~ -10[BP]
push WORD PTR -12~P]
push WORD PTR -6[BP]
push WORD PTR -8lBP]
call SFMUL
add SP,8 push DX
push AX
push WORD PTR -14[BP]
push WORD PTR -16[BP]
push ~ORD PTR -2[BP]
push WORD PTR -4[BP]
call SFMUL
add SP,8 push DX
push AX
call SFSUB
add SP,8 push DX
push AX
call SFDIV
add SP,8 mov -28[BP]jAX
mov -26[BP],DX
push WORD PTR -18[~P]
push WORD PTR -20[BP]
push WORD PTR -14[BP]
push WORD PTR -16[BP]
push WORD PTR -6[BP]
push WO~D PTR -8[BP]
call SFMUL
add SP,8 push DX

~,-i,~..

~ ." . ~ .

push AX
push WORD PTR -lO[BP]
push WORD PTR -12[BP]
push WORD PTR -2[BP]
push WO.RD PTR -4[BP]
call SFMUL
add SP,8 push DX
push AX
call SFADD
add SP,8 push DX
push AX
call SFDIV
add SP,8 mov -24[BP],AX
mov -22[BP] ,DX
push WORD PTR +14[BPJ
push ~JORD PTR +12[BP]
push WORD PTR -26[BP3 push WORD PTR -28[BP]
call SFSUB
add SP,8 mov -20[BP],AX
mov -18[BP],DX
push WORD PTR +28~BP]
push WORD PTR +26[BP]
push WORD PTR -22[BP]
push WORD PTR -24[BP]
call SFSUB
add SP,8 mov -16[BP],AX
mov -14[BP],DX
push WORD PTR -14[BP3 ' : ~' push WORD PTR -16[BP]
push WORD PTR -14~BP]
push WORD PTR -16[BP]
call SFMUL
add SP,8 push DX
push AX
push WORD PTR -18[BP]
push WORD PTR -20[BP]
push WORD PTR -18[BP]
push WORD PTR -20[BP]
call SFMUL
add 5P,8 push DX
push AX
call SFADD
add SP,8 mov -20[BP],AX
mov -18[BP],DX
mov AX,-28[BP]
mov DX,-26[BP]
mov SI,~16[BP]
mov [SI],AX
mov ~2~SI],DX
mov AX,-24[BP]
mov DX,-22[BP]
mov SI,+30[BP]
mov [SI],AX
mov +2[SI],DX
push WORD PTR -18[BP]
push WORD PTR -20~BP]
mov AX,127 mov DX,-32768 push DX

push AX
call SFADD
add SP,8 push DX
push AX
call CVSFTSL
add SP,4 push DX
push AX
call ISQRT
add SP,4 mov SP,BP
pop BP
ret IPTDIST ENDP

@CODE ENDS
QCODE SEGMENT BYTE PU~LIC 'CODE' include epilogue.h end :;~
. ~. - .

3~
-229- ~EP MOD

include prologue.h public QEP MOD
@CODE ENDS
@DATAB SEGMENT
extrn IQEPX:word extrn IQEPY:word extrn DRPX:word extrn IDRPY:word extrn STRDAT:word @DATAB ENDS
QCODE SEG~ENT BYTE PUBLIC 'CODE' QCODE ENDS
extrn SFADD:near extrn SFMUL:near extrn CVSLTSF:near extrn CVSITSF:near extrn CVSFTSL:near extrn IPTDIST:near extrn SEINCLSV: near .

-230- ~EP MCD

extrn SFCMP:near extrn PRIORITY:near extrn QEP_EXP:near extrn ISQRT:neax @CODE SEGM~NT BYTE PVBLIC 'CODE' QEP_MOD PROC NEAR
@CODE E~DS
extrn $LLSHIFT:near QCODE SEGMENT BYTE PUBLIC 'CODE' .00: ;42 push BP
mov BP,SP
sub SP,114 mov AX,0 mov -114[BP],AX
.0C: ;71 cmp WORD PTR -114[BP~,4 jge .06A
lea SI,IQEPX
mov AX,-114[BP]
shl ~X,1 shl AX,1 add SI,AX
push WORD PTR +2[SI]
push WORD PTR [SI]
call CVSLTSY
add SP,4 lea SI,-40[BP]
mov BX,-114[BP]

3~
-2~1-- EP MOD

shl BX,l shl BX ,1 add SI, BX
mov [SI] ,AX
mov +2[SI],DX
lea SI, IQEPY
mov AX,-114 [BP]
shl AX, 1 shl AX,l add SI, AX
push WORD PTR +2 [SI]
push WORD PT~ [ SI
cail CVSLTSF
add SP, 4 lea SI,-24 [BP]
mov BX,-114 [BP]
shl BX, 1 shl BX, 1 add SI ,BX
mov [SI] ,AX
mov +2 [SI] ,DX
. 065: ; 74 inc WORD PTR -114 [BP]
~mp SHORT ~ 0C
. 06A: ; 74 mov SI,+4 [BP]
mov AX, [SI]
cwd push DX
push AX
mov AX,16 mov DX, 0 push l:)X
push AX

, ., ~335~

ca l l $LLSHIFT
pop AX
pop DX
sub AX, IDRPX
sbb DX, IDPRX~2 push DX
push AX
ca l l CVSLTSF
add SP,4 mov -56 [BP] ,AX
mov -54 [BP] ,DX
mov SI,+4 [BP]
mov SI, +4 [ SI ]
cwd push DX
push AX
mov AX, 16 mov DX, 0 push DX
push AX
ca 11 $LLSH IFT
pop AX
pop DX
sub AX, IDRPX
sbb DX, IDRPX+2 push DX
push AX
call CVSLTSF
add SP, 4 mov -48 [BP] ,AX
mov -46 [BP] ,DX
mov SI,+4 [BP]
mov AX , +2 [ SI
cwd 33~;

push DX
push AX
mov AX, 16 mov DX, O
push DX
push AX
call $LLSHIFT
pop AX
pop DX
sub AX, IDRPY
sbb DX, IDRPY+2 push DX
push AX
call CVSLTSF
add SP,4 mov -52[BP],AX
mov -50[BP],DX
mov SI,+4[BP]
mov AX,+6[SI]
cwd push DX
push AX
mov AX,16 mov DX,0 push DX
push AX
call $LLSHIFT
pop AX
pop DX
sub AX,IDRPY
sbb DX, IDRPY+Z
push DX
push AX
call CVSLTSF

3~

add SP,4 mov -44[BP],AX
mov -42[BP],DX
lea SI,-100[BP]
push SI
mov AX,0 cwd push DX
push AX
push WORD PTR -42[BP]
push WORD PTR -44[BP]
push WORD PTR -50[BP]
push WORD PTR -52[~P]
lea SI,-104[BP]
push SI
mov AX,0 cwd push DX
push AX
push WORD PTR -46[BP]
push WORD PTR -48[BP]
push WORD PTR -54[BP]
push WORD PTR -56[BP]
call IPTDIST
add SP,28 push WORD PTR -98[BP]
push WORD PTR -100[BP]
push WORD PTR -42[BP]
push WORD PTR -44[BP]
push WORD PTR -50[BP]
push WORD PTR -52[BP]
push WORD PTR -102[BP]
push WORD PTR -104[BP]
push WORD PTR -46[BP]

r ~
~ ~ .

3~

push WORD PTR -48[BP]
push WORD PTR -54[BP]
push WORD PTR -56[BP]
call SFINCLSV
add SP,2~
o~ AX,AX
jne ?1 jmp .0530 ?1:
mov AX,511 mov DX,-l mov -64[BP],AX
mov -62tBP],DX
mov AX,255 mov DX,-l mov -60[BP],AX
mov -58[BP],DX
mov SI,+4[BP]
mov DI,+4[BP]
mov AX,[DI]
cmp AX,+4[SI]
jne ?2 jmp .0300 ?2:
mov AX,0 mov -114[BP],AX
.OlAA: ,103 cmp WORD PTR -114[BP],4 jl ?3 jmp .02FD
?3:
lea AX,-80[BP]
mov DX,-114[BP]
shl DX,l }
.

~2~3~;~

shl DX,l add AX,DX
push AX
mov AX, 127 mov DX,-32768 push DX
push AX
lea SI,-24 [BP]
mov AX,4 pu sh AX
mov AX, -11 4 ~13P
add AX, l pop BX
cwd idiv BX
shl DX,l shl DX, 1 add SI, DX
push WORD PTR +2 [SI]
push WORD PTR [SI]
lea SI, -2 4 [ BP ]
mov AX, -114 [BP ]
shl AX,l shl AX ,1 add SI ,AX
push WORD PTR +2 [SI]
pu sh WORD PTR [ S I ]
call SFADD
add SP, 8 push DX
push AX
call SFMUL
add SP, g push DX

push AX
push WORD PTR -42[BP]
push WORD PTR -44[BP]
push WORD PTR -50[BP]
push WORD PTR -52[BP]
lea AX,-96 [BP]
mov DX,-114[BP]
shl DX ,1 shl DX ,1 add AX, DX
push AX
mov AX, 127 mov DX,-32768 push DX
push AX
lea SI,-40 [BP]
mov AX,4 pu sh AX
mov AX,-114 [BP]
add AX,l pop BX
cwd idiv BX
shl DX ,1 shl DX ,1 add SI,DX
push WORD PTR +2~SI]
push ~ORD PTR [SI]
lea SI,-40 ~BP]
mov AX , - 1 1 4 [BP ]
shl AX ,1 shl A~ ,1 add SI ,AX
push WORD PTR +2[SI]

, .
. ~ .

. ~ ;

~2~3~;
-238- ~EP MOD

push WORD PTR [SI]
call SFADD
add SP,8 push DX
push AX
call SFMUL
add SP,8 pu sh DX
push AX
push WORD PTR 46[BP]
push WORD PTR -48[BP]
push WORD PTR -54[BP]
push WORD PTR -56 [BP]
call IPTDIST
add SP,28 mov -108[BP],AX
push WORD PTR -58[BP]
push WORD PTR -60[BP]
lea SI,-96[BP]
mov AX,-114[BP]
shl AX,l shl AX,l add SI,AX
push WORD PTR ~2[SI]
push WORD PTR [SI]
call SFCMP
add SP,8 cmp AX,-1 jne .02B8 mov AX,-114[BP]
mov -112[BP],AX
lea SI,-96[BP]
mov AX,-114[BP~
shl AX,1 i i .~ , . .; ~

3~;
-239- ~EP MOD

shl AX,l add SI,AX
mov AX,[SI]
mov DX,+2[SI]
mov -60lBP],AX
mov -58[BP] ,DX
.02B8: ;115 push ~ORD PTR -62[BP]
push WORD PTR -64[BP]
lea SI,-96[BP]
mov AX,-114[BP]
shl AX,l shl AX,1 add SI,AX
push WORD PTR +2[SI]
push WORD PTR [SI]
call S~CMP
add SP,8 cmp AX,l jn~ .02F7 mov AX,-114[BP]
mov -110~BP],AX
lea SI,-96[BP]
mov AX,-114[BP]
shl AX,1 shl AX,l add SI,AX
mov AX,lSI]
mov DX,+2[SI]
mov -64[BP],AX
mov -62[BP],DX
.02F7: ;119 inc WORD PTR -114[BP]
jmp .01AA

3~

.02FD: ;119 jmp .0459 .0300 ;120 mov AX,0 mov -114[BP],AX
.0306: ;121 cmp WORD PTR -114[BP],4 jl ?4 jmp .0459 ?4:
lea AX,~80[BP]
mov DX,-114[BP]
shl DX,l shl DX,l add AX,DX
push AX
mov AX,127 mov DX,-32768 push DX
push AX
lea SI,-24~BP]
mov AX,4 push AX
mov AX,-114[BP]
add AX,1 pop BX
cwd idiv BX
shl DX,l shl DX,l add SI,DX
push WORD PTR +2[SI]
push WORD PTR ~SI]
lea SI,-24~BP~

mov AX,-114[BP]
shl AX,l shl AX,l add SI,AX
push WORD PTR +2[SI]
push WORD PTR ~SI3 call SFADD
add SP,8 push DX
push AX
call SFMUL
add SP,8 push DX
push AX
push WORD PTR -42[BP]
push WORD PTR -44[BP]
push WORD PTR -50[BP]
push WORD PTR -52[BP]
lea AX,-96[BP]
mov DX,-114[BP]
shl DX,1 shl DX,1 add AX,DX
push AX
mov AX,127 mov DX,-32768 push DX
push AX
lea SI,-40[BP]
mov AX,4 push AX
mov AX,-114[BP]
add AX,1 pop BX

.

~ `''.~c 3~;
-242- gEP .~o~

cwd idiv BX
shl DX,l shl DX,l add SI,DX
push WORD PTR +2[SI]
push WORD PTR [SIJ
lea SI,-40[BP]
mov AX,-114[BP]
shl AX,1 shl AX,1 add SI,AX
push WORD PTR +2[SIJ
push ~ORD PTR [SI]
call SFADD
add SP,8 push DX
push AX
call SFMUL
add SP,8 push DX
push AX
push WO~D PTR -46[BP]
push WORD PTR -48[BP]
push WQRD PTR -54[BP]
push WORD PTR -56[BP]
call IPTDI5T
add SP,28 mov -108[BP],AX
push WORD PTR -58[BP]
push WORD PTR -60~BP3 lea SI,-80[BP]
mov AX,-114[BP~
shl AX,1 3~

shl AX,l add SI,AX
push WORD PTR +2 [SI]
push WORD PTR [SI]
call SFCMP
add SP, 8 cmp AX,-1 jne . 0414 mov AX, - 11 4 [BP]
mov -112 [BP] ,AX
lea SI,-80 [BP]
mov AX,-114 [BP]
shl AX ,1 shl AX,l add S I, AX
mov AX, [SI]
mov DX,+2 [SI]
mov -60 [BP] ,AX
mov -58 [BP] ,DX
.0414: ;133 push WORD PTR -6 2 [ BP ]
push WORD PTR --64 [BP]
lea SI,-80 fBP]
mov AX,-114 [BP]
shl AX,l sh l AX, 1 add SI ,AX
push WORD PTR ~2 fSI]
push WORD PTR [ SI ]
ca 11 SFCMP
add SPr8 jne . 0453 mov AX,-114 [BP]

.~

.
~ ! ~c~

3~6 -244- ~EP MOD

mov -110 [BP] ,AX
lea SI,-80 [BP]
mov AX,-114 [BP]
shl AX,1 shl AX, 1 add S I, AX
mov AX, [SI~
mov DX,+2 [SI]
mov -64 [BP] ,AX
mov -62 [BP] ,DX
. 0453: ; 137 inc WORD PTR -114 [~P]
jmp . 0306 . 0459: ; 138 mov SI ,STRDAT
mov AL , +1 [ SI ]
cbw push AX
call PRIORITY
add SP, 2 mov -106 [BP] ,AX
mov AX ,--1 0 6 [ BP ]
imu1 WORD PTR -10 6 [BEi ]
add AX, 196 cwd push DX
push AX
call ISQRT
add SP, 4 push AX
mov AX, 0 push AX
lea SI ,-80 [BP]
mov AX,-110 [BP]

33~6 shl AX, 1 shl AX,l add SI ,AX
push WORD PTR +2 [SI]
push WORD PTR [Sl]
lea SI , ~ 8 0 [ BP ]
mov AX,-112 [BP]
shl AX, l shl AX ,1 add S I, AX
push WORD PTR +2[SI]
push WORD PTR [SI]
lea SI ,-96 [BP]
mov AX , - 1 1 0 [ BP ]
shl AX,l shl AX,1 add SItAX
push WORD PTR +2[SI]
push WORD PTR [SI]
lea SI ,-96 [BP]
mov AX,-112 [BP]
shl AX, 1 shl AX ,1 add SI,AX
push WORD PTR +2 [SI]
push WORD PTR [SI]
call QEP EXP
add SP,20 push WORD PTR -102[BP]
push WORD PTR -104~BP]
ca l l CVSFTSL
add SP, 4 mov -8 [BP],AX
mov -6[BP],DX

3~6 -246- ~EP MOD

push WORD PTR -98[BP]
push WORD PTR -100[BP]
call CVSFTSL
add SP,4 mov -4[BP],AX
mov -2[BP],DX
mov AX,-8[BP]
mov DX,-6[BP]
mov BX,IDRPX
mov CX,IDRPX+2 add BX,AX
adc CX,DX
mov IDRPX,BX
mov IDRPX,+2,CX
mov AX,-4[BP]
mov DX,-2[BP]
mov BX,IDRPY
mov CX,IDRPY~2 add BX,CX
adc CX,DX
mov IDRPY,BX
mov IDRPY+2,CX
mov AX,0 mov -114[BP3,AX
.052B: ;163 cmp ~ORD PTR -114[BP],4 jge .0579 mov AX,-8[BP]
mov DX,-6[BP~
lea SI,IQEPX
mov BX,-114[BP]
shl BX,l shl BX,1 add SI,BX

' 3~
-2 4 7- Q~:P MOD

mov BX, [SI]
mov CX,+2 [SI]
sub BX,AX
sbb CX, DX
mov ~SI] ,BX
mov +2 [ SI ] , CX
mov AX,-4 ~BP]
mov DX , - 2 [BP ]
lea SI, IQEPY
mov BX,-114 [BP]
shl BX, 1 shl BX,l add SI ,BX
mov BX, [SI]
mov CX,+2 [SI]
sub BX, AX
sbb CX, DX
mov [SI] ,BX
mov +2 [SI],CX
. 0574: ; 167 inc WORD PTR -114 [BP]
jmp SHORT . 052B
. 0579: 167 mov AX, 1 mov SP, BP
pop BP
ret . 0580: ; 170 mov AX, 0 mov SP,BP
pop BP
ret QEP MOD ENL)P

~ ~ ...;, 3~

@ CODE ENDS
~CODE SEGMENT BYTE PUBLIC ' CODE ' include epilogue. h end .

3~

@BIGMODEL EQU 0 include prologue.h public UPDSTCAL
@CO~E ENDS
~DATAB SEGMENT
extrn COMPASS:word extrn DISTCAL:word extrn IDRPX:word extrn IDRPY:word @DATAB ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' @CODE ENDS
extrn LABS: near extrn IATAN2:near extrn @ABS:near ~CODE SEGMENT BYTE PUBLIC 'CODE' UPDSTCAL PROC NEAR
@CODE ENDS
extrn $LRSSHIFT:near @CODE SEG~NT BYTE PUBLIC 'CODE' .00: ;30 push BP
mov ~P,SP

~ ` :

2 5 0 - UP~ STCAL

- sub SP, 4 mov AX, COMPASS
sub AX , +4 [ BP ]
push AX
call @ABS
add SP, 2 mov -4 [BP] ,AX
cmp WORD PTR -4 [BP] ,13653 jge . 020 jmp SHORT . 027 .020: ;~5 cmp WORD PTR -4 [BP] ,20935 jle .02B
. 027 ~
mov SP, BP
pop BP
ret .02B: ;50 mov AX, IDRPX
mov DX, IDRPX~2 sub AX, ~6 [BP]
sbb DX,+8 [BP]
push DX
push AX
call LABS
add SP, 4 push DX
push AX
mov AX, IDRPY
mov DX, IDRP~+2 sub AX,+10 lBP]
sbb DX, +12 [E3P]
push DX
pu sh AX

~233~;
~251- UPDSTCAL

call LABS
add SP, 4 pop BX
pop CX
add BX, AX
adc CX, DX
cmp CX, 10 jg . 06F
jne . 06B
cmp BX,0 jae . 06F
.06B: ;50 mov SP,BP
pop BP
ret .06F: ;54 mov AX, IDRPX
mov DX, IDRPX+2 sub AX,+6 [BP]
sbb DX,+8 [BP]
push DX
push AX
mov AX, 16 mov DX, 0 push DX
push AX
call $LRSSHIFT
pop AX
pop DX
push AX
mov AX, IDRPY
mov DX, DRPY+ 2 sub AX , + 1 0 [ BP
sbb DX,+12 [BP]

3~

push DX
push AX
mov AX,16 mov DX,O
push DX
push AX
call $LRSSHIFT
pop AX
pOp DX
push AX
call IATA1~2 add SP,4 mov -2[BP],AX
mov AX,-2[BP~
sub AX,+4[BP]
cmp AX,~550 jge .OFB
mov AX,-2[BP]
sub AX,+4[BP]
cmp AX,-4550 jle .OFB
mov AX,DISTCAL
mov DX,DISTCAL~2 push DX
push AX
mov AX,14 mov DX,O
push DX
push AX
call $LRSSHIFT
pop AX
pop DX
mov BX,DISTCAL
mov CXyDISTCAL+2 3~
~253- UPDSTC~L

add BX,AX
adc CX,DX
mov DISTCAL,BX
mov DISTCAL+2,CX
mov SP,BP
pop BP
ret .OFB: ;64 mov AX,-2[BP]
sub AX,+4[BP]
cwd cmp DX,-l jg . 0111 jne .OlOF
cmp AX,-28218 jae .0111 .OlOF: ;64 jmp SHORT .0125 .0111 ;64 mov AX,-2[BP]
sub AX,+4[BP]
cwd cmp DX,-l ,1 .0154 jne .0125 cmp AX,28218 jbe .0154 .0125 ;64 mo~ AX,DISTCAL
mov DX,DISTCAL+2 push DX
push AX
mov AX,14 mov DX,O

, ,"

3~

push DX
push AX
call SLRSSHIFT
pop AX
pop DX
mov BX,DISTCAL
mov CX,DISTCAL+2 sub BX,AX
sbb CX,DX
mov DISTCAL,BX
mov DISTCAL+2,CX
mov SP,BP
pOp BP
ret .0154 ;71 mov SP,BP
pop BP
ret UPDSTCAL ENDP

QCODE ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' include epilogue.h end , :: ' 'ib ~BIGMODEL EQU 0 include prologue.h pub1ic DEVCORR
QCODE ENDS
@DATAB SEGMENT
extxn DEV:word @DATAB ENDS
@CODE SEGMENT BYTE PUBLIC 'CODE' DEVCORR PROC NEAR
~CODE ENDS
extrn $LRSSHIFT:near extrn $LMUL:near QCODE SEGMENT ~YTE PUBLIC 'CODE' ~00 ;15 push BP
mov BP,SP
sub SP,6 mov AX,32 push AX
mov AX,-32768 mov DX,0 add AX,+4[BP]
mov DX,11 mov CX,DX
shr AX,CL
pop BX
xor DX,DX
div BX

. . .

mov -6[BP],DX
lea SI,DEV
mov AX,-6[BP]
shl AX,l shl AX,1 add SI,AX
mov AX,[SI]
mov DX,+2[SI]
push DX
push AX
mov AX,16 mov DX,0 push DX
push AX
call $LRSSHIFT
pop AX
pOp DX
mov -4[BP],AX
lea SI,DEV
mov AX,32 push AX
mov AX,-6[BP]
add AX,l pop BX
cwd idiv BX
shl DX,1 shl DX,l add SI,DX
mov AX,[SI]
mov DX,+2[SI]
push DX
push AX
mov AX,16 3~;

mov DX,0 push DX
push AX
call $LRSS~IFT
PE' ~X
pop DX
mov -2[BP],AX
mov AX,2048 push AX
mov AX,+4~BP]
pop BX
xor DX,DX
div BX
mov AX,DX
xor DX,DX
push DX
push AX
mov AX,-2[BP]
sub AX,-4[BP]
cwd push DX
push AX
call $LMUL
pop AX
pop DX
push DX
push AX
mov AX,ll mov DX,0 push DX
push AX
call $LRSSHIFT
pop AX
pop DX

-258- DEVCO~

add AX,-4[BP]
mov DX,+4[BP]
add DX,AX
mov +4[BP],DX
mov AX,+4[BP]
mov SP,BP
pop BP
ret DEVCORR ENDP

~CODE ENDS
@CODE SEGr~ENT BYTE PUBLIC 'CODE' include epilogue.h end (ETAX 4178)

Claims (79)

Claims
1. Apparatus for providing information to improve the accuracy of tracking a vehicle movable over streets in a given area, comprising:
a) first means for providing data identifying respective positions of the vehicle, each position having an accuracy relative to an actual location of the vehicle and one of said positions being a current position;
b) second means for providing a map data base of the streets; and c) means for deriving any of a plurality of parameters in dependence on one or more respective positions of the vehicle and the streets of the map data base to determine if a more probable current position exists.
2. Apparatus, according to claim 1, wherein said first means for providing further provides data identifying a measured heading of the vehicle, and wherein one of said parameters is the measured heading of the vehicle as compared with the headings of the streets of the map data base.
3. Apparatus, according to claim 2, wherein a given street of the map data base does not qualify as possibly corresponding to the more probable current position if the difference between said measured heading and the heading of said given street is greater than a given threshold.
4. Apparatus, according to claim 2, wherein a given street of the map data base qualifies as possibly corresponding to the more probable current position if the difference between said measured heading and the heading of said given street is less than a given threshold.
5. Apparatus, according to claim 1, further comprising means for providing an estimate of said accuracy of the respective positions.
6. Apparatus, according to claim 5, wherein each position of the vehicle has an accumulation of error, and wherein said estimate changes as the vehicle moves to reflect the accumulation of error and changes if a more probable current position is determined to exist to reflect a greater accuracy of the more probable current position.
7. Apparatus, according to claim 6, wherein said estimate changes at a varying rate as the vehicle moves.
8. Apparatus, according to claim 6, wherein said estimate is a contour enclosing an area having a probability of containing the actual location of the vehicle.
9. Apparatus, according to claim 5, wherein one of said parameters is the closeness of said current position to respective streets of the map data base, said closeness being dependent on said estimate.
10. Apparatus, according to claim 9, wherein a given street of the map data base does not qualify as possibly corresponding to the more probable current position if said closeness parameter indicates that the distance of said current position to said given street is greater than a given threshold.
11. Apparatus, according to claim 9, wherein a given street of the map data base qualifies as possibly corresponding to the more probable current position if said closeness parameter indicates that the distance of said current position to said given street is less than a given threshold.
12. Apparatus, according to claim 1, wherein one of the parameters is the connectivity of the streets of the map data base.
13. Apparatus, according to claim 12, wherein one of the positions of the vehicle is an old position corresponding to a point on one of the streets of the map data base, and wherein a given street may not qualify as possibly corresponding to the more probable current position if said given street is not directly connected to said one street.
14. Apparatus, according to claim 12, wherein one of the positions of the vehicle is an old position corresponding to a point on one of the streets of the map data base, and wherein a given street qualifies as possibly corresponding to the more probable current position if said given street is directly connected to said one street.
15. Apparatus, according to claim 1, wherein one of said parameters is a correlation of the path of the vehicle indicated by the respective positions of the vehicle and the path of a given street of the map data base.
16. Apparatus, according to claim 15, wherein said means for deriving determines that the more probable current position corresponds to a point on said given street indicated by said correlation parameter as the best correlation.
17. Apparatus, according to claim 15, wherein a given street does not qualify as possibly corresponding to the more probable current position if said correlation parameter has a minimum value greater than a given threshold.
18. Apparatus, according to claim 15, wherein said correlation parameter has a minimum value, and wherein said given street does not qualify as possibly corresponding to the more probable current position if a second order difference equation identifies a change in slope at said minimum value less than a given threshold.
19. Apparatus, according to claim 15, wherein a given street qualifies as possibly corresponding to the more probable current position if said correlation parameter has a minimum value less than a given threshold and if a second order difference equation identifies a change in slope at said minimum value greater than a given threshold.
20. Apparatus, according to claim 1, wherein one of the parameters is the closeness of two streets of the map data base to one another.
21. Apparatus, according to claim 20 wherein the two streets qualify as possibly corresponding to the more probable current position, one of said two streets being on one side of said current position and the other of said two being on the other side of said current position.
22. Apparatus, according to claim 21, wherein said means for deriving rejects said two streets as possibly corresponding to said more probable current position is the distance between said current position and said one street and the distance between said current position and said other street are similar to each other.
23. Apparatus, according to claim 1, wherein said means for deriving determines from said plurality of parameters if any said streets of said map data base qualify as possibly corresponding to the more probable current position, and if no said street is determined, then said current position is retained as an old position by said first means for providing data to provide data identifying a succeeding position of the vehicle.
24. Apparatus, according to claim 1, wherein said means for deriving determines from said plurality of parameters if any of said streets of said map data base qualify as possibly corresponding to the more probable current position, and if one of said streets is determined, then said more probable current position is retained as an old position by said first means for providing data to provide data identifying a succeeding position of the vehicle.
25. Apparatus, according to claim 1, wherein said first means for providing data comprises sensor means for producing heading data indicating the direction of the vehicle, wherein a given one of said streets of said map data base has a direction corresponding to the direction of the vehicle, and further comprising means for calibrating said sensor means by comparing said direction of the vehicle and said direction of said given street and adjusting said heading data to minimize average error between said direction of the vehicle and said direction of said given street.
26. Apparatus, according to claim 1, wherein said first means for providing comprises sensor means for producing distance data indicating the distance traveled by the vehicle; wherein, upon the vehicle moving from one street onto another street, the position of the vehicle may be at a certain distance away from the corresponding other street of the map data base; and further comprising means for calibrating said sensor means by adjusting said distance data in dependence on said certain distance.
27. Apparatus for providing information to improve the accuracy of tracking a vehicle movable over streets, comprising:
a) first means for providing data identifying respective positions of the vehicle, each position having a certain accuracy and a current position possibly being subject to being updated; and b) second means for providing an estimate of the accuracy of the positions of the vehicle, the estimate changing as the vehicle moves and changing if the current position is updated.
28. Apparatus, according to claim 27, wherein said first means for providing data comprises sensor means for generating information about the distance traveled and heading of the vehicle, and wherein said estimate changes in dependence on the accuracy of said sensor means.
29. Apparatus, according to claim 27, further comprising means for providing a map data base having a certain accuracy of the location of the streets, and wherein said estimate is dependent on the accuracy of said map data base.
30. Apparatus, according to claim 27, wherein said estimate changes at a varying rate as the vehicle moves.
31. Apparatus, according to claim 30, wherein said first means for providing data comprises sensor means for generating information having a certain quality about the heading of the vehicle, and wherein said varying rate is dependent on the quality of the heading information.
32. Apparatus, according to claim 30, wherein said first means for providing data comprises sensor means for generating information having a certain quality about the distance traveled by the vehicle, and wherein said varying rate is dependent on the quality of the distance information.
33. Apparatus, according to claim 30, wherein said varying rate is dependent on the performance of the apparatus.
34. Apparatus, according to claim 33, wherein said performance is dependent on the distance that a current position was moved upon being updated and the distance traveled by the vehicle between the update of a preceding position and the update of the current position.
35. Apparatus, according to claim 27, wherein said estimate of the accuracy of the positions can be different in different directions relative to the direction of movement of the vehicle.
36. Apparatus, according to claim 27, wherein said estimate of the accuracy of the respective positions is a probability density function in the vicinity of the respective positions.
37. Apparatus, according to claim 27, wherein said estimate of the accuracy of the respective positions is a plurality of points defining a shape enclosing an area having a probability of including the actual location of the vehicle.
38. Apparatus, according to claim 27, wherein said estimate of the accuracy of the respective positions is a set of one or more equations defining a distribution of probability associated with the respective positions.
39. Apparatus, according to claim 27, wherein said estimate is a table of values defining a distribution of probability associated with the respective positions.
40. Apparatus for automatically tracking a vehicle movable about streets of an overall given area, comprising:
a) first means for providing first data identifying respective positions of the vehicle as the vehicle moves about the streets, each position having a certain accuracy and one of the positions being a current position;
b) second means for providing second data being an estimate of the accuracy of the respective positions of the vehicle, the estimate changing as the vehicle moves about the streets to reflect the accuracy of the respective positions;
c) third means for providing a map data base of the streets of the given area; and d) means for determining if a more probable position than the current position exists in response to the first data, the second data and the map data base.
41. Apparatus, according to claim 40, wherein said means for determining updates the current position to an updated current position if a more probable position exists.
42. Apparatus, according to claim 41, wherein said means for determining comprises:
a) means for identifying a most probable street on which the vehicle may be actually moving;
and b) means for correlating certain of the positions with positions along the most probable street, the updated current position corresponding to a most probable point on the most probable street in response to the correlation.
43. Apparatus, according to claim 41, wherein said means for determining updates the estimate of the accuracy of the current position to an updated estimate of the accuracy of the updated position.
44. Apparatus, according to claim 43, wherein said updated estimate is decreased in size relative to the size of the estimate of the accuracy of the current position to reflect the greater accuracy of the updated current position.
45. Apparatus, according to claim 40, wherein said means for determining does not update the current position if it is determined that a more probable position does not exist.
46. Apparatus, according to claim 40, further comprising fourth means for providing calibration data for calibrating said first data providing means, and means for periodically adjusting the calibration data.
47. Apparatus, according to claim 40, wherein said means for determining comprises:
a) means for identifying the current position;
b) means for identifying a most probable street on which the vehicle may be actually moving;
c) means for determining a most probable point on the most probable street; and d) means for determining a most probable overall update position of the vehicle in response to the current position and the most probable point, the overall update position not necessarily lying on the most probable street.
48. Apparatus, according to claim 40, wherein the vehicle may be moving over an actual path not all of which is in the map data base, and wherein said means for determining updates and does not update the current position to a more probable position as the vehicle moves on and off the streets of the map data base.
49. Apparatus for automatically tracking a vehicle movable about streets of an overall given area, comprising:
a) first means for providing first data identifying respective dead reckoned positions of the vehicle as the vehicle moves about the streets, each dead reckoned position having a certain accuracy and one of the dead reckoned positions being a current position;
b) second means for providing second data identifying an estimate of the accuracy of the respective dead reckoned positions in the form of a contour containing the respective dead reckoned positions of the vehicle and approximating a probability of containing the actual location of the vehicle, the contour changing as the vehicle moves about the streets;
c) third means for providing a map data base of the streets of the given area; and d) means for updating the current dead reckoned position of the vehicle to an updated current dead reckoned position corresponding to a more probable point on one of the streets in response to said first data identifying the current dead reckoned position, said second data identifying the contour associated with the current dead reckoned position, and said map data base.
50. Apparatus, according to claim 49, further comprising means for updating the contour associated with the current dead reckoned position to an updated contour upon updating the current dead reckoned position.
51. Apparatus, according to claim 50, wherein the contour associated with the current dead reckoned position is updated in response to the second data identifying the contour associated with the current dead reckoned position and the one street of the map data base, the updated contour having approximately the same probability of containing the actual location of the vehicle as the contour associated with the current dead reckoned position but contracting in size to reflect the increased accuracy of the updated dead reckoned position as compared to the current dead reckoned position.
52. Apparatus, according to claim 49, wherein said first means for providing comprises:
a) means for producing data indicating the distance traveled by the vehicle; and b) means for producing data indicating the heading of the vehicle.
53. Apparatus, according to claim 52, further comprising:
a) means for providing calibration data for calibrating said means for producing distance data and said means for producing heading data; and b) means for adjusting the calibration data.
54. Apparatus, according to claim 49, wherein the contour associated with one dead reckoned position is moved and expanded relative to the contour associated with a preceding dead reckoned position if the vehicle has moved a minimum distance.
55. Apparatus, according to claim 54, wherein the contour is expanded in proportion to the distance traveled by the vehicle.
56. Apparatus, according to claim 54, wherein the contour is expanded in proportion to the accuracy of said first means for providing data.
57. Apparatus, according to claim 49, wherein said means for updating determines one or more streets of said map data base as qualifying as lines-of-position.
58. Apparatus, according to claim 57, wherein the line-of-position of the one street having the point corresponding to the updated current dead reckoned position is substantially parallel to the heading of the vehicle.
59. Apparatus, according to claim 58, wherein the line-of-position of the one street intersects the contour associated with the current dead reckoned position.
60. Apparatus, according to claim 59, wherein the line-of-position of the one street is connected to another line-of-position having a point corresponding to a next preceding updated current dead reckoned position.
61. Apparatus, according to claim 49, wherein said means for updating comprises means for correlating certain of the dead reckoned positions indicating the path of the vehicle with the path of the one street to determine said more probable point on the one street in response to the correlation.
62. Apparatus, according to claim 49, wherein said means for updating determines lines-of-position in response to the map data base, each line-of-position corresponding to a street over which the vehicle may be moving and being substantially parallel to the heading of the vehicle and intersecting the contour associated with the current dead reckoned position.
63. Apparatus, according to claim 62, wherein said means for updating determines which one of the lines-of-position is the most probable line-of-position corresponding to the most probable street over which the vehicle may be moving, the most probable street being the one street.
64. Apparatus, according to claim 63, wherein said means for updating determines if no one line-of-position is most probable and, in response, the current dead reckoned position is not updated.
65. A system for automatically tracking a vehicle movable on streets of a given area, comprising:
a) first means for providing first data being respective dead reckoned positions of the vehicle, one of the dead reckoned positions being a current dead reckoned position, including i) means for generating data identifying the distance traveled by the vehicle, and ii) means for generating data identifying the heading of the vehicle;
b) second means for providing second data identifying an estimate of the accuracy of the respective dead reckoned positions in the form of a contour of equal probability containing the respective dead reckoned positions of the vehicle and approximating a probability of containing the actual location of the vehicle, the contour changing as the vehicle moves on the streets;

c) means for providing third data identifying a map data base of the streets of the given area;
d) means for determining lines-of-position corresponding to the streets in response to the map data base, in which one or more lines-of-position are substantially parallel to the heading of the vehicle and intersect the contour associated with the current dead reckoned position, one of which may be a most probable line-of-position corresponding to a street on which the vehicle most probably is moving;
e) means for updating the current dead reckoned position to an updated current dead reckoned position corresponding to a point on the most probable line-of-position; and f) means for updating the contour associated with the current dead reckoned position to an updated contour upon updating the current dead reckoned position, in which the contour containing the respective dead reckoned positions expands in size as the vehicle moves to reflect a decreased accuracy in the respective dead reckoned positions until the updated dead reckoned position is produced and then contracts in size to reflect the increased accuracy of the updated dead reckoned position as compared to the current dead reckoned position, the expanding contour and contracted contour having approximately the same probability of containing the actual location of the vehicle.
66. A system, according to claim 65, wherein said means for generating distance data and said means for generating heading data each has a certain accuracy, and wherein the contour expands in proportion to the said accuracy.
67. A system, according to claim 66, wherein the contour expands at a varying rate which is dependent on the distance that the current dead reckoned position is moved upon being updated and the distance traveled by the vehicle between a preceding update of a dead reckoned position and the update of the current dead reckoned position.
68. A system, according to claim 65, wherein said means for determining lines-of-position comprises:
a) means for determining all the lines-of-position on one side of the current dead reckoned position and selecting one line-of-position on the one side closest to the current dead reckoned position;
b) means for determining all the lines-of-position on the other side of the current dead reckoned position and selecting one line-of-position on that other side closest to the current dead reckoned position; and c) means for selecting between the one line-of-position on the one side or the one line-of-position on the other side as the most probable line of position.
69. A system, according to claim 68, wherein neither the one line-of-position on the one side or the one line-of-position on the other side is selected if the distance between the one line-of-position on the one side and the one line-of-position on the other side is smaller than a given threshold.
70. A system, according to claim 66, wherein said means for generating heading data comprises:
a) first sensor means for generating first heading data; and b) second sensor means for generating second heading data.
71. A system, according to claim 70, wherein the contour expands at a varying rate which is dependent on any difference between said first heading data and said second heading data.
72. A system, according to claim 65, wherein said third data identifying a map data base includes street foreshortening error information, and wherein said dead reckoned positions are provided in dependence on said street foreshortening error information.
73. A vehicle navigational system for automatically tracking a motor vehicle movable over streets of a given area identified by a map, the vehicle navigational system being installable on the vehicle, comprising:
a) first means for sensing the distance traveled by the motor vehicle and for generating distance data;
b) second means for sensing the heading of the motor vehicle and for generating heading data;
c) means for storing a map data base identifying of the streets;
d) means for displaying the map and a motor vehicle symbol movable relative to the displayed map; and e) programmed computer means for:
i) providing data identifying respective dead reckoned positions of the motor vehicle in response to the distance data and the heading data, one of the dead reckoned positions being a current dead reckoned position;
ii) providing data identifying a contour containing the respective dead reckoned positions, the contour expanding from one dead reckoned position to another dead reckoned position as the vehicle moves until the current dead reckoned position is updated;
iii) determining lines-of-position corresponding to respective streets in response to the map data base, one of which may be a most probable line-of-position corresponding to a street over which the motor vehicle may be moving, the most probable line-of-position being substantially parallel to the heading of the motor vehicle, intersecting the contour associated with the current dead reckoned position and being connected to a next preceding most probable line-of-position corresponding to a next preceding updated current dead reckoned position;
iv) updating the current dead reckoned position to an updated dead reckoned position on a more probable point on the most probable line-of-position in response to the current dead reckoned position, the contour associated with the current dead reckoned position and the most probable line-of-position;
v) updating the contour associated with the current dead reckoned position to an updated contour containing the updated dead reckoned position in response to the contour associated with the current dead reckoned position and the most probable line-of-position; and vi) controlling said displaying means to display the map in response to the map data base and to display the motor vehicle symbol in response to the data identifying the respective dead reckoned positions.
74. A vehicle navigational system, according to claim 73, wherein the current dead reckoned position is not updated if it is determined that there is no most probable line-of-position.
75. A vehicle navigational system, according to claim 74, wherein said programmed computer means stores calibration data about said first means for sensing and said second means for sensing and adjusts the calibration data upon updating the current dead reckoned position and the contour.
76. A vehicle navigational system, according to claim 74, wherein the contour expands at a varying rate which is dependent on the distance that the current dead reckoned position is moved upon being updated and the distance traveled by the vehicle between a preceding update of a dead reckoned position and the update of the current dead reckoned position.
77. A vehicle navigational system, according to claim 76, wherein said first means and said second means for sensing each has a certain accuracy, and said varying rate is in proportion to such accuracy.
78. A method for providing information to improve the accuracy of tracking a vehicle movable over streets in a given area, comprising:
a) providing data identifying respective positions of the vehicle, each position having an accuracy relative to an actual location of the vehicle and one of the positions being a current position;
b) providing a map data base of the streets; and c) deriving any of a plurality of parameters in dependence on one or more respective positions of the vehicle and the streets of the map data base to determine if a more probable current position exists.
79. A method of automatically tracking a vehicle movable about streets of an overall given area, comprising:
a) providing first data identifying respective positions of the vehicle as the vehicle moves about the streets, each position having a certain accuracy and one of the positions being a current position;
b) providing second data being an estimate of the accuracy of the respective positions of the vehicle, the estimate changing as the vehicle moves about the streets to reflect the accuracy of the respective positions;
c) providing a map data base of the streets of the given area; and d) determining if a more probable current position than the current position exists in response to the first data, the second data and the map data base.
CA000483203A 1984-06-07 1985-06-05 Vehicle navigational system and method Expired CA1223356A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/618,041 US4796191A (en) 1984-06-07 1984-06-07 Vehicle navigational system and method
US618,041 1984-06-07

Publications (1)

Publication Number Publication Date
CA1223356A true CA1223356A (en) 1987-06-23

Family

ID=24476093

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000483203A Expired CA1223356A (en) 1984-06-07 1985-06-05 Vehicle navigational system and method

Country Status (15)

Country Link
US (1) US4796191A (en)
EP (2) EP0182893A1 (en)
JP (9) JP2614712B2 (en)
KR (1) KR940002326B1 (en)
AT (1) ATE102342T1 (en)
AU (1) AU587982B2 (en)
BR (1) BR8506774A (en)
CA (1) CA1223356A (en)
DE (1) DE3587761T2 (en)
ES (1) ES8704260A1 (en)
IE (1) IE62726B1 (en)
MX (1) MX161572A (en)
PT (1) PT80610B (en)
WO (1) WO1986000157A1 (en)
ZA (1) ZA854303B (en)

Families Citing this family (196)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58187807A (en) * 1982-04-28 1983-11-02 Nippon Soken Inc Running position displaying device of vehicle
US4734863A (en) 1985-03-06 1988-03-29 Etak, Inc. Apparatus for generating a heading signal for a land vehicle
GB8512340D0 (en) * 1985-05-15 1986-10-29 Gec Avionics Measuring dynamic system
CA1277043C (en) 1985-07-25 1990-11-27 Marvin S. White, Jr. Apparatus storing a representation of topological structures and methods of building and searching the representation
JPH0820264B2 (en) * 1985-08-31 1996-03-04 博之 杉山 Navigation device
EP0261404B1 (en) * 1986-09-25 1991-02-13 Siemens Aktiengesellschaft Navigation device for a vehicle
US4807127A (en) * 1986-12-10 1989-02-21 Sumitomo Electric Industries, Ltd. Vehicle location detecting system
JPH0833302B2 (en) * 1986-12-10 1996-03-29 住友電気工業株式会社 Position detection device
DE3642986A1 (en) * 1986-12-17 1988-07-07 Bosch Gmbh Robert CORRECTION PROCEDURE FOR COUPLING LAND VEHICLES
DE3715007A1 (en) * 1987-05-06 1988-11-17 Bosch Gmbh Robert METHOD AND DEVICE FOR DETERMINING THE COURSE OF A LAND VEHICLE
EP0314806B1 (en) * 1987-05-11 1995-04-19 Sumitomo Electric Industries Limited Position detection system
JPH076801B2 (en) * 1987-05-11 1995-01-30 住友電気工業株式会社 Vehicle position detection device
US4824196A (en) * 1987-05-26 1989-04-25 Minnesota Mining And Manufacturing Company Optical fiber distribution panel
DE3718996A1 (en) * 1987-06-06 1988-12-22 Bosch Gmbh Robert METHOD AND DEVICE FOR DETERMINING THE POSITION OF A LANDING VEHICLE
NL8702014A (en) * 1987-08-28 1989-03-16 Philips Nv ROUTE DETERMINATION UNIT.
US4964052A (en) * 1987-10-30 1990-10-16 Nec Home Electronics Ltd. Navigation device for use in a vehicle
JP2618254B2 (en) * 1988-02-15 1997-06-11 本田技研工業株式会社 Travel route display device
JPH01250816A (en) * 1988-03-31 1989-10-05 Sony Corp Vehicle navigation method
JPH01277716A (en) * 1988-04-30 1989-11-08 Mazda Motor Corp Navigation apparatus for vehicle
US5109344A (en) * 1988-04-28 1992-04-28 Mazda Motor Corporation Vehicle navigation apparatus employing node selection, comparison and elimination techniques
JPH07117420B2 (en) * 1988-06-27 1995-12-18 パイオニア株式会社 Road data generation method in vehicle-mounted navigation device
JPH07119617B2 (en) * 1988-07-05 1995-12-20 マツダ株式会社 Vehicle navigation system
FR2636134B1 (en) * 1988-09-02 1995-03-10 Thomson Csf LAND NAVIGATION SYSTEM REAL-TIME VIEWING THE POSITION OF A VEHICLE
JPH0278907A (en) * 1988-09-16 1990-03-19 Hitachi Ltd Navigation system using map data and location system for moving body
US5060162A (en) * 1988-12-09 1991-10-22 Matsushita Electric Industrial Co., Ltd. Vehicle in-situ locating apparatus
DE3904344A1 (en) * 1989-02-14 1990-08-16 Bosch Gmbh Robert METHOD FOR READING NAVIGATION DATA FROM A COMPACT DISC
FR2643709B1 (en) * 1989-02-27 1993-11-19 Fabrication Instruments Mesure NAVIGATION ASSISTANCE METHOD AND IMPROVED LAND NAVIGATOR
JP2669889B2 (en) * 1989-04-07 1997-10-29 住友電気工業株式会社 Calibration device for angular velocity sensor used in self-contained navigation system
EP0392448B1 (en) * 1989-04-13 1992-08-19 Siemens Aktiengesellschaft Procedure for the determination of the angular error of a magnetic field sensor
JPH0792388B2 (en) * 1989-04-17 1995-10-09 住友電気工業株式会社 Position detector
JPH03100418A (en) * 1989-09-14 1991-04-25 Nissan Motor Co Ltd Present position detecting device for vehicle
JP2696410B2 (en) * 1989-10-23 1998-01-14 松下電器産業株式会社 Map matching method
US5045860A (en) * 1990-06-27 1991-09-03 R & D Associates Method and arrangement for probabilistic determination of a target location
US5177685A (en) * 1990-08-09 1993-01-05 Massachusetts Institute Of Technology Automobile navigation system using real time spoken driving instructions
NL9001810A (en) * 1990-08-13 1992-03-02 Philips Nv METHOD FOR DETERMINING THE POSITION OF A VEHICLE, DEVICE FOR DETERMINING THE POSITION OF A VEHICLE AND VEHICLE PROVIDED WITH THE DEVICE.
JP2570500B2 (en) * 1990-12-19 1997-01-08 三菱電機株式会社 Car navigation system
JP3083576B2 (en) * 1991-03-18 2000-09-04 パイオニア株式会社 Car navigation system
US5262774A (en) * 1991-03-18 1993-11-16 Pioneer Electronic Corporation On-vehicle navigation apparatus
US5270937A (en) * 1991-04-26 1993-12-14 Motorola, Inc. Vehicle map position determining apparatus
JPH0618274A (en) * 1991-05-22 1994-01-25 Nec Home Electron Ltd Car navigation system
US5311195A (en) * 1991-08-30 1994-05-10 Etak, Inc. Combined relative and absolute positioning method and apparatus
EP0570581B1 (en) * 1991-11-01 2001-12-05 Motorola, Inc. An improved accuracy sensory system for vehicle navigation
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US10361802B1 (en) 1999-02-01 2019-07-23 Blanding Hovenweep, Llc Adaptive pattern recognition based control system and method
JP3033314B2 (en) * 1992-01-14 2000-04-17 トヨタ自動車株式会社 Vehicle running characteristics control device
JP2502432B2 (en) * 1992-04-03 1996-05-29 住友電気工業株式会社 Vehicle position detection device
US5359529A (en) * 1992-05-15 1994-10-25 Zexel Corporation Route guidance on/off-route state filter
US5758313A (en) * 1992-10-16 1998-05-26 Mobile Information Systems, Inc. Method and apparatus for tracking vehicle location
US5428546A (en) * 1992-10-16 1995-06-27 Mobile Information Systems Method and apparatus for tracking vehicle location
JP3157923B2 (en) * 1992-10-20 2001-04-23 パイオニア株式会社 Distance error correction method for navigation device
US5374933A (en) * 1993-01-05 1994-12-20 Zexel Corporation Position correction method for vehicle navigation system
US5459667A (en) * 1993-01-22 1995-10-17 Sumitomo Electric Industries, Ltd. Navigation apparatus for informing vehicle driver of information regarding travel route
US5436840A (en) * 1993-03-05 1995-07-25 Motorola, Inc. Vehicle position uncertainty area correction method and apparatus therefor
JPH06347278A (en) * 1993-06-10 1994-12-20 Alpine Electron Inc Existent link detection method of vehicle
US5488559A (en) * 1993-08-02 1996-01-30 Motorola, Inc. Map-matching with competing sensory positions
FR2709849B1 (en) * 1993-09-10 1995-11-10 Sagem Navigation process using a vectorized terrain map.
US6864570B2 (en) * 1993-12-17 2005-03-08 The Regents Of The University Of California Method and apparatus for fabricating self-assembling microstructures
DE4415993A1 (en) * 1994-05-06 1995-11-09 Bosch Gmbh Robert Correction method and navigation system for the coupling location of a motor vehicle
US5512904A (en) * 1994-06-13 1996-04-30 Andrew Corporation Method and apparatus of establishing a vehicle azimuth
US5515283A (en) * 1994-06-20 1996-05-07 Zexel Corporation Method for identifying highway access ramps for route calculation in a vehicle navigation system
FR2725064B1 (en) * 1994-09-27 1997-03-14 Peugeot MAPPING CORRELATION SYSTEM FOR A NAVIGATION ASSISTANCE SYSTEM OF A MOTOR VEHICLE
WO1996015515A1 (en) * 1994-11-11 1996-05-23 Xanavi Informatics Corporation Map display for vehicle
JPH07260498A (en) * 1995-01-30 1995-10-13 Sony Corp Vehicle navigation device
US5712788A (en) * 1995-02-09 1998-01-27 Zexel Corporation Incremental route calculation
US5938720A (en) * 1995-02-09 1999-08-17 Visteon Technologies, Llc Route generation in a vehicle navigation system
JP3578511B2 (en) * 1995-04-21 2004-10-20 株式会社ザナヴィ・インフォマティクス Current position calculation device
US5922040A (en) * 1995-05-17 1999-07-13 Mobile Information System, Inc. Method and apparatus for fleet management
US5904727A (en) * 1995-05-17 1999-05-18 Mobile Information Systems, Inc. Graphical fleet management methods
US5680312A (en) * 1995-06-07 1997-10-21 Zexel Corporation Method and apparatus for selecting a destination in a vehicle navigation system
US5732354A (en) * 1995-06-07 1998-03-24 At&T Wireless Services, Inc. Method and apparatus for determining the location of a mobile telephone
US5731978A (en) * 1995-06-07 1998-03-24 Zexel Corporation Method and apparatus for enhancing vehicle navigation through recognition of geographical region types
US5898390A (en) * 1995-09-14 1999-04-27 Zexel Corporation Method and apparatus for calibration of a distance sensor in a vehicle navigation system
US5862511A (en) * 1995-12-28 1999-01-19 Magellan Dis, Inc. Vehicle navigation system and method
JP2826086B2 (en) 1995-12-28 1998-11-18 アルパイン株式会社 Navigation device
US6029111A (en) * 1995-12-28 2000-02-22 Magellan Dis, Inc. Vehicle navigation system and method using GPS velocities
US5991692A (en) * 1995-12-28 1999-11-23 Magellan Dis, Inc. Zero motion detection system for improved vehicle navigation system
US5745866A (en) * 1996-01-09 1998-04-28 Trimble Navigation Limited Cardinal-up graphic map display system
SG75807A1 (en) * 1996-01-11 2000-10-24 Sony Corp Signal transmitting method and apparatus
US5928309A (en) * 1996-02-05 1999-07-27 Korver; Kelvin Navigation/guidance system for a land-based vehicle
US5819200A (en) * 1996-02-14 1998-10-06 Zexel Corporation Method and apparatus for selecting a destination in a vehicle navigation system
US5987375A (en) * 1996-02-14 1999-11-16 Visteon Technologies, Llc Method and apparatus for selecting a destination in a vehicle navigation system
US5842146A (en) * 1996-05-10 1998-11-24 Honda Giken Kogyo Kabushiki Kaisha Method and apparatus of setting clock time and using time data in a vehicle navigation system
US5848364A (en) * 1996-05-10 1998-12-08 Honda Giken Kogyo Kabushiki Kaisha Method and apparatus for vehicle navigation and guidance through a traffic circle
JPH0914981A (en) * 1996-07-31 1997-01-17 Sony Corp On-vehicle navigator device
JP2807444B2 (en) * 1996-07-31 1998-10-08 ソニー株式会社 In-vehicle navigator device
ES2186912T3 (en) * 1996-08-01 2003-05-16 Prolink Inc ROBUST NAVIGATION SYSTEM FOR GOLF LAND.
US6029110A (en) * 1996-09-30 2000-02-22 Visteon Technologies, Llc Method and apparatus for providing passenger access to a vehicle navigation system
US5904728A (en) * 1996-10-11 1999-05-18 Visteon Technologies, Llc Voice guidance timing in a vehicle navigation system
US5902350A (en) * 1996-10-30 1999-05-11 Visteon Technologies, Llc Generating a maneuver at the intersection through a turn lane
DE19645209B4 (en) * 1996-11-02 2005-07-28 Robert Bosch Gmbh Locating device for a motor vehicle with a satellite receiver and locating method
US5948043A (en) * 1996-11-08 1999-09-07 Etak, Inc. Navigation system using GPS data
US6253154B1 (en) 1996-11-22 2001-06-26 Visteon Technologies, Llc Method and apparatus for navigating with correction of angular speed using azimuth detection sensor
US6026346A (en) * 1996-11-27 2000-02-15 Honda Giken Kogyo Kabushiki Kaisha Navigation system for indicating of optimum route
US5910177A (en) * 1996-12-09 1999-06-08 Visteon Technologies, Llc Navigating close proximity routes with a vehicle navigation system
US5974357A (en) * 1996-12-19 1999-10-26 Alpine Electronics Sign text display for vehicle navigation system
US6308134B1 (en) 1996-12-27 2001-10-23 Magellan Dis, Inc. Vehicle navigation system and method using multiple axes accelerometer
US5928307A (en) * 1997-01-15 1999-07-27 Visteon Technologies, Llc Method and apparatus for determining an alternate route in a vehicle navigation system
US6324592B1 (en) 1997-02-25 2001-11-27 Keystone Aerospace Apparatus and method for a mobile computer architecture and input/output management system
US5986547A (en) 1997-03-03 1999-11-16 Korver; Kelvin Apparatus and method for improving the safety of railroad systems
US6889139B2 (en) * 1997-03-07 2005-05-03 Sidewinder Holdings Ltd. System and method for mobile data processing and transmission
US5987381A (en) * 1997-03-11 1999-11-16 Visteon Technologies, Llc Automobile navigation system using remote download of data
US6024655A (en) * 1997-03-31 2000-02-15 Leading Edge Technologies, Inc. Map-matching golf navigation system
US6252605B1 (en) 1997-08-01 2001-06-26 Garmin Corporation System and method for packing spatial data in an R-tree
US5995970A (en) * 1997-08-01 1999-11-30 Garmin Corporation Method and apparatus for geographic coordinate data storage
JP4010380B2 (en) 1997-08-08 2007-11-21 アイシン・エィ・ダブリュ株式会社 VEHICLE CONTROL DEVICE AND RECORDING MEDIUM RECORDING PROGRAM
US6707421B1 (en) * 1997-08-19 2004-03-16 Siemens Vdo Automotive Corporation Driver information system
US6680694B1 (en) 1997-08-19 2004-01-20 Siemens Vdo Automotive Corporation Vehicle information system
US6212472B1 (en) 1997-09-04 2001-04-03 Visteon Technologies, Llc Method and apparatus for displaying current vehicle position
US7268700B1 (en) 1998-01-27 2007-09-11 Hoffberg Steven M Mobile communication device
DE19803662C2 (en) * 1998-01-30 1999-12-02 Siemens Ag Navigation device and method for determining position using dead reckoning
US6016485A (en) * 1998-02-13 2000-01-18 Etak, Inc. System for pathfinding
US6092076A (en) * 1998-03-24 2000-07-18 Navigation Technologies Corporation Method and system for map display in a navigation application
US6144919A (en) * 1998-03-27 2000-11-07 Visteon Technologies, Llc Method and apparatus for using non-digitized cities for route calculation
US6097316A (en) * 1998-04-20 2000-08-01 Visteon Technologies, Llc Communication protocol for a vehicle navigation system
US6532475B1 (en) * 1998-05-28 2003-03-11 Increment P Corporation Map information providing system and map information searching method
US6163749A (en) * 1998-06-05 2000-12-19 Navigation Technologies Corp. Method and system for scrolling a map display in a navigation application
US6298305B1 (en) 1998-07-15 2001-10-02 Visteon Technologies, Llc Methods and apparatus for providing voice guidance in a vehicle navigation system
US6088649A (en) * 1998-08-05 2000-07-11 Visteon Technologies, Llc Methods and apparatus for selecting a destination in a vehicle navigation system
US7257414B2 (en) * 1998-09-22 2007-08-14 Polaris Wireless, Inc. Estimating the Location of a Wireless Terminal Based on Non-Uniform Probabilities of Movement
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US6192312B1 (en) 1999-03-25 2001-02-20 Navigation Technologies Corp. Position determining program and method
US6466862B1 (en) * 1999-04-19 2002-10-15 Bruce DeKock System for providing traffic information
US6559865B1 (en) * 1999-05-21 2003-05-06 Tele Atlas North America, Inc. Computing sign text for branches of an electronic map network
DE19924155B4 (en) * 1999-05-26 2006-02-09 Siemens Ag Method for determining position and navigation device
US6360165B1 (en) 1999-10-21 2002-03-19 Visteon Technologies, Llc Method and apparatus for improving dead reckoning distance calculation in vehicle navigation system
US6282496B1 (en) 1999-10-29 2001-08-28 Visteon Technologies, Llc Method and apparatus for inertial guidance for an automobile navigation system
US6826472B1 (en) 1999-12-10 2004-11-30 Tele Atlas North America, Inc. Method and apparatus to generate driving guides
US6282231B1 (en) * 1999-12-14 2001-08-28 Sirf Technology, Inc. Strong signal cancellation to enhance processing of weak spread spectrum signal
AU2001228711A1 (en) * 2000-02-02 2001-08-14 Nokia Corporation Position acquisition
US6456935B1 (en) 2000-03-28 2002-09-24 Horizon Navigation, Inc. Voice guidance intonation in a vehicle navigation system
DE10021373A1 (en) * 2000-05-02 2001-11-08 Siemens Ag Positioning method and navigation device
US6697752B1 (en) 2000-05-19 2004-02-24 K&L Technologies, Inc. System, apparatus and method for testing navigation or guidance equipment
FR2813397B1 (en) * 2000-08-31 2003-03-14 Renault DISTANCE REGULATION METHOD BETWEEN TWO VEHICLES
US6735516B1 (en) 2000-09-06 2004-05-11 Horizon Navigation, Inc. Methods and apparatus for telephoning a destination in vehicle navigation
US6317683B1 (en) 2000-10-05 2001-11-13 Navigation Technologies Corp. Vehicle positioning using three metrics
US6502033B1 (en) 2000-10-05 2002-12-31 Navigation Technologies Corp. Turn detection algorithm for vehicle positioning
US6895126B2 (en) * 2000-10-06 2005-05-17 Enrico Di Bernardo System and method for creating, storing, and utilizing composite images of a geographic location
SE0004096D0 (en) 2000-11-08 2000-11-08 Nira Automotive Ab Positioning system
JP4601033B2 (en) * 2000-12-27 2010-12-22 株式会社エクォス・リサーチ Light distribution control device
US6631321B1 (en) 2001-10-29 2003-10-07 Navigation Technologies Corp. Vehicle heading change determination using compensated differential wheel speed
US6973318B2 (en) * 2001-11-26 2005-12-06 Motorola, Inc. Apparatus and method for downloading journey-related information
DE10159872B4 (en) * 2001-12-06 2005-07-21 Siemens Ag Method and arrangement and computer program with program code means and computer program product for determining a maneuver information from a set of predeterminable mobile unit maneuver information using fuzzy logic
US7221287B2 (en) 2002-03-05 2007-05-22 Triangle Software Llc Three-dimensional traffic report
US20040006424A1 (en) * 2002-06-28 2004-01-08 Joyce Glenn J. Control system for tracking and targeting multiple autonomous objects
KR100498987B1 (en) * 2002-10-11 2005-07-01 엘지전자 주식회사 Method for estimating location of vehicle in Global Positioning System Data's poor region
US9818136B1 (en) 2003-02-05 2017-11-14 Steven M. Hoffberg System and method for determining contingent relevance
EP1500907B1 (en) 2003-07-21 2014-11-12 LG Electronics, Inc. Apparatus and method for detecting vehicle location in navigation system
US7610145B2 (en) 2003-07-25 2009-10-27 Triangle Software Llc System and method for determining recommended departure time
US6868313B2 (en) * 2003-08-08 2005-03-15 Reino Koljonen Automobile license tag scanning system
JP4434818B2 (en) * 2004-03-31 2010-03-17 京セラ株式会社 Error correction method for portable communication terminal and its geomagnetic sensor
US20060080036A1 (en) * 2004-10-07 2006-04-13 General Motors Corporation Method for determining vehicle location
US7908080B2 (en) 2004-12-31 2011-03-15 Google Inc. Transportation routing
JP4660299B2 (en) * 2005-06-29 2011-03-30 三菱電機株式会社 Mobile information device
EP1991882B1 (en) 2006-03-07 2016-11-02 Nokia Technologies Oy A method of tracking a state of a mobile electronic device
DE602006007020D1 (en) * 2006-12-08 2009-07-09 Deutsch Zentr Luft & Raumfahrt Method for estimating the parameters of a navigation signal
JP4893395B2 (en) * 2007-03-15 2012-03-07 トヨタ自動車株式会社 Course prediction device and collision prediction device
JP4416021B2 (en) * 2007-08-21 2010-02-17 株式会社デンソー Vehicle navigation device
US8619072B2 (en) 2009-03-04 2013-12-31 Triangle Software Llc Controlling a three-dimensional virtual broadcast presentation
US8982116B2 (en) * 2009-03-04 2015-03-17 Pelmorex Canada Inc. Touch screen based interaction with traffic data
US9046924B2 (en) * 2009-03-04 2015-06-02 Pelmorex Canada Inc. Gesture based interaction with traffic data
CN102620732B (en) * 2011-01-27 2014-03-12 迈实电子(上海)有限公司 Object positioning method and device
US20100332126A1 (en) * 2009-06-30 2010-12-30 O2Micro, Inc. Inertial navigation system with error correction based on navigation map
US9116005B2 (en) * 2009-06-30 2015-08-25 Maishi Electronic (Shanghai) Ltd Electronic systems for locating objects
CN102713521B (en) * 2009-10-22 2015-07-15 通腾德国股份有限公司 Incremental map generation, refinement and extension with GPS traces
JP5168601B2 (en) * 2010-03-31 2013-03-21 アイシン・エィ・ダブリュ株式会社 Own vehicle position recognition system
US8954265B2 (en) * 2010-04-09 2015-02-10 Tomtom North America, Inc. Method of resolving a location from data representative thereof
DE102010031351A1 (en) * 2010-07-14 2012-01-19 Bayerische Motoren Werke Aktiengesellschaft Method for determining position of vehicle i.e. motor car, involves adapting correction value dependent on deviation, where correction value determines sensor referred position and threshold level is represented for width characteristic
US8718910B2 (en) 2010-11-14 2014-05-06 Pelmorex Canada Inc. Crowd sourced traffic reporting
JP5312499B2 (en) * 2011-02-24 2013-10-09 京セラ株式会社 Mobile communication terminal and information display method thereof
JP5398771B2 (en) * 2011-03-30 2014-01-29 西日本電信電話株式会社 POSITION DETERMINING DEVICE, POSITION DETERMINING METHOD, AND COMPUTER PROGRAM
CA2839866C (en) 2011-05-18 2021-04-13 Triangle Software Llc System for providing traffic data and driving efficiency data
DE112011105210T5 (en) 2011-05-20 2014-05-28 Hitachi, Ltd. Locus correction method, locus correction device, and mobile object device
US8981995B2 (en) 2011-06-03 2015-03-17 Microsoft Technology Licensing, Llc. Low accuracy positional data by detecting improbable samples
US9464903B2 (en) * 2011-07-14 2016-10-11 Microsoft Technology Licensing, Llc Crowd sourcing based on dead reckoning
US9470529B2 (en) 2011-07-14 2016-10-18 Microsoft Technology Licensing, Llc Activating and deactivating sensors for dead reckoning
US10184798B2 (en) 2011-10-28 2019-01-22 Microsoft Technology Licensing, Llc Multi-stage dead reckoning for crowd sourcing
CN103108154A (en) 2011-11-14 2013-05-15 辉达公司 Automobile navigation equipment
US9429657B2 (en) 2011-12-14 2016-08-30 Microsoft Technology Licensing, Llc Power efficient activation of a device movement sensor module
US8781718B2 (en) 2012-01-27 2014-07-15 Pelmorex Canada Inc. Estimating time travel distributions on signalized arterials
US9817125B2 (en) 2012-09-07 2017-11-14 Microsoft Technology Licensing, Llc Estimating and predicting structures proximate to a mobile device
US10223909B2 (en) 2012-10-18 2019-03-05 Uber Technologies, Inc. Estimating time travel distributions on signalized arterials
KR101319966B1 (en) * 2012-11-12 2013-10-18 한국과학기술정보연구원 Apparatus and method for converting format of electric document
NO336680B1 (en) * 2013-12-04 2015-10-19 Global Maritime As Procedure for estimating the risk of at least one accidentally released cargo from at least one crane on a platform or vessel on submarine pipelines and other subsea equipment, as well as uses of the method
KR20160002178A (en) * 2014-06-30 2016-01-07 현대자동차주식회사 Apparatus and method for self-localization of vehicle
KR102174531B1 (en) * 2014-07-31 2020-11-06 현대엠엔소프트 주식회사 Apparatus and method for location information correction of vehicle
EP3131020B1 (en) * 2015-08-11 2017-12-13 Continental Automotive GmbH System and method of a two-step object data processing by a vehicle and a server database for generating, updating and delivering a precision road property database
KR102518622B1 (en) * 2016-06-17 2023-04-05 현대오토에버 주식회사 Navigation and control method thereof
US11468765B2 (en) 2016-07-20 2022-10-11 Harman Becker Automotive Systems Gmbh Generating road segment attributes based on spatial referencing
US10802450B2 (en) 2016-09-08 2020-10-13 Mentor Graphics Corporation Sensor event detection and fusion
US11067996B2 (en) 2016-09-08 2021-07-20 Siemens Industry Software Inc. Event-driven region of interest management
US11525688B2 (en) * 2017-12-15 2022-12-13 Samsung Electronics Co., Ltd. Method and apparatus for determining object position
KR102589970B1 (en) * 2017-12-15 2023-10-17 삼성전자주식회사 Method and apparatus for determining object position
US10685515B2 (en) * 2018-09-10 2020-06-16 Ford Global Technologies, Llc In-vehicle location uncertainty management for passive start
CN109358616A (en) * 2018-09-12 2019-02-19 黄海宁 A kind of bearing calibration of pair of self-navigation object space coordinate and the deviation of directivity
US20200110817A1 (en) * 2018-10-04 2020-04-09 Here Global B.V. Method, apparatus, and system for providing quality assurance for map feature localization
US11500110B2 (en) * 2020-08-27 2022-11-15 Google Llc Localization using bearing from environmental features

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3715572A (en) 1971-03-05 1973-02-06 D Bennett Vehicle location and heading computer system
US3789198A (en) * 1972-04-10 1974-01-29 Boeing Co Vehicle location monitoring system
US3845289A (en) * 1972-07-18 1974-10-29 Avon Inc Method and apparatus employing automatic route control system
US4061995A (en) * 1975-01-23 1977-12-06 Mccrickerd John T Odograph and heading indicator therefor
US4107689A (en) * 1976-06-07 1978-08-15 Rca Corporation System for automatic vehicle location
DE2659094B2 (en) * 1976-12-27 1981-09-17 Bodenseewerk Gerätetechnik GmbH, 7770 Überlingen Navigation device for navigating land vehicles
US4347730A (en) * 1979-01-22 1982-09-07 The United States Of America As Represented By The Secretary Of The Army Method and apparatus for calibrating gyroscopically-stabilized, magnetically-slaved heading reference system
JPS5599016A (en) * 1979-01-24 1980-07-28 Nippon Telegr & Teleph Corp <Ntt> Measuring apparatus for position coordinates
JPS55131714A (en) * 1979-04-02 1980-10-13 Japan Radio Co Ltd Position coordinate detecting and displaying device
US4312577A (en) * 1979-08-13 1982-01-26 Fitzgerald J Vincent Motor vehicle map display system
DE2941331A1 (en) * 1979-10-11 1981-04-23 Siemens AG, 1000 Berlin und 8000 München AUTHENTIC NAVIGATION DEVICE FOR ROAD VEHICLES
US4402050A (en) * 1979-11-24 1983-08-30 Honda Giken Kogyo Kabushiki Kaisha Apparatus for visually indicating continuous travel route of a vehicle
FR2477740A1 (en) * 1980-03-06 1981-09-11 Bernard Patrice SYSTEM FOR LOCATING A VEHICLE
US4495580A (en) * 1981-03-30 1985-01-22 E-Systems, Inc. Navigation system
US4513377A (en) * 1981-06-11 1985-04-23 Nippondenso Co., Ltd. Vehicle-mounted navigator
JPS6057069B2 (en) * 1981-12-10 1985-12-13 株式会社デンソー In-vehicle navigator
EP0069965B1 (en) * 1981-07-07 1986-10-15 Nippondenso Co., Ltd. Mobile navigator
JPS5833284A (en) * 1981-08-21 1983-02-26 本田技研工業株式会社 Current position indicator for moving object
JPS58113711A (en) * 1981-12-26 1983-07-06 Japan Aviation Electronics Ind Ltd Azimuth and locus display
JPS58129313A (en) * 1982-01-29 1983-08-02 Honda Motor Co Ltd Running position display device of vehicle
DE3242904A1 (en) * 1982-11-20 1984-05-24 Teldix Gmbh, 6900 Heidelberg DEVICE FOR DETERMINING THE LOCATION OF A VEHICLE
JPH0613972B2 (en) * 1983-04-15 1994-02-23 株式会社日立製作所 Vertical support device
JPS6045285A (en) * 1983-08-22 1985-03-11 本田技研工業株式会社 Running position display for moving object

Also Published As

Publication number Publication date
BR8506774A (en) 1986-11-25
AU587982B2 (en) 1989-09-07
JP2819125B2 (en) 1998-10-30
IE851408L (en) 1985-12-07
JPH0830657B2 (en) 1996-03-27
ES8704260A1 (en) 1987-03-16
DE3587761D1 (en) 1994-04-07
JP3350898B2 (en) 2002-11-25
JPS6156910A (en) 1986-03-22
ES544601A0 (en) 1987-03-16
DE3587761T2 (en) 1994-08-04
JPH07109367B2 (en) 1995-11-22
WO1986000157A1 (en) 1986-01-03
JP2002357437A (en) 2002-12-13
EP0182893A1 (en) 1986-06-04
JPH11271077A (en) 1999-10-05
PT80610A (en) 1985-07-01
JPH1068631A (en) 1998-03-10
JPH06147906A (en) 1994-05-27
AU4433485A (en) 1986-01-10
JPH1054729A (en) 1998-02-24
JP2614712B2 (en) 1997-05-28
JP2819126B2 (en) 1998-10-30
US4796191A (en) 1989-01-03
ATE102342T1 (en) 1994-03-15
EP0166547B1 (en) 1994-03-02
ZA854303B (en) 1986-01-29
MX161572A (en) 1990-11-06
KR860700170A (en) 1986-03-31
JP2898612B2 (en) 1999-06-02
PT80610B (en) 1987-06-17
JPH1068632A (en) 1998-03-10
KR940002326B1 (en) 1994-03-23
EP0166547A2 (en) 1986-01-02
JPH06186045A (en) 1994-07-08
JPH1068633A (en) 1998-03-10
IE62726B1 (en) 1995-02-22
EP0166547A3 (en) 1989-03-08

Similar Documents

Publication Publication Date Title
CA1223356A (en) Vehicle navigational system and method
CA1248630A (en) Apparatus and method for displaying a map
US4914605A (en) Apparatus and method for displaying a map
US5486822A (en) Optimum route determination
US5434788A (en) Sensory system for vehicle navigation
US6751609B2 (en) Map database apparatus
EP0564140B1 (en) Vehicle location detecting apparatus
JP2925358B2 (en) Residential land navigation system
JP3110076B2 (en) Residential land navigation system
Zavoli et al. A land vehicle navigation system supported by digital map data base
JP3462531B2 (en) In-vehicle navigation system
RU21469U1 (en) CAR NAVIGATION SYSTEM
JPH06347281A (en) Onboard navigation system
JPH0580698A (en) Optimum route guiding method
JPH04177119A (en) Apparatus for determining optimum route
JPH05232867A (en) Navigation device

Legal Events

Date Code Title Description
MKEX Expiry