home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / misc_programming / time.doc < prev    next >
Text File  |  1990-01-04  |  5KB  |  97 lines

  1.  
  2.                    System Timer and Real Time Clock Services
  3.                    -----------------------------------------
  4. 1. Introduction
  5.       The ROM BIOS contains five time-related services, INT 08h, INT 1Ah,        
  6.    INT 1Ch, INT 4Ah and INT 70h. The system has an Intel 8254 (or 8253)
  7.    timer chip to generate a timer tick 18.2 times per second and issue 
  8.    INT 8 and INT 1Ch. The system has a MC146818A real time clock also. 
  9.       It generates 1024 timer tick per second, and contains 64 bytes of
  10.    CMOS. INT 1Ah are used to access the first 12 bytes of CMOS that 
  11.    contain time related data. INT 70h is the RTC ISR and INT 4Ah is the
  12.    user Alarm  interrupt that is invoked by INT 70h.
  13.  
  14. 2. Diagram of Service Routines
  15.  
  16.    ┌──────────────┬────────────────────┬─────────────────┐
  17.    │  MC146818A   │ CMOS data 00-0C,32 │ CMOS data 0D-3F │
  18.    │              │   Time data        │    BIOS using   │
  19.    └──────┬───────┴────────────────────┴─────────────────┘
  20.           │                      
  21.           └───┐                  |
  22.                                 |      INT 1Ah
  23.            INT 70                |  ┌──────────────┐
  24.    ┌──────────┬──────────┐       C  │ Fun 00,01    │
  25.    │Periodic  │ Alarm    │       |  │ Read/Set     ├--|
  26.    │Interrupt │ Interrupt│──┐   |  │ System timer │  |
  27.    └────┬─────┴────┬┬────┘   │   |  ├──────────────┤  |
  28.         |          |│        │   |  │ Fun 02-05    │  |
  29.         |          |│        │   |--┤ Read/Set RTC │  |
  30.         F          EE        │   |  │ time and day │  |
  31.         |          |│        │   D  ├──────────────┤  |
  32.         |----------|│        │   |--┤ Fun 06,07,09 │  B
  33.         |           │        └──────┤Set/Reset/Read│  |
  34.         |                          │ RTC alarm    │  |
  35.         |      ┌────────┐           └──────────────┘  |
  36.         |      │ INT 4A │                             |
  37.         |      └────────┘                             |      ┌────────┐
  38.         |                                             |      │  8254  │
  39.         |                        BIOS data            |      └────┬───┘ 
  40.         |                    ┌──────────────┐         |           │    
  41.         |                    │ system timer │  <------|           
  42.         |                    │40:6c - 40:70 │  <-|           ┌────────┐
  43.         |                    ├──────────────┤    |-----A----─┤ INT 8  │
  44.         |                    │  RTC data    │                └────┬───┘
  45.         |---------------->   │40:98 - 40:a6 │                     A
  46.                              └──────────────┘                     
  47.                                                              ┌────────┐
  48.                                                              │ INT 1C │
  49.                                                              └────────┘
  50.  
  51.  
  52. 3. Programming
  53.  
  54.       INT 8 -- A timer tick is generated by 8254 18.2 times per second.
  55.                Increase the timer count to reach the value of one day and
  56.                then reset timer counter and set timer-overflow flag.
  57.                Decrement motor off couter and when the count reaches 0,
  58.                turns the diskette drive motor off, and resets the flag of
  59.                motor running.
  60.                Finally, issue interrupt 1CH which may be provided by user.
  61.                                                                  ------  A
  62.  
  63.       INT 1A -- Subfunction 0 and 1 : Read/Set system-time timer counter
  64.                                       from BIOS data. 
  65.                                                                  ------  B
  66.                                                            
  67.                 Subfunction 2-5 : Read/Set real-time clock time and date.
  68.                   Before read CMOS data must be wait in RTC time available
  69.                   (status register A bit 7). Before write CMOS data must be
  70.                   clear status register B bit 7 (in set mode), and when
  71.                   finish operation to set this bit again.
  72.                   Error condition : RTC error and time update in progress
  73.                                     for a long time. (loop 1000h times)
  74.                                                                  -----  C
  75.  
  76.                 Subfunction 6 : Set RTC alarm.
  77.                              check RTC status.
  78.                              set alarm interrupt enable.
  79.                              set alarm time.
  80.                              enable interrupt of 8259.
  81.                 Subfunction 7 : Reset RTC alarm.
  82.                              disable alarm interrupt of register B.
  83.                 Subfunction 9 : Read alarm time of RTC and status.
  84.                                                                  -----  D
  85.  
  86.       INT 70 -- RTC interrupt service routine
  87.                  test interrupt occur or not (if not then send EOI only)
  88.                   a. alarm interrupt : send EOI and issue INT 4A 
  89.                                                                  -----  E
  90.  
  91.                   b. periodic interrupt : decrease wait_time (40:a2,a4)
  92.                                           1000 if no more counter then set
  93.                                           user periodic flag (address of
  94.                                           40:98) and disable PIE. 
  95.                                                                  -----  F
  96.  
  97.