Patent Publication Number: US-5293355-A

Title: Tidal watch

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention relates to the field of electronic timing devices, and more particularly, to a tide prediction apparatus and method in a compact, portable and/or hand-held tide predicting watch. 
     2. Background Information 
     Navigators, fishermen, yachtsmen and shore dwellers everywhere have a need for accurate information concerning the prediction of tides Small craft and cabin cruisers using inland waters need to know the tide and the time it will occur so that they may safely travel without the hazards of low water making navigation treacherous. 
     By around 1650, it was generally accepted that the movements of the tides were connected with the Moon. Lunar tides are the effect of the Moon&#39;s gravitational pull acting on water on the surface of the Earth. The Sun&#39;s gravity also has an effect, but less than half that of the Moon&#39;s. The magnitude and time lag of the response of the water on the Earth to the pull of the Sun, Moon and other tide generating forces, varies according to terrestrial conditions, such as the depth, shape and size of the sea in a particular tidal area. Spring tides occur when the Sun and Moon are in conjunction (New Moon) or opposition (Full Moon). With these tides, the height and range of the tides is greater than at other times. Neap tides occur when the Sun and Moon are in quadrature, acting at right angles to each other. Neap tides have higher low water and lower high water than average with a range that is smaller than at other times. Perigee and Apogee tides occur because the Moons orbit is elliptical so that its distance from the Earth varies during the month. At Perigee the Moon is closest and at Apogee farthest from the Earth. Meterological and geographic conditions cause differences between the tides predicted on the basis of the forces described above and actual tides. Winds and barometric pressure changes, due to storms for instance, cause variations in the height of the tides. River estuaries and narrow tide channels also affect tidal profiles. Because of the multitude of effects, it is important to have the most accurate and up to date tidal predictions science can provide. 
     Around 1830, the first tide predictions for the United States were published in The American Almanac. In 1883, William Ferrel introduced the Maxima and Minima Tide Predictor. This machine summed nineteen constituents, e.g., a harmonic element of the tide generating force derived from the relative positions of the Earth, Moon and Sun. This machine predicted high and low tides from 1885 to 1914. 
     In 1912, Rollin A. Harris and E. G. Fischer produced an analog machine that summed 37 constituents. The National Oceanic and Atmospheric Administration (NOAA) used this machine, known as &#34;Old Brass Brains&#34; from 1912 through 1965. Presently NOAA displays it in its headquarters in Washington, D.C. 
     In 1965, analog to digital tide gauges were introduced. In 1966, electronic digital computers began to compute all constituents as described in the Manual of Harmonic Analysis and Prediction of Tides, U.S. Coast and Geodetic Survey. 
     The output of NOAA&#39;s computers, plus local secondary offset observations and constants, creates their published Tide Table predictions, which appear daily in almost all newspapers published within 150 miles of the Atlantic, Pacific and Gulf of Mexico coast lines, and in numerous almanacs and smaller publications of local interest. Both the radio and TV media broadcast tide times throughout the day. The end users of this information are coastal pilots, small and large power or sail boaters, fishermen, both recreational and commercial, coastal residents, marine engineers, skin and scuba divers, beachcombers, and others with an interest in marine or nautical oriented activities. The tide tables produced by NOAA give good accuracy, but are inconvenient to use. Usually, one has to look up the primary Reference Station, correct for Daylight Savings Time, look in the back for published offsets, and then determine the predicted tide at a station near your location 
     Computer programs exist for home use on home computers to predict tides using average times between tides, and there are some portable tide predicting devices available. These existing systems have various drawbacks and limitations. 
     Banner, U.S. Pat. No. 3,982,104 discloses a time and tide calculating device for wrist watches, clocks and calculators that registers the tides and the time of the tides, comprising rotatable concentric tide and calender discs placed adjacent to a clock face for indicative registration and cooperation with time telling devices. These mechanical discs are rotated and tide data indicated by markings on the discs. This device relies on an average tide occurrence lag of 50 minutes each day, which makes it inaccurate since the &#34;time lag&#34; varies each day, sometimes being greater and sometimes less than the average. This average is based on the idea that tides follow the Moon slavishly, and ignores other effects In fact, the interval which the Moon takes to appear to circle the Earth increases and decreases as the lunar month progresses. Also, changing locations requires resetting the device or renders it useless. For instance, at Galveston, Tex., tide tables reveal that usually there are two high and low tides per day, but that sometimes only one high and one low tide occur per day. The intervals from day to day vary from a few minutes to nearly two hours. Hence, tide predictions using this device have substantial limitations. 
     Showalter, U.S. Pat. No. 4,412,749 discloses a programmable electronic time and tide clock which displays the real time, whether the next tide will be a high or low tide, and the time the next high or low tide will occur. This device&#39;s operation is based on an average time plus a single interval correction between peak high and low tides, with its inherent inaccuracies as mentioned earlier. Changing locations would make the device go completely out of synchronization. 
     There is known a digital LCD watch with a programmed tide indicator which operates to indicate tide height and rise/fall. It is programmed to indicate future tide conditions for up to 364 days in advance. It has five modes of operation including an alarm mode, a countdown timer mode, a tide set mode in which tide table data is entered into the device manually for day one of a particular month and location, a future tide mode in which, after entering data in the tide set mode described above, one enters a future month day and time to have the tide state and conditions for that future time displayed, and a time set mode for conventional time and calendar setting. The device utilizes a six hour twelve minute cycle which is an average high to low tide interval, and thus is generally inaccurate as mentioned earlier. When a location is changed, this average cycle device becomes completely out of synchronization. 
     There is also known a tide prediction device which comes in East Coast and West Coast versions. The East Coast version operates through the year 1999 and includes 3076 tide locations and 1416 current locations. The West Coast version operates through the year 2003 and includes 1147 tide locations and 902 current locations Software updates are required to extend the operating life of the device as well as add new tide and current locations when released by NOAA. The device is hand-held and battery operated. It will compute the next high, low, minus, or ebb tide, the next flood or slack current, the height and direction of the tide at any time, and the speed and direction of the current at any time. There is no provision for providing custom ports, i.e., for calculating the tide occurrences at locations offset from the 3076 included in the East Coast version, for instance. 
     Thus there has been a need for a tide prediction apparatus which is both highly accurate, reflecting true tide values as opposed to average values, and flexible, providing for custom offset locations, to overcome these and other drawbacks present in the existing systems. 
     SUMMARY OF THE INVENTION 
     According to the present invention, the above described drawbacks and limitations existent in the field are overcome by providing a highly accurate and flexible time keeping device, including integrated circuit memory containing compressed tide table data, having the ability to provide custom port information using user supplied offsets The realization of the invention accomplishes, among others, the following objects associated with different aspects of the invention. 
     It is an object of the present invention to provide a tide prediction system which can predict the times of high and low tides for numerous ports and adjacent areas spanning the East, West, and Gulf coast regions of the continental U.S. 
     It is a further object of the present invention to provide a tide prediction system which allows the setting and display of the different Port/Substations supported by the tide prediction system. 
     It is a further object of the present invention to provide a tide prediction system which can display the current time, date, and day of the week in standard or military format (24 hour clock), and adjust for Daylight Saving Time. 
     It is a further object of the present invention to provide a tide prediction system which can display the phases of the moon from New to Full and back to New Moon with a resolution of twelve different phases, and indicate whether it is waxing or waning. 
     It is a further object of the present invention to provide a tide prediction system which can display the current water level height in stages. 
     It is a further object of the present invention to provide a tide prediction system which can generate an audible alarm for the arrival of a new hour, arrival of the next change in tide, or the arrival of a time preset by the user. 
     It is a further object of the present invention to provide a tide prediction system which can function as a stop watch with at least a resolution to hundredths of a second. 
     It is a further object of the present invention to provide a tide prediction system which allows the user to establish a plurality of Custom Ports by setting time offsets for high and low tidal events relative to any tidal port supported by the system and display graphically the water level associated therewith. 
     According to one aspect of the invention, published tide table data is efficiently compressed and stored in memory by constructing a plurality of port tables as a chronological list of tidal event entries in units of tens of minutes from the start of a given year with data for adjacent, or similar data pattern, ports stacked in adjacent columns, constructing a group table using the port tables by summing and averaging across rows and padding with null entries where needed, and constructing a database using the group table and rows of offsets for each port in a group. 
     According to another aspect of the invention, a user inputs offset data for a plurality of Custom Ports, i.e., ports or locations other than those for which there is published data, and the device calculates and displays tide data including a water level indication associated with the desired custom port. 
     These and other objects and aspects of the invention are better understood with reference to the detailed description and accompanying drawings, and it will be understood that changes in the specific structure shown and described may be made within the scope of the claims without departing from the spirit of the invention. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is an external view of one embodiment of the invention; 
     FIG. 2 is a block diagram of the major hardware components of an embodiment of the invention; 
     FIGS. 3 to 8 together are the dataflow diagrams for one embodiment of the invention; 
     FIGS. 9A, 9B are an entity-relationship diagram of an embodiment of the invention; 
     FIG. 10 is a firmware flow chart of an embodiment of the invention; 
     FIG. 11 is a list of 36 ports of interest; 
     FIG. 12 is a graph of time between tides for L.A.; 
     FIG. 13 is a graph of time between tides for Mobile; 
     FIG. 14 is a block diagram of the database construction process; 
     FIG. 15A, 15B, 15C are a simplified schematic diagram of an embodiment of the invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT(S) 
     FIG. 1 shows an external view 100 of an embodiment of the invention. Display area 124 and key-pad area 126 are located on case 127 as shown. The case 127 encloses the internal components (not shown) and protects them from environmental contaminants, such as dust and moisture. Switches 101-105 in key-pad area 126 include switches which control various functions of the embodiment, &#34;adjust&#34; 101, &#34;memory&#34; 102, &#34;mode&#34; 103, and &#34;scroll&#34; 105, and switch &#34;light&#34; 104 which controls the brightness of the display area 124 so that a user may adjust the display for different ambient light conditions. 
     Display area 124 includes areas 106-123 for displaying a variety of data to a user. Among these are: graphic water level display 109; Tide Change Alarm icon 131; Time Alarm icon 129; Hour Chime icon 103; moon phase display 118; port 112, high 114 and low 113 tide, set port 115, numerical hour and minute segments 122 and 123, next 116 and last 117 displays; date display area including segments 107, plus/minus 106, Daylight Savings Time (DST) 121, day of week (Mo Tu We Th Fr Sa and Su) 125; alarm prompt 108; stop watch (STW) 119; P.M. indicators (P) 120 and 128; set time 110; and tidewatch 111. The graphic water level display 109 operates using the rule of twelfths. 
     A block diagram 200 of the major hardware components is shown in FIG. 2. Processor 201 controls the operation of the device. It controls custom LCD display 205, which may be configured as display area 124 shown in FIG. 1, and includes an on-board LCD display driver 207. Four switches are depicted in block 202, and correspond to switches 101, 102, 103 and 105 in FIG. 1. These switches 202 signal processor 201 to exit the Halt mode and execute associated appropriate program code stored in the processor&#39;s 201 internal memory 208. External to the processor 201 is memory 203, which may be static RAM, for containing port tide database 209. The memory 203 communicates with processor 201 via control, address and data lines 210. The processor receives timing input signals from clock 204, which is a crystal and capacitor circuit. An alarm block 206 provides an audible signal to a user, to signal a tidal event for instance. For a more detailed representation of the hardware configuration of this embodiment, reference is made to FIG. 15. 
     An embodiment of the claimed invention is shown in FIG. 15. The processor 201 is the heart of the system, and as shown is connected to custom Liquid Crystal Display (LCD) 205, memory 203, switches 202 (S1, S2, S3 and S4), programming interface 1501, reset circuitry 1502, and timing circuitry 204. This preferred embodiment is composed of two major integrated circuits (ICs), the memory 203 and the processor 201. 
     In a preferred embodiment, the processor 201 is an NEC 75308 4-bit microcontroller, which includes on-board an LCD driver 207, real-time clock, and 8k bytes of program memory 208 (Read Only Memory - ROM) or its equivalent. This microcontroller device, or one with similar features, is particularly suitable to the present invention embodied in a wrist watch, as it is small in size, is able to operate off a single battery of less than 3 volts, has on-board clock capabilities, an on-board LCD driver/controller, is able to access external data storage and process inputs, and contains on-board program memory, while being relatively inexpensive. 
     The memory 203 in a preferred embodiment is at least 32k bytes of static Random Access Memory (RAM), such as the Fijitsu MB-84F256-25, 32×8. This memory size is based on the space required to store all of the required tables for one year, with ten minute accuracy, and assuming local port offsets would be stored in permanent memory 208 (ROM). This type of memory (static) was required so that data would be retained at low power consumption levels. This RAM 208 communicates with the processor 201 via bus 210, which includes 15 address lines (A0-A14), 8 data lines (D0-D7), and control lines consisting of a chip select (CS), a read (RD) and a write (WR) line. 
     In another memory configuration, up to 3 years of data is stored in a 128K bytes of memory resulting in a maintenance cycle of three years. 
     In yet another memory configuration, memory for storing the tidal table data could be programmable read only memory (PROM) of the CMOS variety. 
     The programing interface (PI) 1501 is provided for programming the yearly tide data into static RAM 203. This PI 1501 is provided with the following lines and functions: 
     1) A connect line (CON) to inform the microcontroller of the presence of an external programming device; 
     2) Address lines (A0-A14). 
     3) Control signal lines: 
     A) RD - read data signal, active when reading data, 
     B) WR - write data signal, active when writing data, and 
     C) CS - chip select signal, used to enable the RAM. 
     4) Data lines (D0-D7). 
     5) Signal ground. 
     Programming the yearly tide data into the RAM 203 through the interface 1501 is preferably done at a programming facility. The device will be taken apart, a new battery installed and the entire device connected to a programming and test fixture. Three of the data lines (D1-D3) may also serve as a serial communication link with the microcontroller 201 and may be used to thoroughly test all functions, such as a complete LCD test, a clock, alarm and ROM test, and a key switch test. 
     When the CON line goes low, the microcontroller 201 releases control of the RAM 203. At this time the programmer would load and verify new tidal information in the RAM 203. Then the device would be disconnected from the fixture, reassembled and tested for proper operation with the new data. 
     In an embodiment using PROM memory, the memory could be pre-programmed and then merely installed and tested when required. 
     The microcontroller&#39;s internal LCD driver 207 controls the custom LCD 205. All the necessary decoding and buffering takes place inside the microcontroller 201, and is maintained even in Halt mode. The LCD unit 205 is a custom device having all the necessary segments and annunciators. 
     A set of four switches 202 (S1-S4) operate to take the processor 201 out of the Halt mode (during which the processor is not executing code while maintaining both the realtime clock and the LCD, thereby conserving power). The processor 201 then checks to see which key 202 was pressed and starts executing code accordingly. The four keys 202 are the &#34;scroll (105), adjust(101), mode(103) and memory (102)&#34; keys. The functions they control will now be discussed with respect to the &#34;user interface&#34; and modes of operation. 
     USER INTERFACE 
     The following describes the user interface for one embodiment of the present invention. As described above, the present invention is a digital time keeping device which contains the following functional capabilities: 
     1) Predict the times of high and low tides for numerous ports and adjacent areas spanning the East West, and Gulf cost regions of the continental United States. 
     2) Allow the setting and display of the different Port/Substations supported by the device. 
     3) Display the current time, date, and day of the week in standard or military format (24 Hour Clock). 
     4) Display the phases of the moon from New to Full and back to New with a resolution of 12 different phases. 
     5) Display the current water level height in 6 stages with a resolution of twelfths of maximum water height. 
     6) Generate an audible alarm for the arrival of a new hour, arrival of the next tidal event, or the arrival of a time as present by the user. 
     7) Function as a stop watch with a resolution of hundredths of a second. 
     8) Allow the user to establish Custom Ports by setting time offsets for high and low tidal events relative to any tidal port supported by the watch. The user may then display high and low tides on the upper display and on the water level indicator the water level, associated with the custom port. Offsets for the custom ports established by the user are kept in memory for future reference. 
     MODES OF OPERATION 
     The device user interface in one embodiment consists of the four keys (101, 102, 103 and 105) and the LCD display 124. The keys are labeled Mode, Adjust, Scroll, and Memory (see FIG. 1). The Mode key 103 allows the user to scroll through the auxiliary modes of operation provided by the device. The Adjust key 101 controls the entrance and exit for the different modes of operation. The Scroll key 105 in Mode 0 enables toggling of the different time and port values on the LCD 124 and is used to change the setting of displayed values in Modes 1-6. The Memory key 102 is used to enter and recall user selected ports which are stored in memory 203. The LCD 124 displays twelve different phases of the moon (118), six different states of current water height to twelfths resolution (109), the current mode of operation, current port, time of next tide, time of last tide, current time and date, and the alarm functions. 
     Briefly, the different functional modes available in the watch are as follows: 
     Mode 0 - Normal watch operation. The display 124 shows the current date, time, and day of week. The user can change the display 124 to show either the time and type of the next tide, time and type of the last tide, or the current port setting using the Scroll key 105. Activating the Memory key 102 will replace the current port with a port previously stored in watch memory and display the new port selected on the LC display 124. Repeated activation of the Memory key 102 will scroll through the other ports stored in memory 203. 
     Mode 1 - Set Port operation. The current port replaces the time of the next tide on the display 124 to allow the user to adjust the setting for the current port. Activation of the Memory key 102 anytime during the Set Port operation will store the port currently showing on the display 124 into watch memory 203. 
     Mode 2 - Tide Watch operation. The user can set the date on the watch and recall the first tide for that date. Activating the Scroll key 105 will sequentially display the times and type (High/Low) of the following tidal events for the current port. The Moon Phase display 118 and the date are updated to show the date and moon phase for the tidal events being displayed. 
     Mode 3 - Custom Port operation. Allows the user to enter personalized substation high and low tide offsets from any port supported by the device. 
     Mode 4 - Alarm clock operation. Allows the user to activate or deactivate the alarm clock function, hour chime function, and tide chime function. It also permits the user to enter the desired alarm time setting. 
     Mode 5 - Stop watch operation. Utilizes time of day display as a stop watch with hundredths of a second resolution. 
     Mode 6 - Set Time operation. The user can set the device to run in regular time keeping mode or select the military time option (24 hour). The user can also adjust the settings for the current time and date. 
     All modes of operation can be reached directly from Mode 0. Exiting any mode from 1 to 6 places the user back to Mode 0 (normal watch operation) with the upper display field showing the time of the &#34;Next&#34; tidal event. The available mode of operation is displayed on the LCD 124 as the user scrolls through the different modes using the Mode key 103. The modes are now described in more detail. 
     MODE 0: NORMAL WATCH FUNCTION 
     In Mode 0 (normal operation), the device displays the current time and date, and the time and type (High/Low) of the next tide for the current port setting. The device also displays the current water height on the Water Level indicator 109. If the current &#34;Next&#34; tidal event is a high tide then the displayed water level will rise as the high tide approaches. Conversely if the &#34;Next&#34; tidal event tidal event is a low tide then the displayed water level will fall as the low tide approaches. The current moon phase for the displayed time and date is also displayed (118). The moon phase is always updated from right to left on the moon phase display 118. This allows the user to determine if the current moon is waxing or waning. 
     Activating the Scroll key 105 during normal operation scrolls the tide display from &#34;Next&#34; tide to &#34;Last&#34; tide, from &#34;Last&#34; tide to current &#34;Port&#34; setting, and finally from the current &#34;Port&#34; back to the &#34;Next&#34; tide. Activating the Memory key 102 at this time advances the current port setting to the next available port in memory (&#34;Memory Port&#34;), and changes the tide display to the &#34;Port&#34; setting, in order to display the new port. 
     MODE 1: SET PORT FUNCTION 
     The Set Port option is reached from Mode 0 by activating the Mode key 103 once. The LCD 124 then displays a blinking &#34;Set Port&#34; prompt (115). The user enters the Set Port option by depressing the Adjust key 101. The upper display field now shows the current port setting with the first digit blinking and the &#34;Port&#34; prompt (112) displayed. Activation of the Scroll key 105 increments the value of the blinking digit while activation of the Mode key 103 accepts the current value of the blinking digit and advances to the next digit. Activation of the Memory key 102 at any time during the sequence inserts the currently displayed port value into watch memory as a &#34;Memory Port&#34;. If there is no more room in which to store another Memory Port, then the oldest port in memory is displayed in the upper display field, blinking on and off to notify the user that a former memory port must be deleted to make room for the current entry. Activating the Scroll key 105 at this time advances the Memory Port being displayed in the upper display to the next oldest Memory Port. Activation of the Mode key 103 deletes the port being displayed in the upper display field and inserts the current set port into memory 203 and the upper display field. The user is then returned to the original entry state with the first port digit blinking from where he can enter another port for entry into the memory or to establish a new current port. Activating the Adjust key 101 at any time makes the currently displayed port the current port and returns the user to the Mode 0 (normal watch) mode of operation. 
     MODE 2: TIDE WATCH FUNCTION 
     The Tide Watch option is reached from Mode 0 by activating the Mode key 103 twice. At this time the display shows a blinking &#34;Tide Watch&#34; prompt (111). Activation of the Adjust key 101 enters the Tide Watch mode of operation with the time of the next tide displayed blinking in the upper display field. At this time the user has at least two options. He can either scroll through succeeding tidal events by activating the Scroll key 105 or he can set a future date by activating the Mode key 103. If the Mode key 103 is selected then the Month field on the display will start blinking. Each activation of the Scroll key 105 increments the current blinking digit, and activating the Mode key 103 causes the current blinking value to be accepted and advances to the next digit. Once the date is set, the first tide of that date is displayed in the upper field. Activating the Scroll key 105 at this time displays the time of the successive tides for the current port setting. The date display and the moon phase are updated to reflect the actual date and moon phase for the tidal event being displayed. Activation of the Adjust key 101 exits the Tide Watch mode and returns the user to the Mode 0 (normal watch) mode of operation. The current time, date, moon phase relative water level, and time of the next tide with respect to the current time are displayed on the LCD 124. 
     MODE 3: CUSTOM PORT FUNCTION 
     The Custom Port option is reached from Mode 0 by activating the Mode key 103 three times. At this time the display shows a blinking &#34;Set Time&#34; (110) and &#34;Set Port&#34; (115) prompts. Activating the Adjust key 101 enters the Custom Port mode of operation with the plus or minus offset for the high tide displayed in the lower display field (the default is zero offset). The high indicator 114 and the plus or minus indicator 106 are blinking. The plus or minus indicator 106 can be toggled using the Scroll key 105. Selecting the Mode key 103 accepts the current displayed value and advances to the hour offset field. Editing the high tide offset is accomplished using the Scroll 105 and Mode 103 keys where the Scroll key 105 increments the current blinking digit and the Mode key 103 accepts the current displayed value. After the high tide offset is entered the upper display field indicates low tide and the lower display field shows the low tide offset and the above operation is completed. Activation of the Adjust key 101 stores the entered offsets into the memory as a Custom Port. 
     The port displayed in the upper display is changed with the substation field (last two digits, 123) assigned a number (for instance in one embodiment a number from 99 to 90 for ten Custom Ports) depending on the number of Custom Ports already assigned to the major port (first two digits, 122). In the example above, substation numbers from 90 to 99 would be reserved for identification of the ten Custom Ports. If the memory allocated for Custom Ports is already full then the oldest Custom Port is displayed blinking in the upper display field to notify the user that a former Custom Port must be removed. Selecting the Scroll key 105 at this time displays the next oldest Custom Port in memory while activating the Mode key 103 deletes the currently displayed Custom Port and inserts the current Custom Port in memory. Activation of the Adjust key 101 exits the Custom Port function, makes the entered Custom Port the current port, and returns the user to the Mode 0 (normal watch) mode of operation. 
     It should be noted that the water level indicator changes to reflect the offset for the custom port, which is now the current port. 
     MODE 4: SET ALARM FUNCTION 
     The Set Alarm option is reached from Mode 0 by activating the Mode key 103 four times. At this time the display shows a blinking &#34;Alarm&#34; prompt (108). Selecting the Adjust key 101 enters the Set Alarm mode of operation. 
     The first of three alarm icons (Time Alarm 129, Hour Chime 130, and Tide Change Alarm icon 131) is displayed blinking. The user can toggle the display of the Time Alarm icon 129 with the Scroll key 105. Depressing the Mode key 103 with the icon displayed enables the Time Alarm and puts the device into the set alarm time mode of operation. The user then enters the desired time of the alarm using the Scroll key 105 to increment the current blinking character first AM and PM and the Mode key 103 to accept the current displayed value and advance to the next digit. Once the Time Alarm operation is complete the Hour Chime icon 130 is displayed blinking. Again, the user can toggle the icon on and off using the Scroll key 105. Selecting the Mode key 103 with the icon displayed enables the alarm while activating the Mode key 103 with the icon not displayed disables it. Once the Mode key 103 is selected again, the Tide Change Alarm icon 131 is displayed blinking. The Scroll key 105 toggles the icon on and off while the Mode key 103 selection enables or disables the alarm depending on the current state of the icon. 
     The Tide Change Alarm icon 131 when set indicates that at each successive tide change an alarm will sound. 
     MODE 5: STOP WATCH FUNCTION 
     The Stop Watch option is reached from Mode 0 by activation of the Mode key 103 five times. At this time the display will show a blinking &#34;STW&#34; prompt (119). Selecting the Adjust key 101 enters the Stop Watch function. The lower display field is set to zero and used as the stop watch display with the capability of displaying elapsed time from 0 to 99 minutes, 59 seconds, 99 hundredths of a second. The Mode key 103 starts and stops the counting of the stop watch function. The Scroll key 105 resets the count value of the stop watch to zero. Selecting the Adjust key 101 returns the user to the Mode 0 (normal watch ) mode of operation. 
     MODE 6: SET TIME FUNCTION 
     The Set Time option is reached from Mode 0 by depressing the Mode key 103 six times. At this time, the display shows a blinking &#34;Set Time&#34; prompt (110). Activation of the Adjust key 101 enters the Set time mode of operation. At this time, the user has the option of selecting Standard or Military time format, which is indicated by the display of &#34;12:00&#34; (Standard) of &#34;24:00&#34; (Military). The Scroll key 105 toggles the choice while the Mode key 103 accepts the currently displayed choice. Once this is done, the seconds field on the display is set to zero and the month field is blinking to show that it is the current field available for editing by the user. The Scroll key 105 increments the current blinking digit while the Mode key 103 accepts the displayed value and advances to the next digit. Once the month, date, hour, and minute fields have been set, the lower display will present the user with the first year of tidal data currently stored in the device. The user can modify the year displayed as the current year using the Scroll key 105 and Mode key 103 editing procedure as was used in setting the time. Once the year is entered the &#34;DST&#34; icon (121) starts blinking for setting the DAYLIGHT SAVINGS TIME mode of operation. Selecting the Scroll key 105 turns &#34;DST&#34; 121 on and off. Selecting the Mode key 103 with &#34;DST&#34; displayed, sets the device operation to the DAYLIGHT SAVINGS TIME mode of operaion. The above process continues until the Adjust key 101 is activated at which time the currently displayed time and date become the current time and date. The user is then returned to the Mode 0 (normal watch) mode of operation. 
     The above description of the modes of operation is representative of one embodiment of the invention. It should be understood that various modifications ar considered within the scope of the invention. For instance, the number of Custom Ports may be larger or smaller than the ten used in the example. 
     DATAFLOW DIAGRAMS 
     The following description provides definitions for all dataflow, process, and file structures used by an embodiment of the device, and found on the dataflow diagrams (FIGS. 3 to 8), as well as definitions for the data elements which comprise the defined dataflows. This description is organized in a top down hierarchy which mirrors the dataflow diagrams, with all dataflow, process, and file definitions grouped together in alphabetical order for each level of decomposition. The definitions for dataflows, data elements, and files are found at the level in which they first appear. Occurrences of dataflows, data elements, or files at levels below their definition level are identified with a reference to the location which contains their definition. This description should be reviewed in conjunction with the dataflow diagrams (FIGS. 3 to 8). 
     TOP LEVEL OVERVIEW 
     The top level overview (FIG. 3) details the structure of the major data processing components of one embodiment of the invention. There are two sources of inputs to the Tide Watch process of the device which are located in the Watch Keys and System Clock Source blocks. The Watch Keys are composed of the four external switches (202) which are available to the user to access the different operating features of the device. The System Clock is a hardware supplied stimulus which drives the Tide Watch process and consists of an implementation defined discrete time base parameter, which should typically be on the order of a few milliseconds. 
     The Tide Watch process of the embodiment produces two outputs which are shown as the Alarm and LCD Display sink blocks. The Alarm block drives hardware circuitry capable of generating an audible tone. The LCD Display block, which drives the display 124, serves as an interface between the current state of the Tide Watch process and the user. Information displayed on the LCD may include the current time, tidal information (time of next or last tide, tide type of next or last tide, current port setting), moon phase, current water level, and the results of any key activation by the user in the different modes of operation. 
     Thus, the system is driven by the Tide Watch process which receives input from the Watch Keys and System Clock source blocks and generates the output for the Alarm and LCD Display sink blocks. 
     Referring now to FIG. 4, which is titled &#34;1.0 TIDE WATCH PROCESS,&#34; the following description gives the dataflow name, followed by its definition and its composition. 
     Clock Event--Implementation defined Ticks. The arrival of Clock Event at the Main Tasker process drives the Tide Watch process and results in changes in the current state of the Tidal Watch. 
     Cur Date--Tens Time, Year. Cur Date holds the time stamp for the current time as known by the system. This information is utilized by the Update Moon Phase process to determine the current moon phase. 
     Current Key--No key, or Mode Key, or Scroll Key, or Adjust Key, or Memory Key. This dataflow input is generated by the activation of one of the four external keys available to the user. 
     Current Tide Request--Port, Substation, Rec Type, Time Type, Tens Time, Year. The Current Tide Request contains the information needed by the Update Tide process to retrieve the desired tidal information for the Tidal Database. The Current Tide Request time stamp contains the current time as known by the system and is utilized in determining the current tidal state for a given Port/Substation. Rec Type specifies a &#34;Next&#34; or &#34;Last&#34; tidal event. Time Type specifies Standard or Daylight Savings time. 
     Current Tide Rec--Tide Type, Tens Time. The Current Tide Rec contains the time of the requested tidal event (tens of minute since start of year) and the Tide Type (Hi or Lo). 
     Future Date--Tens Time, Year. Future Date holds the time stamp for a future tidal event. This information is utilized by the Update moon Phase process to determine the corresponding moon phase for the future tidal event as requested by the user. 
     Future Tide Request--Port, Substation, Rec Type, Time Type, Tens Time, Year. The Future Tide Request contains the information required by the Update Tide process to retrieve the desired tidal information from the Tidal Database. The Future Tide Request time stamp contains a future time and is utilized in displaying future tidal events to the user for a given Port/Substation. Time Type specifies either Standard or Daylight Savings time. 
     Future Tide Rec--Tide Type, Tens Time, Year. The Future Tide Rec contains the time and date of the requested tidal event (either Next tide or Last tide) and the Tide Type (Hi or Lo). 
     Mode Input--Current Key, or New Hundredth Sec. The Mode Input contains the user input Current Key which is used by the Mode Tasker process to direct the operation of the different functions available in the device. New Hundredth Sec marks the passage of one hundredth&#39;s of a second and is utilized in blinking edit fields and the Stop Watch mode of operation. 
     Substation Request--Port, Substation. Substation Request contains the information required by the Update Tide process to retrieve the substation high and low tide offset values from the database. This information is used in configuring user defined high and low tide offsets when entering Custom Ports. 
     Substation Offset--Hi Tide Offset, Lo Tide Offset. Substation Offset contains the high and low tide offsets for a given Port/Substation. 
     Next the data element definitions are given with respect to the data flow chart of FIG. 4. The data element is given, followed by its values and meaning, and any aliases. 
     Current Key--Integer value in the range of 0 to 4 which represents which of the four keys available to the user has been activated. These keys are defined a follows: 0--No Key: No key selected; 1--Mode Key: Mode key selected; 2--Scroll Key: Scroll key selected; 3--Adjust Key: Adjust key selected; and 4--Memory Key: Memory key selected. 
     Clock Event--Clock Event is an implementation defined value which represents the passage of a discrete quantum number of hardware generated Clock Ticks. The maximum range of time represented by this value cannot exceed ten milliseconds as the Tidal Watch must have access to a minimum time granularity of ten milliseconds to display hundredths of a second while in the Stop Watch mode of operation. 
     Hi Tide Offset--Substation offset which holds the plus or minus time difference between a high tide event at the substation and the time of the same event at the port to which it is attached. This value is in units of (1-5 minutes depending on the size of the memory) and can hold a value from +10 to -10 hours. 
     Lo Tide Offset--Substation offset which holds the plus or minus time difference between a low tide event at the substation and the time of the same event at the port to which it is attached. This value is in units of (1-5 minutes depending on the size of the memory) and can hold a value from +10 to -10 hours. 
     Port--Integer in the range of 1 to the number of ports contained in the database which is used to differentiate among the different ports contained in the database. 
     The device database contains all the tidal ports monitored by the N.O.A.A. in the continental United States. At present this number is equal to 36 ports, however a few of these ports (inland ports located on rivers that empty into the ocean) can be dropped to make more room in the database if required by hardware considerations. 
     Rec Type --Binary value: 0--Last tide; 1--Next tide. This record identification tag is used to differentiate among the two different tidal records available for a given point in time. The Last tide is that tidal event that occurred previously to the time of interest. The Next tide is that tidal event that will proceed the time of interest. 
     Substation--Integer in the range of 0 to 99 which is used to differentiate the substations assigned to the Ports contained in the database. Substations tagged from 90 to 99 are designated as Custom Ports with the High and Low tide offsets entered by the user. 
     The actual number of substations assigned to any one port varies from port to port. Many ports will have fewer than 89 substations and therefore will have a smaller range of valid values. 
     Tens Time--Aliases: Current Tens Time, Next Tide Tens Time, Last Tide Tens Time. Unsigned integer in the range of 0 to 52704 which contains the date encoded as tens of minutes since Jan 1, 0:00 A.M. 
     The Tens Time data element only requires a resolution of tens of minutes as that is the granularity of the tidal records in the database and the moon phase tables. The upper range of Tens Time is determined by the maximum number of days (366 for leap year) * 24 hours * 6 tens of minutes per hour. 
     Tide Offset--Aliases: Hi Tide Offset, Lo Tide Offset. Signed integer in the range of 1 to 128 (1-600 for one minute offsets) which is a measure of the difference between the time of a tidal event at a substation and the port to which it is assigned in units of 1 or 5 minutes depending on whether 1 minute or 5 minute resolution is used. 
     The resolution of the Substation Offset Database is set at 5 (or 1) minutes to allow for storage of offsets as large as ten hours in a signed byte value composed of 8 (or 10) bits. 
     Tide Type--Binary value: 0--Low tide; 1--High tide. This identification tag is used to distinguish between High and Low tidal events returned from the database. 
     Time Type--0--STANDARD TIME, 1--DAYLIGHT SAVINGS TIME. Time Type is used to track the current time standard being used for the current time setting of the watch. This is utilized in making adjustments to tidal records which are stored in local STANDARD TIME. 
     Year--Integer value with range of 0 to 99. The Year data element is used to distinguish which section of the database to access for the desired tidal record and for determination of leap years. 
     The following gives the process definitions with respect to the data flow chart of FIG. 4. The process is listed followed by its description. 
     Main Tasker 1.1 (see also FIG. 5): 
     1. For each Current Key input: 
     1.1 Send Mode INput to Mode Tasker process. 
     1.2 Check Current Mode State file and generate Current Tide Request if port or current time has been changed. 
     2. For each Clock Event input: 
     2.1 Update system time. 
     2.2 Generate Current Tide Request if current system time is greater than current &#34;Next&#34; tide time. 
     2.3 Generate Alarm if alarm condition is detected and found enabled in Alarm Status file. If alarm is sounded then update the Alarm Status file. 
     Update Tide 1.2 (see also FIG. 6): 
     1. For each Future Tide Request input: 
     1.1 Retrieve tidal record corresponding to the Future Tide Request parameters from the database and return Future Tide Rec. 
     2. For each Current Tide Request 
     2.1 Retrieve tidal record corresponding to the current Tide Request parameters from the database and return the Current Tide REc. 
     Mode Tasker 1.3 (see also FIG. 7): 
     b 1. For each Mode Input input: 
     1.1 Perform required task according to current state and operational mode of the system using information contained in Custom Port, Current Time, and Current Tide Record files. Issue Future Tide Request and Future Date if operational mode=Tide Watch and new tidal event is requested. Update Virtual Display file. 
     Screen Formater 1.4: 
     1. For each activation of the process: 
     1.1 Fetch the screen information from the Virtual Display file and translate it for display on the LCD. 
     1.2 Perform the necessary hardware manipulation to display the information on the LCD. 
     Update Moon Phase 1.5 (see also FIG. 8): 
     1. For each Cur Date input: 
     1.1 Calculate the moon phase in units of twelfths of a Synodic period (29 days, 12 hours, 44 minutes) which corresponds with the Cur Date parameters. 
     1.2 Update the Virtual Display file with the calculated moon phase information. 
     2. For each Future Date input: 
     2.1 Calculate the moon phase in units of twelfths of a Synodic period which corresponds with the Future Date parameters. 
     2.2 Update the Virtual Display file with the calculated moon phase information. 
     Service Clock 1.6: 
     1. For each Clock Tick input: 
     1.1Perform required actions to service hardware circuitry responsible for generating the Clock Tick input. 
     1.2 Increment the Clock Tick counter. If the implementation defined number of Clock Ticks have ben generated since the last issue of Clock Event then rest Clock Tick counter and issue a new Clock Event. 
     Debounce Keys 1.7: 
     1. For each Key Activation input: 
     1.1 If this Key Activation key is first activation or this Key Activation key=last Key Activation key then increment counter else reset counter. 
     1.2 If key counter=implementation defined Key Debounced value then issue Current Key and reset key counter. 
     The following are the file definitions with respect to the data flowchart of FIG. 4. The file name is listed followed by its composition. 
     Alarm Status--Hour Chime Status (Enabled/Disabled), Tide Alarm Status (Enabled/Disabled), Time Alarm Status (Enabled/Disabled), Hour, Minute, Hour Chime State, Tide Alarm State, Time Alarm State. The Status records are Boolean fields which indicate if the respective alarm is enabled or disabled. The Time Of Day field is the time of day for generating the Time alarm as set by the user. The State fields are used to rack an alarm in progress condition. 
     Current Mode State--Current System State, Mode Status, Default Display. Current System State tracks the current operational state of the system. Possible values are defined as follows: 0--Normal Watch; 1--Set Port Prompt; 2--Enter Port Setting; 3--Remove Memory Port; 4--Set Time Prompt; 5--Select Time Format; 6--Enter New Time; 7--Tide Watch Prompt; 8--Enter Future Time; 9--Show Future Tide; 10--Custom Port Prompt; 11--Enter Custom Port Hi Offset; 12--Enter Custom Port Lo Offset; 13--Remove Custom Port; 14--Set Alarm Prompt; 15--Set Alarm; 16--Set Alarm Time; 17--Stop Watch Prompt; and 18--Run Stop Watch. 
     Mode Status indicates a change of the system state following a mode operation (i.e. new port or time setting) or a return to the Mode 0 mode of operation is defined as follows: 0--No change; 1--New port; 2--New time; and 3--Return to Normal Watch. 
     Default Display is used to track which of the three possible entities is being displayed in the upper display field. Default Display is defined as follows: 0--Next Tide; 1--Last Tide; 2--Current Port. 
     Current Tide Record--Port, Substation, Next Tide Type (Hi/Lo), Next Tide Tens Time, Last Tide Tens Time. The Current Tide Record file contains the tidal information for the current Port/Substation which is applicable to the current time as known by the system. The times of the Next and Last tidal event are found here as well as the tide type for the Next tide. The tide type for the Last tide is always the inverse of the tide type for the next tide. 
     Current Time--Hour, Minute, Second, Day, Month, Day of Week, Current Tens Time, Start Year, Current Year, Time Type, Clock Event Counter. The Current Time file contains the current time and day of the week as known to the system. The Tens Time field is used by the processes that maintain the Current Tide Record is defined as the number of tens of minutes since the start of the year The Start Year field contains the starting year of the tidal database. The Current Year field contains the Current Year as known by system. Time Type is a Boolean value which indicates whether the current time is Standard od Daylight Savings. Day of Week is defined as an integer from 0 to 6 with the following values 0--Sunday; 1--Monday; 2--Tuesday; 3--Wednesday; 4--Thursday; 5--Friday; and 6--Saturday. 
     Custom Ports--Port [10], Substation [10], Hi Tide Offset [10], Lo Tide Offset [10], Age [10], Next Port. In one embodiment, there are ten records in the Custom Ports file which will allow a total of ten Custom Ports to be established by the user for two different Port settings. All Custom Port substations are in the range of 90-99 to differentiate them from regular substations in this embodiment. Hi and Lo Tide Offsets are in the form Hours/Minutes with a maximum of 8 hours and 59 minutes. The Age record is used to mark the time of the individual entries relative to the other ports and is used when deleting a Custom Port record when a new record is added and the file is already full. The maximum value for any Age entry is 9 in this embodiment. Next Port is used as a pointer in entering the removing Custom Port entries. 
     Virtual Display--Setport Label (On/Off), Tidewatch Label (On/Off), Settime Label (On/Off), Lo Tide Offset (On/Off), Next Label (On/Off), Last Label (On/Off), Port Label (On/Off), Hi Label (On/Off), Lo Label (On/Off), Plus Label (On/Off), Minus Label (On/Off), Upper Pm Label (On/Off), Lower Pm Label (On/Off), Stopwatch Label (On/Off), Setalarm Label (On/Off), Daylight Savings Label (On/Off), Time Alarm Icon, Hour Chime Icon, Tide Change Alarm Icon 131, Moon Phase [6], Water Level [6], Day of Week [7], Upper Display Field [2], Month Field, Date Field, Lower Display Field [3], Current Edit Digit, Edit Entry Value [2], Blink State (On/Off), Blink Counter. All labels, icons, Moon Phase, Water Level, and the Day of Week records in the Virtual Display file are Boolean. The Upper Display Field holds the current display value for the &#34;Next Tide&#34;, &#34;Last Tide&#34;, and &#34;Port&#34; field. The Lower Display Field holds the current Hour/Minute/Second when displaying the current time or the Minutes/Seconds/Hundredths value when in Stop Watch mode of operation, or the Hi/Lo offset value when entering a Custom Port. The Current Edit Digit is used during editing operations involving user input to mark the current field being edited. The Edit Entry Value is used as an editing scratch pad during blinking operations. The Blink State field is a Boolean indicator used to track the current state of any blinking operations while Blink Counter is used to control the On/Off duration of the blink. 
     Referring now to FIG. 5, titled &#34;MAIN TASKER PROCESS&#34; described are the dataflow definitions. The dataflow is listed followed by its composition. 
     Clock Event--Reference 1.0 Tide Watch Process. 
     Clock Job--New Hundredth Sec, or New Second, or New Minute, or New Hour, or New Day. Clock Job allows for various levels of granularity in marking the passage of time. This dataflow is utilized by the Task Supervisor process as a trigger for updating the current state of different aspects of Tidal Watch operation such as the current time display, water level, moon phase, and tidal event. 
     Cur Date--Reference 1.0 Tide Watch Process. 
     Current Key--Reference 1.0 Tide Watch Process. 
     Current Tide Rec--Reference 1.0 Tide Watch Process. 
     Current Tide Request--Reference 1.0 Tide Watch Process. 
     Cur Date--Reference 1.0 Tide Watch Process. 
     Display Fields--Time Field, or Date Field, or Next Tide Field, or Last Tide Field, or Port Field, or Day of Week Field. Display Type Update allows the Update Display process to refresh specified fields of the LCD display. This is done to prevent conflict with screen fields that are currently under control of an operational mode of the Tidal Watch. 
     Mode Input Reference 1.0 Tide Watch Process. 
     Tide Check Type--Next Tide Check, or Tide Moon Check, or Moon Check. Tide Check Type directs the Check Tide process in generating Current Tide Requests and Cur Date. 
     The following description is of the data element definitions with respect to the data flowchart of FIG. 5. The data element is listed followed by its values and meaning. 
     Clock Job--Integer value that allows the Task Supervisor process to monitor the passage of time in different quantum. Clock Job is organized a an inclusive hierarchy where a high order job includes all lower level jobs. Possible values are as follows: 1--New Hundredth Sec: There have been one hundredth of a seconds worth of Clock Events since the last Clock Job was generated; 2--New Second: Second increment in Current Time file; 3--New Minute: Minute increment in Current Time file; 4--New Hour: Hour increment in Current Time file; and 5--New Day: Date increment in Current Time file. 
     Display Fields--Boolean bit field defined as follows: Bit 1--Time Field (On/Off); Bit 2--Date Field (On/Off); Bit 3--Next Tide Field (On/Off); Bit 4--Last Tide Field (On/Off); Bit 5--Port Field (On/Off); and Bit 6--Day of Week Field (On/Off). Display Fields allows the Update Display process to refresh those fields of the LCD display that are not under control of the current mode of operation of the Tidal Watch. 
     Tide Check Type--Integer value defined as follows: 0--Next Tide Check: Check the current &#34;Next&#34; tide record against the current time to see if it has expired; 1--Tide Moon Check: Check the current &#34;Next&#34; tide record against the current time to see if it has expired--Generate a Cur Date to update the moon phase; 2--Moon Check: Generate a Cur Date to update the current moon phase. Tide Check Type allows the Check Tide process to differentiate between the different tide and moon checks required by the current system state. 
     The following are process definitions with respect to the data flowchart of FIG. 5. Each process is listed followed by its description. 
     Task Supervisor 1.1.1: 
     1. For each Current Key input: 
     1.1 If Current Key does not equal No Key then Generate Mode Input. 
     1.2 Check Current Mode State file and if necessary initiate Check Tide, Update Water Level, and Update Display processes and update the Current Mode State file. 
     2. For each Clock Event input: 
     2.1 Initiate Update Clock process. 
     3. For each Clock Job input: 
     3.1 Generate Mode Input=New Clock Tick. Initiate Mode Switcher process. 
     3.2 If Clock Job=New Second then initiate Update Display process. 
     3.3 If Clock Job=New Minute, New Hour, or New Day then initiate Check Alarm, Update Water Level, Check Tide and Update Display processes. 
     Update Display 1.1.2: 
     1. For each Display Type Update input: 
     1.1 Update the display fields in the Virtual Display file indicated by the Display Type Update parameter using the information in the Current Time and Current Tide Rec files. 
     Check Tide 1.1.3: 
     1. For each Tide Check Type input: 
     1.1 If Tide Check Type=Next Tide Check or Tide Moon Check then 
     1.1.1 If Next Tide Tens Time in Current Tide Record file=Current Tens Time and the Current Time file and Minutes modulo 10 does not equal zero then generate Current Tide Request and store result in Current Tide Record file. 
     1.2 If Tide Check Type=Tide Moon Check or Moon Check then generate Cur Date. 
     Check Alarm 1.1.4: 
     1. For each activation of the process: 
     1.1 Check Hour Chime State, Tide Alarm State and Time Alarm State for Alarm In Progress state and if found then update state. If state=Alarms Finished then turn alarm off and update state to No Alarm In Progress. If alarm was Time Alarm then set Time Alarm Status to Disabled. 
     1.2 If Hour Chime Status, Tide Alarm Status, or Time Alarm Status=Enabled and corresponding state&lt;&gt;Alarm In Progress then check corresponding condition in Current Time file and Current Tide Record file and if alarm condition is present turn on corresponding alarm and update corresponding alarm and update corresponding alarm state field. 
     Update Clock 1.1.5: 
     1. For each activation of the process: 
     1.1 Increment Clock Event Counter in Current Time file. 
     1.2 Update the Current Time file 
     1.1.1 If Clock Event Counter=New Hundredth Sec then generate Clock Job=New Hundredth Sec. 
     1.1.2 If new Second&lt;&gt;old Second then generate Clock Job=New Second 
     1.1.3 If new Minute&lt;&gt;old Minute then generate Clock Job=New Minute 
     1.1.4 If new Hour&lt;&gt;old Hour then generate Clock Job=New Hour 
     1.1.5 If new Day&lt;&gt;old Day then generate Clock Job=New Day. 
     Update Water Level 1.1.6: 
     1. For each activation of the process: 
     1.1 Using Next Tide Tens Time and last Tide Tens Time for the Current Tide Record file and Current Tens Time from the Current Time file compute the current water level using the 1-2-3-3-2-1 rule of twelfths and update the Water Level field in the Virtual Display file. 
     The following are file definitions with respect to the data flowchart of FIG. 5. Each file is listed followed by its composition. 
     Alarm Status--Reference 1.0 Tide Watch process. 
     Current Mode State--Reference 1.0 Tide Watch process. 
     Current Tide Record--Reference 1.0 Tide Watch process. 
     Current Time--Reference 1.0 Tide Watch process. 
     Custom Ports--Reference 1.0 Tide Watch process. 
     Virtual Display--Reference 1.0 Tide Watch process. 
     Referring now to FIG. 6, titled &#34;Update Tide Process&#34; the following are dataflow definitions. Each dataflow is listed followed by its composition and any aliases. 
     Current Tide Rec--Reference 1.0 Tide Watch process. 
     Current Tide Request--Reference 1.0 Tide Watch process. 
     Future Tide Request--Reference 1.0 Tide Watch process. 
     Future Tide Rec--Reference 1.0 Tide Watch process. 
     Offset Request--Port, Substation. Aliases: Substation Request. Offset Request is an alias of Substation Request generated inside the Update Tide process. It is used in building the Tide Request dataflow which is used in retrieving tidal event records from the Tide Records file. 
     Offset Record--Hi Tide Offset Lo Tide Offset. Aliases: Substation Offset. Offset Record is an alias of Substation Offset generated inside the Update Tide process. It is used in building the Tide Request dataflow which is used in retrieving tidal event records from the Tide Records file. 
     Substation Offset--Reference 1.0 Tide Watch process. 
     Substation Request--Reference 1.0 Tide Watch process. 
     Tide Record--Tens Time+Tide Type (Hi/Lo). Tide Record is generated in response to a Tide Request and contains the time and type of a tidal event for a specified port, substation and substation offset. 
     Tide Request--Port+Rec Type (Next/Last), Tens Time, Hi Tide Offset, Lo Tide Offset, Year. Tide Request contains the information needed by the Fetch Tide Time process to retrieve the desired tidal information from the Tidal Database. The Rec Type field indicates if the desired tide is the one immediately preceding the Tens Time field or the tide immediately following the Tens Time field. Tide Offset contains the High and Low offset that is to be used for this tide record fetch. 
     The following are data element definitions with respect to the dataflow chart of FIG. 6. Each data element is listed. 
     Hi Tide Offset--Reference 1.0 Tide Watch process. 
     Lo Tide Offset--Reference 1.0 Tide Watch process. 
     Port--Reference 1.0 Tide Watch process. 
     Rec Type--Reference 1.0 Tide Watch process. 
     Substation--Reference 1.0 Tide Watch process. 
     Tens Time--Reference 1.0 Tide Watch process. 
     Tens Time--Reference 1.0 Tide Watch process. 
     Tide Type--Reference 1.0 Tide Watch process. 
     Year--Reference 1.0 Tide Watch process. 
     The following are process definitions with respect to the dataflow chart of FIG. 6. Each process is listed followed by its description. 
     Fetch Tide Record 1.2.1: 
     1. For each Current Tide Request input: 
     1.1 If requested port=Custom port ten fetch Hi and Lo offsets from Custom Ports file. 
     1.2 Generate Offset Request 
     1.3 Generate Tide Request 
     1.4 Generate Current Tide Rec 
     2. Future Tide Request input 
     2.1 If requested ed port=Custom port then et Hi and Lo offsets from Custom Ports file, 
     else 
     2.2 Generate Offset Request 
     2.3 Generate Tide Request 
     2.4 Generate Future Tide Rec 
     3. For each Substation Request input: 
     3.1 Generate Offset Request 
     3.2 Generate Substation Offset 
     Fetch Tide Time 1.2.2: 
     1. For each Tide Request input: 
     1.1 Fetch port offset for specified port from Port Table Offsets file. 
     1.2 Using the Database Keys file and the Tens Time from Tide Request fetch tide record from Tide Records file. 
     1.3 Using port offset from Port Table Offsets file, and the Hi/Lo Offsets and Rec Type from Tide Request verify tide record. 
     1.4 If tide record is valid then generate Tide Record 
     else 
     1.5 Fetch next/last tide record and return to step 1.3. 
     Fetch Substation Offsets 1.2.3: 
     1. For each Offset Request 
     1.1 Fetch Hi and Lo Offsets for specified Port/Substation from Substation Offsets file. 
     1.2 Generate Offset Record 
     The following are file definitions with respect to the dataflow chart of FIG. 6. Each file is listed followed by its composition. 
     Custom Ports--Reference 1.0 Tide Watch process. 
     Database Keys--Total Ports, Record Size, Port Record Location [40], Port Record Size [40], Start Year, End Year, Tens Times Ptrs [55]. Total Ports is the number of ports supported by the tidal database, with a range of 1 to 40 in one embodiment. Record Size is the number of bytes in a tidal record which includes the Tens Time header and the Tens Time header offset for all the ports in the database (See Tidal Records file definition). Port Record Location contains the bit position in the tidal record for the start of the corresponding port (referenced by the array index). The Port Record Size contains the bit size of the port offset for the corresponding port (referenced by the array index). Start Year is then starting year of the database. End Year is the last year covered by the database. Tens Times Ptrs are addresses for the start of tidal records for each thousand increment of the Header Tens Times in the Tide Records file. 
     Port Table Offsets--Total Offsets [40]. Table Offsets contains the Tens Time table offset for each port in the tidal database. This offset is applied to each port record in the database. 
     Substation Offsets--Port Address [40], Number of Substations [40]. Port Address contains the starting addresses in the substation offset database for each group of substations assigned to the individual ports where the port is referenced by the array index. Number of Substations contains the number of substations assigned to each port where the port is referenced by the array index. The range of substations is defined as 0-89 in one embodiment. 
     Tide Records--Header Tens Time [Tides in one year], Tide Type [Tides in one year], Port Tens Time Offset [Ports in Database][Tides in one year]. Tide Records contains the tide times for the tide ports in the continental U.S. for an entire year. The Header Tens Time contains the time of all the tidal events for one year in Tens Time format. The Tide Type is a Boolean value that identifies the corresponding Header Tens Time as a High or Low tide. The Port Tens Time Offset contains the offset from the Header Tens Time that is used to determine the actual tidal event time for the individual ports. The records are grouped in a look-up table that is organized as follows: 
     
         ______________________________________                                    
