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

  1.             Specification of System Timer Interrupt Service (INT 08H)
  2.             ---------------------------------------------------------
  3.  
  4. * This routine handles the timer interrupt from channel 0 of the system
  5.   timer. Input frequency is 1.19318 MHz and the divider is 65536
  6.   (programmed by POST), resulting in approximately 18.2 interrupts per 
  7.   second.
  8.  
  9. * Maintains a count of interrupt at data area of system timer counter 
  10.   (double word located at 40:6c) since power-on that may be used to 
  11.   establish time of day. After 24 hours of operation, flag of timer 
  12.   overflow (byte located at 40:70) is set to 1 and the counter of 
  13.   system-timer day (word located at 40:CE) is increased.
  14.  
  15. * Decrement motor off counter (byte located at 40:40) and when the count
  16.   reaches 0, turns the diskette drive motor off, and resets the flag of
  17.   motor running (refer to diskette interrupt service routine).
  18.  
  19. * Finally, calls interrupt 1CH which may be provided by the user.
  20.  
  21.  
  22. input:
  23.                 none
  24. output:
  25.                 none
  26.  
  27. reference BIOS data area:
  28.  
  29.         40:40   motor off counter
  30.         40:6C   timer count (low word)
  31.         40:6E   timer count (high word)
  32.         40:70   if timer is over one day then set this byte to 1
  33.         40:CE   day count
  34.         40:D0   status_speed
  35.  
  36. port defined:
  37.  
  38.         328h (28h) -- System Control Port C (for 1100 seriers)
  39.         3F2h -- Digital output register
  40.  
  41.  
  42. Note:
  43.  1. For running IBM SDLC 3270 Emulator, it must push 3 registers in this 
  44.     order - DS, AX, and DX to the stack before it calls interrupt 1CH.
  45.  
  46.  2. The accurate calculation of the system timer counter is shown below:
  47.  
  48.                           65536
  49.       period of IRQ 0 = ------------- = 0.054925493 sec
  50.                          1.19318 MHz 
  51.  
  52.                                  1 day           24 * 60 * 60 sec
  53.       maximum timer count = ----------------- = ------------------
  54.                              period of IRQ 0      0.054925493 sec
  55.  
  56.                           = 1573040.045
  57.  
  58.                           = 24 * 65536 + 176.045
  59.                             --           -------   
  60.  high word of timer count<───┘            └────> low word of timer count
  61.  
  62.     So it must increase the timer count to reach this maximum value, then
  63.     reset timer counter and set timer-overflow flag.
  64.  
  65.     
  66.