;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Copyright (c) 2000 - 2002 TIMEX Corporation.
; 
; This document is the property of, and contains information proprietary to
; TIMEX Corporation.  It is to be returned upon request.  Reproduction by any
; means, disclosure, or use of its contents for other than the expressed
; purpose for which it is loaned, without the written consent of TIMEX
; Corporation, is strictly prohibited.
;
; File Name      : ktodmac.h
;
; Macro Names    : 
;
;       ( ALLOCATION )
;
;       KTOD_RELEASE_ALL_RESOURCES      (X) - Releases all TOD resources and makes them available.
;       KTOD_RELEASE_RESOURCE           (X) - Releases all TOD resources with a specified application index.
;       KTOD_RESERVE_RESOURCE               - Reserves a TOD resource for a specified application index and
;                                               clears all data in the reserved resource. 
;       
;
;       ( BIT MANIPULATION )
;
;       KTOD_MAKE_AS_PRIMARY_TZ             - Makes a resource as the primary timezone and all the other
;                                               TOD resources as secondary timezones.
;       KTOD_DEACTIVATE_ALL_RESOURCES   (X) - Deactivates all TOD resources by clearing the active flag.
;                                               This prevents updates to all TOD resource variables.
;       KTOD_DEACTIVATE_ALL_DISPLAY_UPDATES - Disables all display updates from being passed to the application.
;       KTOD_ACTIVATE_RESOURCE              - Allows updates every second to the data in the resource. This
;                                               also copies the value of the 1 hz pseudo real time clock and
;                                               use it for the next update.
;       KTOD_DEACTIVATE_RESOURCE            - Disallows updates every second to the data in the resource.
;       KTOD_ENABLE_DISP_UPD_SEC_EVENT      - Allows the application to receive a second display update event.
;       KTOD_DISABLE_DISP_UPD_SEC_EVENT     - Disallows the application to receive a second display update event.
;       KTOD_ENABLE_DISP_UPD_MIN_EVENT      - Allows the application to receive a display update event every
;                                               minute.
;       KTOD_DISABLE_DISP_UPD_MIN_EVENT     - Disallows the application from receiving a display minute update
;                                               event.
;       KTOD_SET_FOR_EURO_FORMAT        (X) - Uses the European format for weeks, months and dates.
;       KTOD_SET_FOR_US_FORMAT          (X) - Uses the US format for weeks, months and dates.
;       
;       
;       ( DATA MANIPULATION )
;
;       KTOD_CALC_DOW                       - Calculates the day of the week from the structure.
;       KTOD_CALC_WEEK_NUMBER               - Calculates the week number in which the current date falls.
;       KTOD_ADD_DAYS                       - Adds a number of days to the structure.  This updates the month
;                                               and day data only.           
;       KTOD_SUBTRACT_DAYS                  - Subtracts a number of days from the structure.  This updates
;                                               the month and day data only.
;       KTOD_ADD_YEARS                      - Adds a number of years to the structure.
;       KTOD_SUBTRACT_YEARS                 - Subtracts a number of years from the structure.
;       KTOD_CORRECT_MDY_DATA               - Checks the date, month and year data of the structure if it 
;                                               is valid. If it is invalid, then it is set back to a known
;                                               correct value which is its maximum possible data.
;       KTOD_ADJUST_DATE_AND_YEAR           - If year is updated, subtract 1 from the year data.
;                                             If month is updated, subtract 1 from day data if the month
;                                               is FEBRUARY and not a leap year.
;       
;
;       ( DATA TRANSFER )
;
;       KTOD_COPY_RESOURCE_TO_RESOURCE      - Copies the whole tod resource structure to another tod resource
;                                               structure.
;       KTOD_COPY_TIME_MIN_TO_DOW_FROM_RESOURCE - Copies day of week, year, month, date, hour and minute
;                                                   data of a specified resource into a buffer.
;       KTOD_COPY_TIME_FROM_RESOURCE        - Copies week number, day of week, year, month, date, hour
;                                               minute and second data of a specified resource into a buffer.
;       KTOD_COPY_MDY_FROM_RESOURCE         - Copies year, month and date data of a specified resource
;                                               into a buffer.
;       KTOD_COPY_HMS_FROM_RESOURCE         - Copies hour, minute and second data of a specified resource
;                                               into a buffer.
;       KTOD_WRITE_TIME_TO_RESOURCE         - Copies year, month, date, hour, minute and second data from a
;                                               buffer into a specified resource. 
;       KTOD_WRITE_MDY_TO_RESOURCE          - Copies year, month and date data from a buffer into a specified
;                                               resource. 
;       KTOD_WRITE_HMS_TO_RESOURCE          - Copies hour, minute and second data from a buffer into a
;                                               specified resource.
;
;
;       ( UTILITIES )
;
;       KTOD_GET_APPS_FIRST_ACTIVE_RESOURCE (X) - Returns the first active TOD resource index assigned to a
;                                                   specified application.
;       KTOD_LOAD_RESOURCE_START_ADDRESS    - Loads the start address of a specified resource into HLReg.
;       KTOD_GET_UPDATE_FLAGS               - Gets the update flags of a specified tod resource.
;       KTOD_GET_TOD_FORMAT             (X) - Gets the current tod format bits and stores it in AReg.
;       KTOD_CHECK_IF_LEAP_YEAR             - Checks if a year in BCD is a leap year.
;       KTOD_GET_MAX_DAYS_OF_A_MONTH        - Returns the maximum number of days in a month.
;       KTOD_DIVIDE_BY_2                    - Divides a 2-byte BCD structure by two.
;       KTOD_CONVERT_BCD_TO_HEX             - Converts a 2-byte BCD structure into a two-byte HEX structure.
;       KTOD_CHECK_IF_DIVISIBLE_BY_4        - Checks a BCD number if it is divisible by 4.
;       KTOD_UPDATE_POP_CLOCK               - Updates the pop clock for 1 minute increment.
;       KTOD_UPDATE_ALL_ACTIVE_RESOURCES    - Updates all active tod resource structure every second.
;       KTOD_GET_PTZ_ADDRESS                - Gets the primary time zone address for the given input offset.
;       KTOD_GET_TZ_ADDRESS                 - Gets the time zone address for the given input offset and
;                                               resource index.
;       
;       
;
;
;
;       
;       
; Purpose        : Kernel TOD Resource Macro File
;
; Note           : The 'X' mark on the routines indicates that these are directive 
;                    dependent routines.  Refer to ktod.h for the directive name 
;                    and description.
;
; Change History : 05/15/2000 ACN - Created file
;
;   M851 Development
;
;                  11/01/2001 FSU - Modified the file for M851 Development.
;
;                                           A. Deleted the following:
;                                               - KTOD_ENABLE_DISP_UPD_EVENT    
;                                               - KTOD_DISABLE_DISP_UPD_EVENT
;                                               - KTOD_SET_FOR_24H_FORMAT           
;                                               - KTOD_SET_FOR_12H_FORMAT           
;                                               - KTOD_SET_FOR_WEEK_NUMBER_DISPLAY
;                                               - KTOD_SET_FOR_DAY_OF_WEEK_DISPLAY
;                                               - KTOD_SET_FOR_YMD_FORMAT           
;                                               - KTOD_SET_FOR_MDY_FORMAT           
;                                           
;                                           B. Added the following:
;                                               - KTOD_ENABLE_DISP_UPD_SEC_EVENT
;                                               - KTOD_DISABLE_DISP_UPD_SEC_EVENT
;                                               - KTOD_ENABLE_DISP_UPD_MIN_EVENT
;                                               - KTOD_DISABLE_DISP_UPD_MIN_EVENT
;
;                                           C. Modify the following:
;                                               - KTOD_GET_TOD_FORMAT
;
;                  07/03/2002 NLS - ECR# 851-20020703-400
;                                   Unable to update week number during week rollover
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_RELEASE_ALL_RESOURCES
;
; Description : Releases all TOD resources and makes them available.
;
; Assumptions : None
;                         
; Usage       : KTOD_RELEASE_ALL_RESOURCES
;               
; Input(s)    : None    
;
; Output(s)   : None
;
;               ( Destroyed: IYReg, BReg )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_RELEASE_ALL_RESOURCES  MACRO

        IF  KTOD_ENABLE_UNUSED_ROUTINE == 1

                car     ktodReleaseAllResources
                                
        CALLS   SUBROUTINE, 'ktodReleaseAllResources'

        ENDIF
       
        ENDM
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_RELEASE_RESOURCE
;
; Description : Releases all TOD resources with a specified application index.
;
; Assumptions : None
;                         
; Usage       : KTOD_RELEASE_RESOURCE
;               
; Input(s)    : AReg - Application Index
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_RELEASE_RESOURCE       MACRO

        IF  KTOD_ENABLE_UNUSED_ROUTINE == 1

                car     ktodReleaseResource
                                
        CALLS   SUBROUTINE, 'ktodReleaseResource'

        ENDIF
               
        ENDM
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_RESERVE_RESOURCE
;
; Description : Reserves a TOD resource for a specified application index and
;                 clears all data in the reserved resource. 
;
;               This returns the reserved resource index if there was one, and 
;                 returns KTODERROR code if there was none.
;
; Assumptions : None
;                         
; Usage       : KTOD_RESERVE_RESOURCE
;               
; Input(s)    : AReg - Application Index
;
; Output(s)   : BReg - Resource Index - if a resource was reserved.
;                      KTODERROR - if no resource was reserved.
;
;               ( Destroyed: None )
;               
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_RESERVE_RESOURCE       MACRO

                car     ktodReserveResource
                                
        CALLS   SUBROUTINE, 'ktodReserveResource'
       
        ENDM
                                

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_MAKE_AS_PRIMARY_TZ
;
; Description : Makes a resource as the primary timezone and all the other
;                 TOD resources as secondary timezones.
;
; Assumptions : None
;                         
; Usage       : KTOD_MAKE_AS_PRIMARY_TZ
;               
; Input(s)    : AReg - Resource Index
;
; Output(s)   : None
;               
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_MAKE_AS_PRIMARY_TZ     MACRO

                car     ktodMakeAsPrimaryTZ
                                
        CALLS   SUBROUTINE, 'ktodMakeAsPrimaryTZ'
       
        ENDM
                                
                                

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_DEACTIVATE_ALL_RESOURCES
;
; Description : Deactivates all TOD resources by clearing the active flag.
;                 This prevents updates to all TOD resource variables.
;
; Assumptions:  None.
;                         
; Usage       : KTOD_DEACTIVATE_ALL_RESOURCES
;               
; Input(s)    : None
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_DEACTIVATE_ALL_RESOURCES       MACRO

        IF  KTOD_ENABLE_UNUSED_ROUTINE == 1

                car     ktodDeactivateAllResources
                                
        CALLS   SUBROUTINE, 'ktodDeactivateAllResources'

        ENDIF
               
        ENDM
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_DEACTIVATE_ALL_DISPLAY_UPDATES
;
; Description : Disables all display updates from being passed to the application.
;                 Called during state change.
;
; Assumptions:  None.
;                         
; Usage       : KTOD_DEACTIVATE_ALL_DISPLAY_UPDATES
;               
; Input(s)    : None
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_DEACTIVATE_ALL_DISPLAY_UPDATES MACRO

                car     ktodDeactivateAllDisplayUpdates
                                
        CALLS   SUBROUTINE, 'ktodDeactivateAllDisplayUpdates'
       
        ENDM
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_ACTIVATE_RESOURCE
;
; Description : Allows updates every second to the data in the resource. This
;                 also copies the value of the 1 hz pseudo real time clock and
;                 use it for the next update.
;
; Assumptions : None
;                         
; Usage       : KTOD_ACTIVATE_RESOURCE
;               
; Input(s)    : AReg - Resource Index
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_ACTIVATE_RESOURCE      MACRO

                car     ktodActivateResource
                                
        CALLS   SUBROUTINE, 'ktodActivateResource'
       
        ENDM
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_DEACTIVATE_RESOURCE
;
; Description : Disallows updates every second to the data in the resource.
;
; Assumptions : None
;                         
; Usage       : KTOD_DEACTIVATE_RESOURCE
;               
; Input(s)    : AReg - Resource Index
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_DEACTIVATE_RESOURCE    MACRO

                car     ktodDeactivateResource
                                
        CALLS   SUBROUTINE, 'ktodDeactivateResource'
       
        ENDM
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_ENABLE_DISP_UPD_SEC_EVENT
;
; Description : Allows the application to receive a second display update event
;
; Assumptions : None
;                         
; Usage       : KTOD_ENABLE_DISP_UPD_SEC_EVENT
;               
; Input(s)    : AReg - Resource Index
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               11/01/2001 FSU  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_ENABLE_DISP_UPD_SEC_EVENT  MACRO

                car     ktodEnableDispUpdSecEvent
                                
        CALLS   SUBROUTINE, 'ktodEnableDispUpdSecEvent'
       
        ENDM


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_DISABLE_DISP_UPD_SEC_EVENT
;
; Description : Disallows the application to receive a second display update event
;
; Assumptions : None
;                         
; Usage       : KTOD_DISABLE_DISP_UPD_SEC_EVENT
;               
; Input(s)    : AReg - Resource Index
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               11/01/2001 FSU  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_DISABLE_DISP_UPD_SEC_EVENT MACRO

                car     ktodDisableDispUpdSecEvent
                                
        CALLS   SUBROUTINE, 'ktodDisableDispUpdSecEvent'
       
        ENDM
                     
       
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_ENABLE_DISP_UPD_MIN_EVENT
;
; Description : Allows the application to receive a display update event every
;                 minute.
;
; Assumptions : None
;                         
; Usage       : KTOD_ENABLE_DISP_UPD_MIN_EVENT
;               
; Input(s)    : AReg - Resource Index
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               11/01/2001 FSU  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_ENABLE_DISP_UPD_MIN_EVENT  MACRO

                car     ktodEnableDispUpdMinEvent
                                
        CALLS   SUBROUTINE, 'ktodEnableDispUpdMinEvent'
       
        ENDM


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_DISABLE_DISP_UPD_MIN_EVENT
;
; Description : Disallows the application from receiving a display minute update 
;                 event.
;
; Assumptions : None
;                         
; Usage       : KTOD_DISABLE_DISP_UPD_MIN_EVENT
;               
; Input(s)    : AReg - Resource Index
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               11/01/2001 FSU  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_DISABLE_DISP_UPD_MIN_EVENT MACRO

                car     ktodDisableDispUpdMinEvent
                                
        CALLS   SUBROUTINE, 'ktodDisableDispUpdMinEvent'
       
        ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_SET_FOR_EURO_FORMAT