Time of tide 1 -                                                          
          Tide Type -                                                     
                    Port 1 Offset                                         
                               . . .                                      
                                    Port n Offset                         
Time of tide 2 -                                                          
          Tide Type -                                                     
                    Port 1 Offset                                         
                               . . .                                      
                                    Port n Offset                         
. . .     . . .     . . .      . . .                                      
                                    . . .                                 
Time of tide n -                                                          
          Tide Type -                                                     
                    Port 1 Offset                                         
                               . . .                                      
                                    Port n Offset                         
______________________________________                                    
 
    
     Referring now to FIG. 7, titled &#34;Mode Tasker Process&#34; the following are data flow definitions. Each dataflow is listed followed by its composition. 
     Future Date--Reference 1.0 Tide Watch process. 
     Future Tide Request--Reference 1.0 Tide Watch process. 
     Future Tide Rec--Reference 1.0 Tide Watch process. 
     Mode Input--Reference 1.0 Tide Watch process. 
     Mode Job--Scroll Key, or Mode Key, or Memory Key, or Mode Prompt, or Start Mode, or Exit Mode, or Hundredths Sec Tick. Mode Job is used to pass key input by the user to the different mode handling processes. Start Mode and Exit Mode are used to set up and exit the different mode of operations. The Hundredths Sec Tick is utilized by the Stop Watch process to track time while in the stop watch mode of operation. Hundredth Sec Tick is used to run the Stop Watch and is used in flashing edit field characters during user input. 
     Substation Offset--Reference 1.0 Tide Watch process. 
     Substation Request--Reference 1.0 Tide Watch process. 
     The following are data element definitions with respect to the dataflow chart of FIG. 7. Each data element is listed followed by its values and meaning. 
     Mode Job--Integer value defined as follows: 
     
         ______________________________________                                    
