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

  1.                             Chapter 3
  2.  
  3.                       INT 15h System Service
  4.                       ----------------------
  5.  
  6. 1. Introduction
  7.  
  8.    a. 
  9.      The INT 15h, System Service, provides serveral function:
  10.        
  11.        . Laptop special services include :
  12.             .. Read/Modify system profile
  13.             .. Wait for external event
  14.             .. Request system power off (system suspend)
  15.             .. Read current system status information
  16.             .. Modem power on/off
  17.  
  18.        . Joystick function
  19.             Function 84h supports uo to two joysticks, and have two sub-
  20.             function : read current switch setting and read resistive 
  21.             inputs.
  22.  
  23.        . Wait routines
  24.             There are two wait function is provided by INT 15h: Function 
  25.             83h set event wait interval and function 86h, wait. It also
  26.             supports function 41h, wait for external event in the laptop
  27.             system.
  28.  
  29.        . Protected mode support
  30.             .. Function 87h, block move
  31.             .. Function 89h, switch processor to protected mode
  32.  
  33.        . System Information
  34.             .. Get system configuration table , Function C0h
  35.             .. Get BIOS message, Subfunction of function C0h
  36.             .. Get extended memory size, Function 88h
  37.  
  38.        . Extensive function of Acer
  39.             .. Speed control
  40.                This function supports user to set or toggle system speed,
  41.                It will call the function F0h of INT 16h which is a speed 
  42.                control routine to handle the system speed. 
  43.                There are three subfunction: set high speed, set low speed, 
  44.                and toggle system speed.
  45.             .. Shadow RAM
  46.                The system service provide user to disable or enable shadow 
  47.                RAM. If shadow RAM enable, the system BIOS on ROM will be 
  48.  
  49.  
  50.  
  51.  
  52.                copied to shadow RAM and transfer control to shadow. 
  53.                Otherwise, the system works in ROM BIOS. The system works in
  54.                shadow RAM more effectivly than in ROM BIOS.
  55.             .. Setup utility
  56.                Setup utility supports user to setup system configuration 
  57.                and save the information into CMOS.
  58.  
  59.        . ESIA initialzation 
  60.             Function D8h is supported only on ESIA system, It writes
  61.             the information of EISA adapters into non-volatile RAM (CMOS), 
  62.             and get the information of EISA adapters from non-volatile RAM.
  63.  
  64.  
  65.    b. Programming
  66.         
  67.       . Event wait (AH = 83h)
  68.         - Clear user wait flag (bit 7 of point by ES:BX)
  69.         - Check function valid or not and go to properly subfunction.
  70.         - In set wait interval 
  71.              IF system is in waiting process, return to caller with carry 
  72.              flag. Otherwise, the user wait flag (ES:BX) and wait interval
  73.              (CX,DX) should be writed into BIOS data area. The waiting
  74.              counter is implemented by periodic interrupt of INT 70h (RTC).
  75.              So, IRQ 8 (INT 70h) must be unmask and the PIE of RTC must be 
  76.              enable.
  77.         - In cancel wait interval 
  78.              Clear wait active flag (bit 0 of 40:A0h)
  79.              Disable the PIE of RTC.
  80.  
  81.       . Wait (AH = 86h)
  82.             This routine will base on 55 minisecond system timer 0
  83.         to perform "wait" function.
  84.             System timer 0 (port 40h)   ┌─ FFFFh <┐    ┌────┐    ┌──
  85.         is a decremental counter, it    │         │  ──┘    └────┘
  86.         will decrement 2 per clock      └> 0000h ─┘    <- 55 ms ->
  87.         pulse. It takes 55 minisecond when loops twice.
  88.          
  89.         - transfer wait counter to counter in 55 minisecond 
  90.         - latch system timer counter
  91.         - Enter waiting loop in which the system will latch system timer
  92.           counter again,and compare it with the first system timer counter.
  93.           Return to caller until waiting counter is expired.
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.       . Block move (AH = 86h)
  104.         - Save currently stack into BIOS data area (40:67h, 69h)
  105.         - Set Global Descriptor Table(GDT) which is pointed by ES:SI.
  106.              The source and target descriptors built by the user must have 
  107.              a segment length = 2 * CX - 1 or greater. The data access 
  108.              right byte must be set to 93h. The 24 bit address (byte hi, 
  109.              word low) must be set to the target /source.
  110.              ( please refer to the specification of INT 15h)
  111.  
  112.         - Disable interrupt, NMI  and set shutdown 09h into CMOS
  113.         - set IDT and turn on GATE A20
  114.         - Enter protected mode
  115.         - make data move among the system memory.
  116.         - To return to real mode ,the shutdown 09h should be issued.
  117.         - restore system stack and enable interrupt & NMI.
  118.  
  119.       . Switch to protectd mode (AH = 89h)
  120.  
  121.         - Disable interrupts
  122.         - Reinitialize the 8259 interrupt controller to the user specified
  123.           offset and mask all interrupt.
  124.         - Setup BIOS code segment descriptor (segment_limit_word = 0ffffh
  125.                                                    base_low_word = 0
  126.                                                   base_high_byte = 0fh
  127.                                               access_right_byte =  09bh)
  128.         - Load GDT register
  129.         - Load IDT register
  130.         - Set Gate_A20
  131.         - Switch to protected mode
  132.         - Setup user's data segment
  133.         - Setup user's extra segment
  134.         - Setup user's stack segment
  135.         - Modify user's original CS in stack to CS selector
  136.         - Return to user in protected mode
  137.  
  138.     NOTE:  ES:SI -- pointer to GDT build before interrupting to this
  139.                     function. These descriptors are used by this
  140.                     function to initializethe IDTR, the GDTR and the
  141.                     stack segment selector. The DS selector and the
  142.                     ES selector will be initialized to descriptor
  143.                     built by the routine using this function.
  144.  
  145.