;
; Description : Uses the European format for weeks, months and dates
;
; Assumptions : None
;                         
; Usage       : KTOD_SET_FOR_EURO_FORMAT
;               
; Input(s)    : AReg - Resource Index
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;               07/03/2002 NLS  - ECR# 851-20020703-400
;                                 Unable to update week number during week rollover
;                                 - Remove conditional assembly directive KTOD_ENABLE_UNUSED_ROUTINE
;                                   in this macro.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_SET_FOR_EURO_FORMAT    MACRO

                car     ktodSetForEuroFormat
                                
        CALLS   SUBROUTINE, 'ktodSetForEuroFormat'

        ENDM
                                
                    
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_SET_FOR_US_FORMAT
;
; Description : Uses the US format for weeks, months and dates
;
; Assumptions : None
;                         
; Usage       : KTOD_SET_FOR_US_FORMAT
;               
; Input(s)    : AReg - Resource Index
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;               07/03/2002 NLS  - ECR# 851-20020703-400
;                                 Unable to update week number during week rollover
;                                 - Remove conditional assembly directive KTOD_ENABLE_UNUSED_ROUTINE
;                                   in this macro.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_SET_FOR_US_FORMAT      MACRO

                car     ktodSetForUSFormat
                                
        CALLS   SUBROUTINE, 'ktodSetForUSFormat'

        ENDM            
        
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_CALC_DOW
;
; Description : Calculates the day of the week from the structure.
;
; Assumptions : Structure format: Day, Month, YearLo, YearHi
;               Maximum YearHi:YearLo Input = 6999H
;                         
; Usage       : KTOD_CALC_DOW
;               
; Input(s)    : IYReg - Address of Day
;
; Output(s)   : AReg - day of the week (0 = Sunday)
;               
;               ( Destroyed: BReg )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_CALC_DOW               MACRO

                car     ktodCalcDow
                                
        CALLS   SUBROUTINE, 'ktodCalcDow'
       
        ENDM                
                                

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_CALC_WEEK_NUMBER
;
; Description : Calculates the week number in which the current date falls.
;
; Assumptions : Structure format: Date, Month, YearLo, YearHi
;                         
; Usage       : KTOD_CALC_WEEK_NUMBER
;               
; Input(s)    : IYReg - Address of Date
;               ZeroFlag - 1 (US Format, SUNDAY - first day of the week)
;                          0 (European Format , MONDAY - first day of the week)
;
; Output(s)   : AReg - Week number (BCD).
;               
;               ( Destroys: BReg )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_CALC_WEEK_NUMBER       MACRO

                car     ktodCalcWeekNumber
                                
        CALLS   SUBROUTINE, 'ktodCalcWeekNumber'
       
        ENDM
                                
                               
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_ADD_DAYS
;
; Description : Adds a number of days to the structure.  This updates the month
;                 and day data only.
;
; Assumptions : Structure format: Date, Month
;
; Usage       : KTOD_ADD_DAYS
;
; Input(s)    : AReg - The number of days to add (BCD)
;               IYReg - Address of Day
;
; Output(s)   : BReg.bKTODMonthUpd - 0 if month data didn't change.
;                                    1 if month data did change.
;
;               BReg.bKTODYearUpd  - 0 if year data didn't change.
;                                    1 if year data did change.
;               
;               ( Destroys: AReg )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_ADD_DAYS               MACRO

                car     ktodAddDays
                                
        CALLS   SUBROUTINE, 'ktodAddDays'
       
        ENDM
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_SUBTRACT_DAYS
;
; Description : Subtracts a number of days from the structure.  This updates
;                 the month and day data only.
;
; Assumptions : Structure format: Date, Month
;
; Usage       : KTOD_SUBTRACT_DAYS
;
; Input(s)    : AReg - the number of days to subtract (BCD)
;               IYReg - Address of Date
;
; Output(s)   : BReg.bKTODMonthUpd - 0 if month data didn't change.
;                                    1 if month data did change.
;
;               BReg.bKTODYearUpd  - 0 if year data didn't change.
;                                    1 if year data did change.
;               
;               ( Destroys: AReg )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_SUBTRACT_DAYS          MACRO

                car     ktodSubtractDays
                                
        CALLS   SUBROUTINE, 'ktodSubtractDays'
       
        ENDM            
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_ADD_YEARS
;
; Description : Adds a number of years to the structure.
;
; Assumptions : Structure format: YearLo, YearHi
;
; Usage       : KTOD_ADD_YEARS
;
; Input(s)    : AReg - the number of years to add (BCD)
;               IYReg - Address of YearLo
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_ADD_YEARS              MACRO

                car     ktodAddYears
                                
        CALLS   SUBROUTINE, 'ktodAddYears'
       
        ENDM
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_SUBTRACT_YEARS
;
; Description : Subtracts a number of years from the structure.
;
; Assumptions : Structure format: YearLo, YearHi
;
; Usage       : KTOD_SUBTRACT_YEARS
;
; Input(s)    : AReg - the number of years to subtract (BCD)
;               IYReg - Address of YearLo
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_SUBTRACT_YEARS     MACRO

                car     ktodSubtractYears
                                
        CALLS   SUBROUTINE, 'ktodSubtractYears'
       
        ENDM                
                                
                                               
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_CORRECT_MDY_DATA
;
; Description : Checks the date, month and year data of the structure if it 
;                 is valid. If it is invalid, then it is set back to a known 
;                 correct value which is its maximum possible data.
;
;               Adjust the year data to '6999' if its not within the boundary
;                 conditions: 0001 - 6999
;
;               Adjust the month data to 'DECEMBER' if its not within the boundary
;                 conditions: JANUARY - DECEMBER
;
;               Adjust the day data based on the month and year information. 
;                 Leap year is also considered.
;
; Assumptions : Structure format: Date, Month, YearLo, YearHi
;
; Usage       : KTOD_CORRECT_MDY_DATA
;
; Input(s)    : IYReg - Address of Day
;
; Output(s)   : None
;
;               ( Destroys: BAReg, LReg )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_CORRECT_MDY_DATA       MACRO

                car     ktodCorrectMDYData
                                
        CALLS   SUBROUTINE, 'ktodCorrectMDYData'
       
        ENDM                
           


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_ADJUST_DATE_AND_YEAR
;
; Description : If year is updated, subtract 1 from the year data.
;               If month is updated, subtract 1 from day data if the month
;                 is FEBRUARY and not a leap year.
;               This can only be called if there is a date subtraction.
;
; Assumptions : Structure format: Date, Month, YearLo, YearHi
;
; Usage       : KTOD_ADJUST_DATE_AND_YEAR
;
; Input(s)    : IYReg - Address of Day
;               BReg - contains the year and month update flags
;
; Output(s)   : None
;
;               ( Destroyed: HLReg, BAReg )
;
; Module Change History : 
;
;               02/19/2002 FSU - Created module
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KTOD_ADJUST_DATE_AND_YEAR   MACRO

                car     ktodAdjustDateAndYear
                                
        CALLS   SUBROUTINE, 'ktodAdjustDateAndYear'
       
        ENDM                

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_COPY_RESOURCE_TO_RESOURCE
;
; Description : Copies the whole tod resource structure to another tod resource
;                 structure.
;               ( Except: App index, resource flag, update flag )
;
; Assumptions : Destination resource should not be the primary resource.
;
; Usage       : KTOD_COPY_RESOURCE_TO_RESOURCE
;
; Input(s)    : AReg - Resource Index of source
;               BReg - Resource Index of destination
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_COPY_RESOURCE_TO_RESOURCE  MACRO

                car     ktodCopyResourceToResource
                                
        CALLS   SUBROUTINE, 'ktodCopyResourceToResource'
       
        ENDM            

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_COPY_TIME_MIN_TO_DOW_FROM_RESOURCE
;
; Description : Copies day of week, year, month, date, hour and minute 
;                 data of a specified resource into a buffer.
;
; Assumptions : Structure format: Minute, Hour, Date, Month, YearLo
;                 YearHi, Day of Week
;
; Usage       : KTOD_COPY_TIME_MIN_TO_DOW_FROM_RESOURCE
;
; Input(s)    : AReg - Resource Index of source.
;               IYReg - Start address of the destination structure.
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               01/18/2002 FSU - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_COPY_TIME_MIN_TO_DOW_FROM_RESOURCE MACRO

                car     ktodCopyTimeMinToDOWFromResource
                                
        CALLS   SUBROUTINE, 'ktodCopyTimeMinToDOWFromResource'
       
        ENDM
           
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_COPY_TIME_FROM_RESOURCE
;
; Description : Copies week number, day of week, year, month, date, hour
;                 minute and second data of a specified resource into a buffer.
;
; Assumptions : Structure format: Second, Minute, Hour, Date, Month, YearLo
;                 YearHi, Day of Week, Week Number
;
; Usage       : KTOD_COPY_TIME_FROM_RESOURCE
;
; Input(s)    : AReg - Resource Index
;               IYReg - Start address of the destination structure
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_COPY_TIME_FROM_RESOURCE    MACRO

                car     ktodCopyTimeFromResource
                                
        CALLS   SUBROUTINE, 'ktodCopyTimeFromResource'
       
        ENDM
             
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_COPY_MDY_FROM_RESOURCE
;
; Description : Copies year, month and date data of a specified resource
;                 into a buffer.
;
; Assumptions : Structure format: Date, Month, YearLo, YearHi
;
; Usage       : KTOD_COPY_MDY_FROM_RESOURCE
;
; Input(s)    : AReg - Resource Index
;               IYReg - Start address of the destination structure
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_COPY_MDY_FROM_RESOURCE MACRO

                car     ktodCopyMDYFromResource
                                
        CALLS   SUBROUTINE, 'ktodCopyMDYFromResource'
       
        ENDM            
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_COPY_HMS_FROM_RESOURCE
;
; Description : Copies hour, minute and second data of a specified resource
;                 into a buffer.
;
; Assumptions : Structure format: Second, Minute, Hour
;
; Usage       : KTOD_COPY_HMS_FROM_RESOURCE
;
; Input(s)    : AReg - Resource Index
;               IYReg - Start address of the destination structure
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_COPY_HMS_FROM_RESOURCE MACRO

                car     ktodCopyHMSFromResource
                                
        CALLS   SUBROUTINE, 'ktodCopyHMSFromResource'
       
        ENDM            
                                

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_WRITE_TIME_TO_RESOURCE
;
; Description : Copies year, month, date, hour, minute and second data from a
;                 buffer into a specified resource. 
;               Copies the data from the KTODPreviousRTCSample and use it as 
;                 the previous sample. 
;               Corrects the validity of date data stored, calculates the day 
;                 of the week and week number based on the Euro Format bit.
;                 If the Euro Format bit is going to be changed, then changed
;                 it first before writing the data to the resource.
;
; Assumptions : Structure format: Second, Minute, Hour, Date, Month, YearLo, YearHi.
;               KTODPreviousRTCSample value must be have been properly set.
;
; Usage       : KTOD_WRITE_TIME_TO_RESOURCE
;
; Input(s)    : AReg - Resource Index
;               IYReg - Start address of the source structure
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_WRITE_TIME_TO_RESOURCE MACRO

                car     ktodWriteTimeToResource
                                
        CALLS   SUBROUTINE, 'ktodWriteTimeToResource'
       
        ENDM            
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_WRITE_MDY_TO_RESOURCE
;
; Description : Copies year, month and date data from a buffer into a specified
;                 resource. 
;
;               This also corrects the validity of date data stored, calculates 
;                 the day of the week and week number based on the Euro Format bit. 
;                 If the Euro Format bit is going to be changed, then changed it 
;                 first before writing the data to the resource.
;
; Assumptions : Structure format: Date, Month, YearLo, YearHi
;
; Usage       : KTOD_WRITE_MDY_TO_RESOURCE
;
; Input(s)    : AReg - Resource Index
;               IYReg - Start address of the source structure
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_WRITE_MDY_TO_RESOURCE  MACRO

                car     ktodWriteMDYToResource
                                
        CALLS   SUBROUTINE, 'ktodWriteMDYToResource'
       
        ENDM            
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_WRITE_HMS_TO_RESOURCE
;
; Description : Copies hour, minute and second data from a buffer into a
;                 specified resource
;
; Assumptions : Structure format: Second, Minute, Hour
;
; Usage       : KTOD_WRITE_HMS_TO_RESOURCE
;
; Input(s)    : AReg - Resource Index
;               IYReg - Start address of the source structure
;
; Output(s)   : None
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_WRITE_HMS_TO_RESOURCE  MACRO

                car ktodWriteHMSToResource
                                
                CALLS   SUBROUTINE , 'ktodWriteHMSToResource'
       
                ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_GET_APPS_FIRST_ACTIVE_RESOURCE
