;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; 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  :  kresmac.h
;
; Macro Names:  KRES_INIT_AVAILABLE_RESOURCES 
;                               - Initializes the available resources variable
;               KRES_HUNDSECMINHR_UPD        
;                               - Updates the data stucture HH:MM:SS.hh by 
;                                   adding the buffer HH:MM:SS.hh to the data 
;                                   strctute. 
;               KRES_SECMINHR_UPD
;                               - Updates the HH:MM:SS structure by adding the 
;                                   buffer HH:MM:SS to the data structure. 
;               KRES_MINHR_UPD  - Updates the HH:MM structure by adding the 
;                                   buffer HH:MM to the data structure. 
;               KRES_HUNDSECMINHR_SUB
;                               - Subtracts the HH:MM:SS.hh buffer from  
;                                   HH:MM:SS.hh data strcture and store the 
;                                   result at data structure.
;               KRES_SECMINHR_SUB
;                               - Subtracts the buffer HH:MM:SS from HH:MM:SS 
;                                   structure and store the result at  data 
;                                   structure.
;               KRES_MINHR_SUB  - Subtracts the buffer HH:MM from  HH:MM 
;                                   structure and store the result at data 
;                                   structure.
;               KRES_CLEARDATABUFFERS
;                               - Clears the KRESHundBuffer,KRESSecBuffer,
;                                   KRESMinBuffer,KRESHrBuffer and 
;                                   KRESHrRollOverValue.
;               KRES_COMPAREHMS - Compare HMS to another HMS
;               KRES_GETMASKFROMINDEX
;                               - Get the mask bit for a certain index
;               KRES_GET_ACC_HUND_AND_SECOND
;                               - Calculates the Difference between the previous 
;                                   value of hundredths and seconds with the 
;                                   stop watch data and stores this difference 
;                                   in the hundredths and seconds buffer.
;               KRES_UPD_HUND_SEC_MIN_HOURS_CNTUP
;                               - Updates from hundredths to hours on count up.
;               KRES_UPD_SEC_MIN_HOURS_CNTUP
;                               - Updates from seconds to hours on count up.
;               KRES_UPD_HUND_SEC_MIN_HOURS_CNTDW
;                               - Updates from hundredths to hours on count dw.
;               KRES_UPD_SEC_MIN_HOURS_CNTDW
;                               - Updates from seconds to hours on count down.
;
;               KRES_CLEAR_N_BYTES
;                               - Clears N number of bytes.
;
; Purpose        : Kernel Resource Macro File
;
; Change History : 05/15/2000 ACN - Created file
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KRES_INIT_AVAILABLE_RESOURCES
;
; Description : Initializes the available resources variable
;
; Assumptions : None
;                         
; Usage       : KRES_INIT_AVAILABLE_RESOURCES
;               
; Input(s)    : None    
;
; Output(s)   : Destroys: HLReg
;
; Macro Change History : 05/15/2000 ACN - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KRES_INIT_AVAILABLE_RESOURCES   MACRO

    ld  HL, #KTODAvailableResources
    ld  [HL],   #KTODNUMOFRESOURCE-1        ; init tod available resources
    inc HL                  ; The TOD available resources is decremented by1
                            ; because the last resource is always reserved
                            ; for the PopClock mechanism

    ld  [HL],   #KBCKNUMOFRESOURCE      ; init backup available resources
    inc HL
    ld  [HL],   #KTZCNUMOFRESOURCE      ; init time zone check available resources
    inc HL
    ld  [HL],   #KTMRNUMOFRESOURCE      ; init timer available reosurces
    inc HL
    ld  [HL],   #KSTPNUMOFRESOURCE      ; init stopwatch available resources
        inc HL
    ld  [HL],   #KSYNNUMOFRESOURCE      ; init synchro timer available resources
                                                 
                ENDM





