home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / misc_programming / time.spc < prev    next >
Text File  |  1990-01-05  |  6KB  |  104 lines

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