;
; Description : Returns the first active TOD resource index assigned to a
;                 specified application.
;
; Assumptions : None
;
;; Usage          : KTOD_GET_APPS_FIRST_ACTIVE_RESOURCE
;
; Input(s)    : AReg - Application Index
;
; Output(s)   : BReg - Resource Index - if the active application exist
;                      KTODERROR - if there was none
;
;               ( Destroyed: BReg )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_GET_APPS_FIRST_ACTIVE_RESOURCE     MACRO

        IF  KTOD_ENABLE_UNUSED_ROUTINE == 1

                car     ktodGetAppsFirstActiveResource
                                
        CALLS   SUBROUTINE, 'ktodGetAppsFirstActiveResource'

        ENDIF
       
        ENDM            
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_LOAD_RESOURCE_START_ADDRESS
;
; Description : Loads the start address of a specified resource into HLReg
;
; Assumptions : None
;
; Usage       : KTOD_LOAD_RESOURCE_START_ADDRESS
;
; Input(s)    : AReg - Resource Index
;
; Output(s)   : HLReg - Start address of the resource specified in AReg.
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_LOAD_RESOURCE_START_ADDRESS        MACRO

                car     ktodLoadResourceStartAddress
                                
        CALLS   SUBROUTINE, 'ktodLoadResourceStartAddress'
       
        ENDM                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_GET_UPDATE_FLAGS