;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name :  KRES_HUNDSECMINHR_UPD 
;
; Description:   updates the data stucture HH:MM:SS.hh by adding the buffer
;               HH:MM:SS.hh to the data strctute. 
;
; Assumptions: None  
;
; Input(s)   : HLReg points to Hundredths 
;
; Output(s):   AReg = update flags
;
; Macro Change History:
;
;                    05/17/2000 RMA - Created Macro 
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KRES_HUNDSECMINHR_UPD    MACRO

            car  kresHundSecMinHrUpd

            CALLS   SUBROUTINE , 'kresHundSecMinHrUpd'
                        ENDM


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:  KRES_SECMINHR_UPD 
;
; Description:  updates the HH:MM:SS structure by adding the buffer 
;              HH:MM:SS to the data structure. 
; Assumptions:  
;
; Input(s):    HLReg points to Seconds of Data Structure
;
; Output(s):   AReg = update flags 
;
; Macro Change History:
;
;                    05/17/2000 RMA - Created Macro 
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KRES_SECMINHR_UPD   MACRO

            car  kresSecMinHrUpd

            CALLS   SUBROUTINE , 'kresSecMinHrUpd'
                    ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:  KRES_MINHR_UPD 
;
; Description: updates the HH:MM structure by adding the buffer 
;              HH:MM to the data structure. 
; Assumptions: None. 
;
; Input(s):    HLReg points to Minutes position of the data structure.
;
; Output(s):   AReg = update flags 
;
; Macro Change History:
;
;                    05/17/2000 RMA - Created Macro 
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KRES_MINHR_UPD  MACRO

            car  kresMinHrUpd

            CALLS   SUBROUTINE , 'kresMinHrUpd'
                
                ENDM
                

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:  KRES_HUNDSECMINHR_SUB 
;
; Description: subtracts the HH:MM:SS.hh buffer from  HH:MM:SS.hh 
;                data strcture and store the result at data structure.
;
; Assumptions: KRESHrRollOverValue has the value for rollover  
;
; Input(s):    HLReg points to hundredths of the data structure
;
; Output(s):   AReg - update flags
;
; Macro Change History:
;
;                    05/18/2000 RMA - Created Macro 
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KRES_HUNDSECMINHR_SUB    MACRO

            car  kresHundSecMinHrSub

            CALLS   SUBROUTINE , 'kresHundSecMinHrSub'
                        ENDM


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:  KRES_SECMINHR_SUB 
;
; Description: subtracts the buffer HH:MM:SS from HH:MM:SS structure
;                and store the result at  data structure.
;
; Assumptions: KRESHrRollOverValue has the value for rollover  
;
; Input(s):    HLReg points to Seconds of data structure
;
; Output(s):   AReg - update flags 
;
; Macro Change History:
;
;                    05/18/2000 RMA - Created Macro 
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KRES_SECMINHR_SUB    MACRO

            car  kresSecMinHrSub

            CALLS   SUBROUTINE , 'kresSecMinHrSub'
                    ENDM


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:  KRES_MINHR_SUB 
;
; Description: subtracts the buffer HH:MM from  HH:MM structure
;                and store the result at data structure.
;
; Assumptions: KRESHrRollOverValue has the value for rollover and should not be
;                Zero or the system would really crash. 
;              KRESMinBuffer and KRESHrBuffer contains the data to be subtracted
;
;
; Input(s):    HLReg points to Minutes of data structure
;
; Output(s):   AReg - update flags 
;              KRESHourRolloverExcess contains the amount of hour rollover that
;               happened.
;
; Macro Change History:
;
;                    05/18/2000 RMA - Created Macro 
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KRES_MINHR_SUB   MACRO

            car  kresMinHrSub

            CALLS   SUBROUTINE , 'kresMinHrSub'
                 
                 ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name: KRES_CLEARDATABUFFERS  
;
; Description: clears the KRESHundBuffer,KRESSecBuffer,
;               KRESMinBuffer,KRESHrBuffer and KRESHrRollOverValue.
;              
; Assumptions: None 
;
; Input(s):    None
;
; Output(s):   Destroyes HLReg 
;
; Macro Change History:
;
;                    05/18/2000 RMA - Created Macro 
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KRES_CLEARDATABUFFERS    MACRO

            car  kresClearDataBuffers

            CALLS   SUBROUTINE , 'kresClearDataBuffers'
                        ENDM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:   KRES_COMPAREHMS 