0 - Mode Prompt:                                                          
               Display mode label on screen.                              
1 - Mode Key:  Mode key selected.                                         
2 - Scroll Key:                                                           
               Scroll key selected.                                       
3 - Start Mode:                                                           
               Enter mode of operation.                                   
4 - Memory Key:                                                           
               Memory key selected.                                       
5 - Exit Mode: Exit mode of operation.                                    
6 - Hundredths Sec Tick:                                                  
               Hundredth of a second has elapsed                          
               since last Hundredths Sec Tick.                            
______________________________________                                    
 
    
     The following are process definitions with respect to the dataflow chart of FIG. 7. Each process is listed followed by its description. 
     Mode Switcher 1.3.1: 
     1. For each Mode Input input: 
     1.1 Decode Mode Input using the current contents of the Current Mode State file and generate Mode Job to the appropriate process. 
     Set Port 1.3.2: 
     1. For each Mode Job input: 
     1.1 If Mode Job=Mode Prompt then write Set Port prompt to the Virtual Display file and set Current System Sate in the Current Mode State file to Set Port Prompt 
     else 
     1.2 If Mode Job=Start Mode then initialize the Virtual Display edit fields and set Current System State in the Current Mode State file to Enter Port Setting 
     else 
     1.3 If Mode Job is Scroll or Mode key or=Hundredths Sec Tick then update the Virtual Display file and the Current Mode State file if necessary 
     else 
     1.4 If Mode Job is Memory Key then 
     1.4.1 If Current System State in Current Mode State file=Normal Watch then insert Next Port port from Memory Port file into Current Tide Record, increment Next Port, and set Mode Status in Current Mode State file to New Port. 
     else 
     1.4.2 If Memory Ports file is not full then insert port in Virtual Display file into Memory Ports file. 
     1.4.3 Insert oldest port from Memory Ports file into Virtual Display file and set Current System State in Current Mode State file to Remove Memory Port. 
     1.5 If Mode Job=Exit Mode then insert port setting from Virtual Display file into Current Tide Record and set Mode Status in Current Mode State file in New Port. 
     Set Custom Port 1.3.3: 
     1. For each Mode Job input: 
     1.1 If Mode Job=Mode Prompt then write the Custom Port prompt to the Virtual Display file and set Current System State in the Current Mode State file to Custom Port Prompt. 
     else 
     1.2 If Mode Job=Start Mode then initialize the Virtual Display file edit fields using the Current Tide Rec file or the Custom Ports file. Generate Substation Request if current port is not already a Custom Port. Set Current System State in Current Mode State file Enter Custom Port Hi Offset. 
     else 
     1.3 If Mode Job is a user input key or=Hundredths Sec Tick then update the Virtual Display file and the Current Mode State file if necessary. 
     1.3.1 If end of Hi Offset edit then set Current System State to Enter Custom Port Lo Offset. 
     else 
     1.3.2 If end of Lo Offset edit then set Current System State to Enter Custom Port Hi Offset. 
     else 
     1.4 If Mode Job=Exit Mode then 
     1.4.1 If Custom Ports file is not full then insert custom port in Virtual Display file into Current tide Record file. Insert custom port and offsets into Custom Ports file. Set the Mode Status in the Current Mode State file to Return to Normal Watch. 
     else 
     1.4.2 Insert oldest port from Custom Ports file into Virtual Display file and set Current System State in Current Mode State file to Remove Custom port. 
     Show Future Tide 1.3.4: 
     1. For each Mode Job input: 
     1.1 If Mode Job=Mode Prompt then write the Tide Watch prompt to the Virtual Display file and set Current System State in the Current Mode State file to Tide Watch Prompt. 
     else 
     1.2 If Mode Job=Start Mode then insert &#34;Next&#34; tide time in Virtual Display file. 
     1.3 If Mode Job--Scroll Key then 
     1.3.1 If Current System State is Tide Watch Prompt then 
     1.3.1.1 Set Current System state to Show Future Tide. 
     1.3.2 If Current System State is Show Future Tide then generate Future Tide Request using Current Tide Record and Future Time file. Generate Future Date. 
     else 
     1.3.3 If Current System State is Enter Future time then update edit fields in Virtual Display file. 
     else 
     1.4 If Mode Job=Mode Key then 
     1.4.1 If Current System State=Tide Watch Prompt then set Current System Sate to Enter Future Time and initialize the edit fields in the Virtual Display file. 
     else 
     1.4.2 If Current System State=Enter Future Time then update edit fields in Virtual Display file. 
     else 
     1.5 If Mode Job=Hundredths Sec Tick then 1.5.1 If Current System State is Enter Future Time then update edit fields in Virtual Display file. 
     else 
     1.6 If Mode Job=Exit Mode then set Mode Status record in the Current Mode State file to Return to Normal Watch. 
     Set Time 1.3.5: 
     1. For each Mode Job input: 
     1.1 If Mode Job=Mode Prompt then write the Set Time prompt to the Virtual Display file and set Current System State in the Current Mode State file to Set Time Prompt. 
     else 
     1.2 If Mode Job=Start Mode then initialize the Virtual Display file edit fields using the Current Time file. Set Current System State in Current Mode file to Enter New Time. 
     else 
     1.3 If Mode Job is a user input key or=Hundredths Sec Tick then update the Virtual Display file. 
     1.4 If Mode Job=Exit Mode then inset time setting from Virtual Display file time fields into the Current Time file an set Mode Status in the Current Mode State file to New Time. 
     Set Alarm 1.3.6: 
     1. For each Mode Job input: 
     1.1 If Mode Job=Mode Prompt then write the Set Alarm prompt to the Virtual Display file and set Current System State in the Current Mode State file to Set Alarm Prompt. 
     else 
     1.2 If Mode Job=Start Mode then set Current System State in Current Mode State file to Set Alarm. 
     else 
     1.3 If Mode Job is a user input key or=Hundredths Sec Tick then update the Virtual Display file. If starting an alarm time entry then set Current System State in Current State Mode file to Set Alarm time. Update the Virtual Display file with time from the Alarm Status file. 
     else 
     1.4 If Mode Job=Exit Mode then inset time setting from Virtual Display file edit fields in the Alarm Status file and update the enable fields for all three alarms in the Alarm Status file. Set Mode Status record in the Current Mode State file to Return to Normal Watch. 
     Stop Watch 1.3.7: 
     1. For each Mode Job input: 
     1.1 If Mode Job=Mode Prompt then write the Stop Watch prompt to the Virtual Display file and set Current System State in the Current Mode State file to Stop Watch Prompt. 
     else 
     1.2 If Mode Job=Start Mode then set initialize the Virtual Display and Stop Watch State files and set Current System State in the Current Mode State file to Run Stop Watch. 
     else 
     1.3 If Mode Job is a user input key then update the Virtual Display and Stop watch State file. 
     else 
     1.4 If Mode Job=Hundredths Sec Tick then update the Virtual Display file and the Stop Watch State file. 
     else 
     1.5 If Mode Job=Exit Mode then set the Mode Status record in the Current Mode State file to Return to Normal Watch. 
     Future Time Formater 1.3.8: 
     1. For each activation of the process: 
     1.1 If Current System State of Current Mode State file=Enter Future Time then 
     1.1.1 Convert Month and Day from Future Time file using the information in the Monthly Tens Time file, to Tens Time format and store in Tens Time of Future Time file. 
     else 
     1.2.2 Convert Tens Time from Future Time file to month and date format and store in Month and Day of Future Time file. 
     The following are file definitions with respect to the dataflow chart of FIG. 7. Each file is listed followed by its composition. 
     Alarm Status--Reference 1.0 Tide Watch process. 
     Current Mode State--Reference 1.0 Tide Watch process. 
     Current Tide Record--Reference 1.0 Tide Watch process. 
     Current Time--Reference 1.0 Tide Watch process. 
     Custom Ports--Reference 1.0 Tide Watch process. 
     Future Time--Hour, Minute, Day, Month, Time Type, Day Of Week, Future Tens Time, Future Year. The Future Time file contains the future time and day of the week used for displaying future tidal events. 
     Memory Ports--Ports [5], Substations [5], Age [5], Next Port. There are five records in the Memory Ports file which will allow a total of five Memory Ports to be entered by the user and stored for future recall via the Memory Key. The Age record is used to mark the time of the individual entries relative to the other ports and is used when deleting a Memory Port record when a new record is added and the file is already full. The maximum value for an Age entry is 4. Next Port points to the next memory port to be selected if the user activates the Memory key in Normal Watch mode of operation. 
     Monthly Tens Time--Month Tens Time[12], Leap Year Tens Time [12]. The Monthly Tens Time file is used for conversions from tens time format to month and date format and from month and date format to tens time format. This file is utilized by the Future Time Formater process which is called during display of future tidal events in the Tide Watch mode of operation. The Month Tens Time array contains the tens time of the starting day for the 12 months of the year. The Leap Year Tens Time array contains the tens time of the starting day for the 12 months during a leap year. 
     Stop Watch State--Watch State (On/Off). Watch State is used to indicate if the stop watch is running or stopped. 
     Virtual Display--Reference 1.0 Tide Watch process. 
     The Screen Formater Process 1.4 consists of the implementation defined LCD display driver. This process will use the information in the Virtual Display file and translate it for display on the LCD. 
     Referring to FIG. 8, titled &#34;Update Moon Phase Process&#34; the following are dataflow definitions associated with the process. 
     Cur Date--Reference 1.0 Tide Watch process. 
     Future Date--Reference 1.0 Tide Watch process. 
     The following are process definitions with respect to the dataflow chart of FIG. 8. Each process is listed followed by its description. 
     Calculate Moon Phase 1.5.1: 
     1. For each Cur Date and Future Date input: 
     1.1 Fetch the moon phase record from Phase file that corresponds to the Tens Time filed in Cur Date or Future Date and calculate the current moon phase. 
     1.2 Store moon phase information in Moon Phase record in Virtual Display file. 
     The following is the file definition with respect to the dataflow chart of FIG. 8. 
     Moon Phase--Tens Offset [2], Tens Cycle Time. The Moon Phase file contains the information needed to calculate a moon phase from a given Tens Time. The Tens Offset array contains the amount of tens time for the start of a year before the beginning of a new moon phase cycle (new moon). The Tens Cycle Time contains the tens time of a Synodic period (full moon cycle) 
     FIG. 9 is an entity relationship diagram which illustrates the relationships between the Tidal Event, Location, Port, Substation, Tide Record, Tide Table and Record Offset entities. The Tidal Event consists of Port Id, Sub Id, Tide Time, and Tide Type. The Location block consists of Port Id and Sub Id. The Port block consists of Port Id, while the Substation block consists of Sub Id. The Tide Record block consists of Tide Time and Tide Type. The Tide Table block consists of Tide Time and Tide Type, while the Record Offset block consists of Port Offset and Sub Offset. 
     A flowchart of the device firmware program for one embodiment is shown in FIG. 10. The program is entered at the Start block. The first decision block is labeled &#34;Key Pressed?&#34; The device is checking to see if the user has pressed a key indicating a desired task or mode of operation. If no key has been pressed, the program flows downward to the next decision block, labeled &#34;New Minute?&#34; If a key has been pressed, then the program goes to the function blocks &#34;Decode Key, Perform Key Task, and Update LCD Display&#34; and then returns to the &#34;Key Pressed?&#34; decision block. 
     If the &#34;New Minute?&#34; test is true, then the flow continues downward to the &#34;Time=Next Tide?&#34; decision block. If the &#34;New Minute?&#34; test is false, flow goes to the right to decision block &#34;New Port Setting?&#34; If the &#34;New Port Setting?&#34; test is false, the flow returns to the &#34;Key Pressed?&#34; decision block. If the &#34;New Port Setting?&#34; test is true, then the function &#34;Fetch Tide Record&#34; is performed and flow goes to the &#34;Alarms?&#34; decision block. When the &#34;New Minute?&#34; test is true and flow proceeds to the &#34;Time=Next Tide?&#34; decision block, then if the &#34;Time=Next Tide?&#34; test is false, flow proceeds to the &#34;Alarms?&#34; decision block. If the &#34;Time=Next Tide?&#34; test is true, flow precedes to the &#34;Fetch Tide Record&#34; block and then to the &#34;Alarms?&#34; decision block. 
     If the test for &#34;Alarms?&#34; is false, then flow returns to the &#34;Key Pressed?&#34; decision block. If the test for &#34;Alarms?&#34; is true, then an alarm is sounded, as indicated by the &#34;Sound Alarm&#34; function block, and flow the returns to the &#34;Key Pressed?&#34; decision block. 
     DATA COMPRESSION SCHEME 
     FIG. 14 shows how the compaction of NOAA Tide Tables is done, according to one aspect of the present invention, in block diagram form. This method of compressing the port and tide data came about in determining the hardware requirements for different embodiments of the present invention. A study was undertaken in an effort to determine the minimum amount of memory required to store the Tidal Tables for 36 ports located in the continental United States (see FIG. 11). For each of these 36 ports there are also substations which experience the same tidal events but at a constant time offset from the referenced port. The required accuracy for the device database was determined to be to the nearest ten minutes of the actual time of the event by analysis of U.S. Government Tidal Tables. 
     For the year 1989, there were 48,798 total tides for the 36 ports of interest. They ranged from a low of one per day to a high of five per day. The number of tides per year for the individual ports ranged from a low of 751 to a high of 1411 tides per year. 
     FIG. 11 lists the 36 ports and the maximum, minimum, and average time between tides in units of tens of minutes. Due to the large fluctuation in the time between tides (see the graphs in FIGS. 12 and 13) as experienced by some ports it is impossible to compress the data in a vertical direction where the final form does not require a minimum of one byte of memory per tidal event. Any scheme that tags a tidal event with a time of day stamp will also require a minimum of one byte per tidal event. With a total of 48,798 tides this equates to a minimum of 48,798 bytes to encode the tidal tables for the 36 ports. 
     Examination of the tide tables for ports located in adjacent geographical areas showed that a high degree of similarity exits for ports which border the same body of water. It was while examining these marked similarities that the Group Table concept was developed. The driving force behind the Group Table concept was the idea of a generic tidal table that was a close match for geographically adjacent ports. Using this table, the actual tidal event times for the various ports could be represented as a four bit offset from the generic table. The Group Table (generic table) is in the format of a list of word (two byte) entries where each entry is the time for a tidal event in &#34;tens of minutes&#34; from the start of the year. Since there are 525,600 minutes in a year, this means that the largest entry in the table is restricted to 52,560, which is well within the maximum range of a word (two byte) integer, which can represent a number as high as 65,535. This format also facilitates the handling of time in respect to addition, subtraction, and comparison operations by reducing these operations to simple integer arithmetic. For the year 1989, there was a maximum of 1411 tidal events for any one port. This results in a table of size 2822 bytes (1411 * 2). 
     The Group Table is constructed using Port Tables which are created from the data files supplied by the U.S. government. These Port Tables are constructed in the same format as the Group Table where all the tidal events are listed in chronological order in units of &#34;tens of minutes&#34; from the start of the year. The Port Tables for a geographical adjacent area are stacked in adjacent columns and then summed and averaged across the rows to construct the Group Table. 
     For the Group Table scheme to work, there is a constant byte offset associated with each port that references a Group Table. The purpose of this offset is to shift the respective port table up and down so that it is in alignment with the Group Table resulting in 4 bit offsets. 
     The final form of the database utilizing the Group Table consists of a column holding the Group Table values with a row of four bit offsets for the ports which comprise the group, and an array of constant offsets for each of the ports in the group. To determine the tidal event for a particular port for a given day you simply scan the Group Table column until you find the generic entry for the time in question, then traverse the row associated with that column until you find the four bit offset for the port in question. Add the four bit offset and the port constant offset to the value from the Group Table column and you have the tidal time for that port. 
     However, experimentation with the Group Table concept yielded some interesting results. It was found that most of the ports on the Eastern Seaboard could be consolidated in one Group Table. Specifically 21 ports (the first 21 entries in FIG. 11) were successfully combined and referenced to a generic Group Table with a four bit offset. This resulted in a total memory requirement of 18364 bytes {(1411 * 2)+(1411 * 21 * 0.5)+211  with half a byte wasted per table entry. Four ports on the West Coast were also successfully grouped but this results in no net savings in memory as a four port group utilizing a Group Table with four bit offsets for the ports equates to one byte per tidal event of memory storage. 
     It was subsequently discovered that due to the large fluctuations in tides for the Gulf Coast and remaining West Coast ports that it was impossible to consolidate these ports into Group Tables with four bit port offsets. 
     In an effort to conserve memory, the possibility of eliminating the Group Table and replacing it with a Port Table was investigated. It was discovered that due to the strong similarity in the East Coast group, that virtually any of the East Coast ports could be used as the Group Table and the other 20 ports would still be aligned within a four bit offset. Hampton, Va. was then substituted as the Group Table, due to its geographic location in the center of the East Coast. Since the tidal information for Hampton was now encoded in the Group Table, the four bit offset for Hampton could be eliminated. This resulted in a savings of 706 bytes. Further examination showed that one of the four West Coast groups could be incorporated in the East Coast group using a 4 bit offset, and that six other stations could be included using a 5 bit offset. At this time 28 of the ports were incorporated into a table requiring 24015 bytes of memory with three quarters of a byte wasted for each table entry. 
     The ports included in the group at this time had all shared a common characteristic. They all had 1410 to 1411 tidal events per year while the remaining 8 ports had tide totals ranging from 751 to 1405. To be included in the group the remaining ports would have to be padded with null entries so that they would be in alignment with the Group Table. A program was developed that would take the Port Tables from these ports and align them by padding the Port Table with null records so that the tidal events would be in alignment across the rows with the Group Table entry nearest in value. Checking these adjusted ports against the Group Table showed that 4 of the ports could be included in the table with 6 bit offsets, and the other four ports could be included with 7 bit offsets. All offsets in the group are signed, so it is possible to mark a port offset which corresponds to a null record with -0, thereby indicating that no tide event exists for this port corresponding to this Group Table entry. 
     The database now contained all 36 ports of interest. The table used for storage and retrieval of the tidal data had the following format: 
     
         ______________________________________                                    
Table Entry            16 Bits                                            
21 * (4 Bit Offsets)   84 Bits                                            
 6 * (5 Bit Offsets)   30 Bits                                            
 4 * (6 Bit Offsets)   24 Bits                                            
 4 * (7 Bit Offsets)   28 Bits                                            
______________________________________                                    
 
    
     Each table entry contains a total of 182 bits which requires 23 bytes with 2 bits available for future needs. This results in a total memory requirement of 32453 bytes plus 35 bytes for the constant port offsets leaving 280 bytes free for initialization parameters for the database. 
     This scheme does not leave room in a 32k byte memory for storage of substation offsets. However, these offsets can be stored in program memory due to the relative consistency of the substation offsets from year to year, so that in one configuration, 32K bytes of memory is used to provide a full year of tide prediction capability. In another preferred embodiment, up to three years of tide prediction data is provided with a memory proportionally larger. 
     It will be understood that the above description of the present invention is susceptible to various modifications, changes, and adaptations, and the same are intended to be comprehended within the meaning and range of equivalents of the appended claims.