;
; Description : Gets the update flags of a specified tod resource.
;
; Assumptions : None
;
; Usage       : KTOD_GET_UPDATE_FLAGS
;
; Input(s)    : AReg - Resource Index
;
; Output(s)   : AReg - TOD Update Flags: ( bit 0 and 7 = don't cares)
;                        bit 1 - bKTODMinuteUpd
;                        bit 2 - bKTODHourUpd
;                        bit 3 - bKTODDateUpd
;                        bit 4 - bKTODMonthUpd
;                        bit 5 - bKTODYearUpd
;                        bit 6 - bKTODWeekUpd
;
;               ( Destroyed: None )
;               
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_GET_UPDATE_FLAGS       MACRO

                car     ktodGetUpdateFlags
                                
        CALLS   SUBROUTINE, 'ktodGetUpdateFlags'
       
        ENDM            
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_GET_TOD_FORMAT
;
; Description : Gets the current tod format bits and stores it in AReg. 
;
; Assumptions : None
;
; Usage       : KTOD_GET_TOD_FORMAT
;
; Input(s)    : AReg - Resource Index
;
; Output(s)   : AReg - TOD Format bits: (other bits are don't cares)
;                        bit 4 - bKTODPrimaryTZ
;                        bit 5 - bKTODEuroFormat
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;
;   M851 Development
;
;               11/02/2001 FSU - Modified for M851 development.
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_GET_TOD_FORMAT         MACRO

        IF  KTOD_ENABLE_UNUSED_ROUTINE == 1

                car     ktodGetTodFormat
                                
        CALLS   SUBROUTINE, 'ktodGetTodFormat'

        ENDIF

        ENDM
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_CHECK_IF_LEAP_YEAR
;
; Description : Checks if a year in BCD is a leap year
;
; Assumptions : None
;                         
; Usage       : KTOD_CHECK_IF_LEAP_YEAR
;               
; Input(s)    : BAReg - YearHi:YearLo in BCD.
;
; Output(s)   : bZeroFlag - TRUE  (leap year)
;                         - FALSE (not a leap year)
;
;               ( Destroyed: BAReg )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_CHECK_IF_LEAP_YEAR     MACRO

                car     ktodCheckIfLeapYear
                                
        CALLS   SUBROUTINE, 'ktodCheckIfLeapYear'
       
        ENDM            
                                
                               
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_GET_MAX_DAYS_OF_A_MONTH
;
; Description : Returns the maximum number of days in a month.
;
; Assumptions : None
;                         
; Usage       : KTOD_GET_MAX_DAYS_OF_A_MONTH
;               
; Input(s)    : LReg - Month
;
; Output(s)   : BReg - Maximum number of days in a month.
;
;               ( Destroys: LReg )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_GET_MAX_DAYS_OF_A_MONTH    MACRO

                car     ktodGetMaxDaysOfAMonth
                                
        CALLS   SUBROUTINE, 'ktodGetMaxDaysOfAMonth'
       
        ENDM            
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_DIVIDE_BY_2
;
; Description : Divides a 2-byte BCD structure by two.
;
; Assumptions : None
;                         
; Usage       : KTOD_DIVIDE_BY_2
;               
; Input(s)    : BAReg - BCD Structure (Hi:Lo)
;
; Output(s)   : BAReg - quotient
;
;               ( Destroyed: None )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_DIVIDE_BY_2            MACRO

                car     ktodDivideBy2
                                
        CALLS   SUBROUTINE, 'ktodDivideBy2'
       
        ENDM                
                                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_CONVERT_BCD_TO_HEX
;
; Description : Converts a 2-byte BCD structure into a two-byte HEX structure.
;
; Assumptions : None
;                         
; Usage       : KTOD_CONVERT_BCD_TO_HEX
;               
; Input(s)    : BAReg - BCD Structure (Hi:Lo)
;
; Output(s)   : BAReg - HEX Structure (Hi:Lo)
;
;               ( Destroyed: IYReg, HLReg )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_CONVERT_BCD_TO_HEX     MACRO

                car     ktodConvertBCDtoHEX
                                
        CALLS   SUBROUTINE, 'ktodConvertBCDtoHEX'
       
        ENDM                
                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_CHECK_IF_DIVISIBLE_BY_4
;
; Description : Checks a BCD number if it is divisible by 4.
;               This is only used to check if year is a leap year.
;
; Assumptions : bDecimalFlag - is cleared for binary math.
;                         
; Usage       : KTOD_CHECK_IF_DIVISIBLE_BY_4
;               
; Input(s)    : AReg - BCD number.
;
; Output(s)   : bZeroFlag - 1 (divisible by 4)
;                           0 (not divisible by 4)
;
;               ( Destroyed: AReg )
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_CHECK_IF_DIVISIBLE_BY_4    MACRO

                car     ktodCheckIfDivisibleBy4
                                
        CALLS   SUBROUTINE, 'ktodCheckIfDivisibleBy4'
       
        ENDM            
                  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_UPDATE_POP_CLOCK
;
; Description : Updates the pop clock for 1 minute increment.
;
; Assumptions : None
;
; Usage       : KTOD_UPDATE_POP_CLOCK
;
; Input(s)    : None
;
; Output(s)   : None
;
;               ( Destroyed: IXReg, HLReg, BAReg )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_UPDATE_POP_CLOCK       MACRO

                car     ktodUpdatePopClock
                                
        CALLS   SUBROUTINE, 'ktodUpdatePopClock'
       
        ENDM                

                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_UPDATE_ALL_ACTIVE_RESOURCES
;
; Description : Updates all active tod resource structure every second
;
; Assumptions : None
;
; Usage       : KTOD_UPDATE_ALL_ACTIVE_RESOURCES
;
; Input(s)    : HW1HzRTC - pseudo real time clock
;
; Output(s)   : None
;
;               ( Destroys: IXReg, HLReg, BAReg )
;
; Macro Change History : 
;
;               03/07/2000 ACN - Created module
;
;   M851 Development
;
;               11/02/2001 FSU - Modified for M851 development.
;                                Added every minute update.  Requested by 
;                                stopwatch.
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_UPDATE_ALL_ACTIVE_RESOURCES    MACRO

                car     ktodUpdateAllActiveResources
                                
        CALLS   SUBROUTINE, 'ktodUpdateAllActiveResources'
       
        ENDM            


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_GET_PTZ_ADDRESS
;
; Description : Gets the primary time zone address for the given input offset.
;
; Assumptions : None
;
; Usage       : KTOD_GET_PTZ_ADDRESS
;
; Input(s)    : BReg - Offset of the TOD resource. 
;
; Output(s)   : IYReg - Address in the Primary TOD resource data structure 
;                         for the given input Offset
;
;               ( Destroyed: None )
;
; Macro Change History :
;
;               01/04/2002 FSU - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_GET_PTZ_ADDRESS        MACRO

                car     ktodGetPTZAddress
                                
        CALLS   SUBROUTINE, 'ktodGetPTZAddress'
       
        ENDM                


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KTOD_GET_TZ_ADDRESS
;
; Description : Gets the time zone address for the given input offset and 
;                 resource index.
;
; Assumptions : None
;
; Usage       : KTOD_GET_TZ_ADDRESS
;
; Input(s)    : AReg - Resource index.
;               BReg - Offset of the TOD resource. 
;
; Output(s)   : IYReg - Address in the TOD resource data structure for the 
;                         given input offset
;
;               ( Destroyed: None )
;
; Macro Change History :
;
;               02/20/2002 FSU - Created module
;                         
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KTOD_GET_TZ_ADDRESS     MACRO

                car     ktodGetTZAddress
                                
        CALLS   SUBROUTINE, 'ktodGetTZAddress'
       
        ENDM                