;
; Description:  Compare HMS to another HMS
;
; Assumptions:  NONE
;
; Input(s):     IXReg= points to the Hour of the first structure SMH,
;               HLReg= points to the Hour of the second structure SMH,
;
; Output(s):    AReg=0 if the *IXReg==*HLReg
;               AReg=FF if the *IXReg!=*HLReg
;
; Destroyed: 
;
; Macro Change History:
;
;               05/11/2000 HSB - Created Macro     
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KRES_COMPAREHMS  MACRO

            car  kresCompareHMS

            CALLS   SUBROUTINE , 'kresCompareHMS'
                 ENDM


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:  KRES_GETMASKFROMINDEX
;
; Description:  Get the mask bit for a certain index 
;       
;
; Assumptions:  NONE
;
; Input(s):     AReg=Resource Index
;
; Output(s):    AReg=Resource Mask
;                Destroyes BReg
; Macro Change History:
;
;               06/12/2000 HSB - Created Macro     
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KRES_GETMASKFROMINDEX    MACRO

                car  kresGetMaskFromIndex

            CALLS   SUBROUTINE , 'kresGetMaskFromIndex'
                         
            ENDM



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:  KRES_GET_ACC_HUND_AND_SECOND 
;
; Description: Calculates the Difference between the previous value of
;              hundredths and seconds with the stop watch data and stores this
;              Difference in the hundredths and seconds buffer. 
;
; Assumptions: The Resource copy of the FRC has been updated. 
;
; Input(s):    HLReg points to Previous Hundredths Sample
;              KRESStopwatchHundthsDataBuffer and KRESStopWatchSecondsDataBuffer 
;                contains the snap shot of the free running hundredths and 
;                seconds counter.
;
; Output(s):   The accumulated Hundreths and seconds are stored in the
;                KRESHundBuffer and KRESSecBuffer respectively.
;   
; Destroyes:   Areg
;
; Macro Change History:
;
;              01/10/2002 RBR - Created Macro KRES_GET_ACC_HUND_AND_SECOND  
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

KRES_GET_ACC_HUND_AND_SECOND    MACRO

                car  kresGetAccHundAndSec

            CALLS   SUBROUTINE , 'kresGetAccHundAndSec'
                    
            ENDM






;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:  KRES_UPD_HUND_SEC_MIN_HOURS_CNTUP 
;
; Description: Updates the Hundredths first, then checks if it is necessary
;                to update the seconds, minutes then the hours.
;
; Assumptions: This is used by as a resource utility to provide a less cycle
;                intensive routine for updating the resource fields in a count
;                up manner 
;
; Input(s):    HLReg points to Seconds Data to be updated.
;              KRESSecBuffer contains the accumulated data.
;
; Output(s):   AReg holds what field has been updated.
;
;           bKRESSecUpd - set if seconds was updated
;           bKRESMinUpd - set if minutes was updated
;           bKRESHrUpd  - set if hour was updated 
;               bKSTPRunout - set if there is a run out.
;
; Destroyes:   None
;
; Macro Change History:
;
;              01/10/2002 RBR - Created Macro for M851
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


KRES_UPD_HUND_SEC_MIN_HOURS_CNTUP MACRO

                car     kresUpdHundSecMinHrCountUp
        
        CALLS SUBROUTINE, 'kresUpdHundSecMinHrCountUp'  
        
        ENDM



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:  KRES_UPD_SEC_MIN_HOURS_CNTUP 
;
; Description: Updates the Seconds first, then checks if it is necessary
;                to update the minutes then the hours.
;
; Assumptions: This is used by as a resource utility to provide a less cycle
;                intensive routine for updating the resource fields in a count
;                up manner 
;
; Input(s):    HLReg points to Seconds Data to be updated.
;              KRESSecBuffer contains the accumulated data.
;
; Output(s):   AReg holds what field has been updated.
;
;           bKRESSecUpd - set if seconds was updated
;           bKRESMinUpd - set if minutes was updated
;           bKRESHrUpd  - set if hour was updated 
;               bKSTPRunout - set if there is a run out.
;
; Destroyes:   None
;
; Macro Change History:
;
;              01/10/2002 RBR - Created Macro for M851
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


KRES_UPD_SEC_MIN_HOURS_CNTUP MACRO

                car     kresUpdSecMinHrCountUp
        
        CALLS SUBROUTINE, 'kresUpdSecMinHrCountUp'  
        
        ENDM








;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:  KRES_UPD_HUND_SEC_MIN_HOURS_CNTDW
;
; Description: Updates the Hundrenths first, then checks if it is necessary
;                to update the Seconds, minutes then the hours.
;
; Assumptions: This is used by as a resource utility to provide a less cycle
;                intensive routine for updating the resource fields in a count
;                down manner 
;
; Input(s):    HLReg points to Hundredths Data to be updated.
;              KRESHundBuffer and KRESSecBuffer contains the accumulated data
;
; Outputs:     AReg holds what field has been updated.
;
;                 bKRESSecUpd - set if seconds was updated
;                 bKRESMinUpd - set if minutes was updated
;                 bKRESHrUpd  - set if hour was updated 
;                 bKSTPRunout - set if there is a run out.
;   
; Destroyes:   None
;
; Macro Change History:
;
;              01/10/2002 RBR - Created Macro for M851
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


KRES_UPD_HUND_SEC_MIN_HOURS_CNTDW MACRO

                car     kresUpdHundSecMinHRCntDown
        
        CALLS SUBROUTINE, 'kresUpdHundSecMinHRCntDown'  
        
        ENDM





;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name:  KRES_UPD_SEC_MIN_HOURS_CNTDW 
;
; Description: Updates the Seconds first, then checks if it is necessary
;                to update the minutes then the hours.
;
; Assumptions: This is used by as a resource utility to provide a less cycle
;                intensive routine for updating the resource fields in a count
;                down manner 
;
; Input(s):    HLReg points to Seconds Data to be updated.
;              KRESSecBuffer contains the accumulated data.
;
; Outputs:     AReg holds what field has been updated.
;
;                 bKRESSecUpd - set if seconds was updated
;                 bKRESMinUpd - set if minutes was updated
;                 bKRESHrUpd  - set if hour was updated 
;                 bKSTPRunout - set if there is a run out.
;   
; Destroyes:   None 
;
; Macro Change History:
;
;              01/10/2002 RBR - Created Macro for M851
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


KRES_UPD_SEC_MIN_HOURS_CNTDW MACRO

                car     kresUpdSecAndChkMinHrCountDown
        
        CALLS SUBROUTINE, 'kresUpdSecAndChkMinHrCountDown'  
        
        ENDM



                                
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KRES_CLEAR_N_BYTES
;
; Description : Clears n consecutive bytes
;
; Assumptions : None
;                         
; Usage       : KRES_CLEAR_N_BYTES
;               
; Input(s)    : BReg = number of bytes to clear
;               HLReg = start address of the bytes to be cleared
;
; Output(s)   : None
; 
; Destroys:     HLReg = points to the byte after the last cleared byte
;               BReg = 0
;
; Macro Change History : 
;
;               05/15/2000 ACN  - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KRES_CLEAR_N_BYTES      MACRO

                car     kresClearNBytes
                                
                CALLS   SUBROUTINE , 'kresClearNBytes'
       
                ENDM
                                

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Macro Name  : KRES_COPY_N_BYTES
;
; Description : Copies an n-byte structure from 1 location to another
;
; Assumptions : None
;                         
; Usage       : KRES_COPY_N_BYTES
;               
; Input(s)    : BReg = number of bytes to copy
;               IYReg = start address of the source structure
;               HLReg = start address of the destination structure
;
; Output(s)   : IYReg = points to the next byte after the source structure
;       HLReg = points to the next byte after the destinations structure
;       BReg = 0
;
; Macro Change History : 05/15/2000 ACN - Created macro
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                        
KRES_COPY_N_BYTES       MACRO

                car kresCopyNBytes
                                
                CALLS   SUBROUTINE , 'kresCopyNBytes'
       
                ENDM
                                


