home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / misc_programming / post.spc < prev    next >
Text File  |  1990-01-04  |  28KB  |  725 lines

  1.                         Chapter 2
  2.  
  3.                  The Specification of POST 
  4.                  -------------------------
  5.  
  6. 1.Introdoction:
  7.  
  8.     POST (Power On Self Test) is a procedure in BIOS which initializes
  9.     and diagnoses the resources of the system. Moreover, the operation of
  10.     Power-On Password and the issue of booting are also done by POST.
  11.  
  12.     If the POST finds out errors on the resources of system, it will
  13.     display error messages or generate beep codes or even halt the system
  14.     during a fatal error.
  15.  
  16. 2.External specification:
  17.  
  18.     The resources of the system handled by POST include main chips on the
  19.     system board, I/O devices attatched to the system and any adapters
  20.     which specifically designed for ISA compatible system.
  21.  
  22.     The following are the main chips on the system board which must be
  23.     diagnosed or/and initialized by POST in order to ensure the system's
  24.     functions.
  25.     
  26.     * After POWER-ON reset or reset button is pressed, the H/W reset 
  27.         signal is issued to the CPU and other chips after built-in self
  28.         test (BIST) is completed. The result status code is stored in 
  29.         EAX register. It is zero if no error occurs. Please refer to i386
  30.         specifications.
  31.  
  32.     * Intel 80386 system microprocessor
  33.           . i386 performs a built-in self-test (BIST) after system 
  34.              power-on.
  35.           . the BIST tests the non-random logic that controls the ROM.
  36.           . the result of BIST is stored in EAX register, the content of 
  37.             the EAX register is zero when i386 has passed the BIST.
  38.       * Eight channel direct memory access (DMA) controller
  39.       * 16 edge-triggered interrupt system
  40.       * Three programmable timers 
  41.       * Intel 82385 Cache controller
  42.       * ROM subsystem, 128K bytes (K = 1,024)
  43.       * Cache controller and cache SRAM test
  44.     * RAM subsystem, 1M to 16M bytes (M = 1,048765)
  45.     * CMOS RAM subsystem with battery backup
  46.       - 64 bytes CMOS RAM with real time clock/calendar
  47.     * Keyboard/Auxiliary device controller
  48.  
  49.                        -- To be continued -- 
  50.  
  51.  
  52.  
  53.     Aside from the system board, POST also have to do some proper action
  54.     to the following I/O devices and adapters.
  55.  
  56.     * Test keyboard & auxiliary devices.
  57.     * Test diskette drive attachment if floppy disk adapter exists.
  58.     * Test hard disk attachment if hard disk adapter exists.
  59.     * Check address of ROM from 0C000h to 0DFFFh for any firmwares in 
  60.         that region. If the firmware has a valid ID and its checksum is OK,
  61.       POST must call firmware's initial entry point to initialize it.
  62.  
  63.       During POST the following items should be considered for 
  64.     compatibility:
  65.  
  66.     * All RAM except interrupt vector & BIOS data area must be cleared
  67.       (including video RAM).
  68.     * Setup interrupt vector table & BIOS data area.
  69.     * Display memory size .
  70.     * Display error code messages on diagnostic LEDs or generate beep
  71.           codes.
  72.     * Prepare 12 routines for shutdown process (shutdown byte from 0 to
  73.       0Bh).
  74.     * Boot from diskette or hard disk, if there is no REMOTE BOOT ROM on
  75.           the LAN card.
  76.  
  77. 3. Internal specification:
  78.  
  79.     There are many tasks in the POST. When POST executes a task, it 
  80.         would pre-set a number (check point number) to specific latch LEDs
  81.         on system board to indicate the stage it is running now, and this
  82.     latch can be any R/W port on the system board as long as it can 
  83.         store data.
  84.  
  85.     The following sections lists the definition of all the tasks in POST
  86.         identified by a check point number.  All of the check point number
  87.         can be assigned at random, add or eliminate some check points and
  88.         change the sequence of definition.
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.                        -- To be continued -- 
  98.  
  99.  
  100.  
  101.  
  102.  
  103. 4. Check point list:
  104.  
  105. --------------------------------------------------------------------------
  106. CHECK POINT 04h   Start
  107.     Check shutdown byte & test CPU (real mode)
  108. Description:
  109.  
  110.       * Check the result of CPU BIST, if it fails then the system halts.
  111.       * Clear all interrupt.
  112.       * Set DS = segment of BIOS data area.
  113.       * Verify flags & conditional jumps, if it fails halt the system.
  114.       * Check for shutdown in process flag. If shutdown is in process, 
  115.         and the shutdown flag is not equal to 09 or 0Ah or 0Bh, then
  116.         re-initialize the #1 of interrupt controller by following the 
  117.         steps below:
  118.  
  119.            ICW1 :    edge triggered, all address internal, cascade mode,
  120.                  ICW4 need
  121.         ICW2 :  vector address = 8
  122.         ICW3 :  IRQ2 has a slave, i.e. ICW3 = 4
  123.         ICW4 :  special fully nested mode disabled, non buffer mode,
  124.                 normal EOI, 8086/8088 mode.
  125.  
  126.         and re-initialize the #2 of interrupt controller by following the 
  127.         steps below:
  128.  
  129.          ICW1 :    edge triggered, all address internal, cascade mode,
  130.                    ICW4 need.
  131.          ICW2 :    vector address = 70h
  132.          ICW3 :    slave ID = 2
  133.          ICW4 :    not special fully nested mode, non buffer mode,
  134.                    normal EOI, 8086/8088 mode
  135.  
  136.         Finally, mask off all interrupts, clear shutdown flag and branch 
  137.         to each shutdown routine.
  138.         If the value of shutdown byte is invalid, branch to shutdown 0 
  139.         routine.
  140.         If the value of shutdown byte is 09, 0Ah or 0Bh, do not 
  141.         re-initialize interrupt system but branch to proper routine.
  142. NOTE:
  143.       1. BIOS data area address is 40:0h and size is 256 bytes.
  144.       2. Delay a short period of time for system power_on stability.
  145.       3. Check status byte of KB controller (port 64h). If bit 2 of status
  146.          byte = 0, system does a cold start and clears system flag 40:72h.
  147.          Otherwise the system shutdowns the processor or does a warm start.
  148.          The processor shuts down when the shutdown byte of the CMOS isn't
  149.          0.
  150.       4. If the system is in shutdown, set POST stack at 0:400h.
  151.  
  152.  
  153.                  -- To be continued -- 
  154.  
  155. ---------------------------------------------------------------------------
  156. SHUTDOWN ROUTINES
  157.     Return control after a shutdown command is issued
  158. Description:
  159.     *   A test is made for the system flag being set. If the system flag
  160.         is set, the shutdown byte in CMOS (addr. 0F) is used to determine
  161.         where the control should be returned.
  162.       
  163.       CMOS = 0  soft reset or unexpected shutdown
  164.       CMOS = 1  shutdown after memory size determination
  165.       CMOS = 2  shutdown after memory successful test 
  166.       CMOS = 3  shutdown with memory test error
  167.       CMOS = 4  shutdown with boot loader request
  168.       CMOS = 5  jump dword request (interrupt chip are initialized)
  169.       CMOS = 6  protected mode test3 passed
  170.       CMOS = 7  protected mode test3 failed
  171.       CMOS = 8  protected mode test1 failed
  172.       CMOS = 9  block move shutdown request
  173.       CMOS = A  jump dword request
  174.       CMOS = B  jump dword request (turn off gate A20 & adjust IDTR to
  175.             physical address 0)
  176.  
  177. --------------------------------------------------------------------------
  178. CHECK POINT 08h (SHOUTDOWN 0 ROUTINE)
  179.     Test CPU registers
  180. Description:
  181.       * Test CPU registers and if it fails, halt the system.
  182.       * Disable NMI interrupt.
  183.     * Ensure that CMOS clock interrupt are disabled.
  184.     * Reset I/O channel error and memory parity.
  185.  
  186. NOTES:
  187.       1. Clear the display buffer
  188.       2. During POST, NMI must be disabled when accessing CMOS index 
  189.          register. Disable NMI interrupt by setting bit 7 of CMOS index
  190.          port (70h).
  191.  
  192. --------------------------------------------------------------------------
  193. CHECK POINT 0Ch
  194.     ROM checksum test
  195. Description:
  196.       * A checksum is performed for the 64K ROM from F0000 to FFFFF.
  197.         If it fails, halt the system.
  198.  
  199. NOTE:
  200.       ROM BIOS checksum must be equal to 0.
  201. --------------------------------------------------------------------------
  202.  
  203.                        -- To be continued -- 
  204.  
  205. --------------------------------------------------------------------------
  206. CHECK POINT 10h
  207.     Verify CMOS shutdown byte
  208. Description:
  209.      * Test shutdown byte (0Fh) of CMOS, if it fails, halt the system.
  210.  
  211. NOTE:
  212.       Clear shutdown byte after successful testing of the shutdown byte.
  213. --------------------------------------------------------------------------
  214. CHECK POINT 14h
  215.     Test and initialize DMA controller
  216. Description:
  217.     * Test page registers and transfer count registers and memory address
  218.       registers of all DMA channel. If it fails, halt the system.
  219.  
  220.     * Program DMA's function by setting the following:
  221.             
  222.                 DREQ signal sense active high
  223.                 DACK signal sense active low,
  224.                 late write,
  225.                 fixed priority, normal timing, 
  226.                 Controller enable, channel 0
  227.                 Address hold disabled
  228.                 Memory to memory disabled.
  229.  
  230.         Set mode for channels 0,1,2,3,5,6,7 as demand mode
  231.                 Address increasing, auto-initialization disabled
  232.                 Verify transfer.
  233.         
  234.          Set mode for channel 4 as cascade mode.
  235.  
  236. NOTES:
  237.       1. Clear all of the DMA page registers (port 80h to 8Fh) because some 
  238.          adapter uses these page registers.
  239.  
  240. --------------------------------------------------------------------------
  241. CHECK POINT 18h
  242.        System timer check
  243. Description:
  244.        * Channel 0 and 2 are programmed to mode 0, binary counter 16 bits.
  245.        * Test channel 0 and 2. If it fails, display error messages and halt
  246.          the system.
  247.        * Channel 0 is programmed to mode 3, binary counter 16 bits which
  248.          will be used as system timer.
  249.  
  250. --------------------------------------------------------------------------
  251.  
  252.  
  253.                        -- To be continued -- 
  254.  
  255. --------------------------------------------------------------------------
  256. CHECK POINT 1Ch
  257.     Memory refresh test
  258. Description:
  259.     * Verify refresh if it is occurrs. If it fails, halt the system.
  260.  
  261. --------------------------------------------------------------------------
  262. CHECK POINT 20h
  263.     Base 128K RAM test
  264. Description:
  265.     * If warm start flag = 1234h, warm start 
  266.                          = 1233h, RAM BIOS operation mode,
  267.         just clear basic 64K RAM except WARM START FLAG & MEMORY SIZE.
  268.     * If basic 64K RAM test fails, halt the system.
  269.  
  270. NOTE:
  271.       1. Clear second 64k after 128k memory test and set real mode stack
  272.          at 0:400h.
  273.       2. When in cold start, clear all 128k RAM after 128k test OK.
  274.  
  275. --------------------------------------------------------------------------
  276. CHECK POINT 24h
  277.     Keyboard/auxiliary device controller (8042) test
  278. Description:
  279.     * Test controller's I/O buffer and issue a self test command (AAh) 
  280.           to the controller. Insure a no error code (55h) is received.
  281.           If it fails, halt the system.
  282.     * Write 8042 command byte as IBM keyboard translate mode, disable
  283.       auxiliary device & keyboard, set system flag,
  284.       disable auxiliary interrupt and enable keyboard interrupt.
  285.  
  286. NOTE:
  287.       1. Ensure Gate A20 is reset (bit 1 = 0 of output port of 8042).
  288.       2. If system has fast GATE A20, the fast Gate A20 should be turn off
  289.          with reset Gate A20 bit of 8042 after system shutdown is issued.
  290.  
  291. --------------------------------------------------------------------------
  292. CHECK POINT 28h
  293.     Verify CPU LGDT/SGDT & LIDT/SIDT instructions
  294. Description:
  295.     * If the test fails, halt the system.
  296.  
  297. NOTE: 
  298.       1. This check point must be tested in real mode.
  299.  
  300. --------------------------------------------------------------------------
  301.  
  302.  
  303.  
  304.  
  305.                        -- To be continued -- 
  306.  
  307. --------------------------------------------------------------------------
  308. CHECK POINT 2Ch
  309.     Test 8259 & initialize system interrupt
  310. Description:
  311.     * Reset Math coprocessor
  312.     * Test interrupt mask register
  313.     * Initialize interrupt controller #1 by following the steps below:
  314.         ICW1 :    edge triggered, all address internal, cascade mode
  315.             ICW4 need
  316.         ICW2 :    vector address = 8
  317.         ICW3 :    IRQ2 has a slave
  318.         ICW4 :    not special fully nested mode, non buffer mode,
  319.             normal EOI, 8086/8088 mode
  320.       and initialize the #2 of interrupt controller as following
  321.         ICW1 :    edge triggered, all address internal, cascade mode
  322.             ICW4 need
  323.         ICW2 :    vector address = 70h
  324.         ICW3 :    slave ID = 2
  325.         ICW4 :    not special fully nested mode, non buffer mode,
  326.             normal EOI, 8086/8088 mode
  327.      then mask off all interrupt.
  328.     * Check for unexpected interrupts.
  329.     * If error occurred, halt the system.
  330.  
  331. --------------------------------------------------------------------------
  332. CHECK POINT 30h
  333.     Set temporary interrupt service routines
  334. Description:
  335.     * Clear all interrupt vector
  336.     * Set POST interrupt vector internally by setting from vector
  337.       INT 0 to vector 6Fh with a value of type 1.
  338.     * Set POST interrupt vector internally by setting from vector
  339.       INT 70h to vector 77h with a value of type 2.
  340.  
  341. --------------------------------------------------------------------------
  342. CHECK POINT 34h
  343.     Set BIOS interrupt service routines
  344. Description:
  345.     * Set interrupt service routines of BIOS from vector 08h to vector
  346.           20h and 4Ah.
  347.  
  348. --------------------------------------------------------------------------
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.                        -- To be continued -- 
  356.  
  357. --------------------------------------------------------------------------
  358. CHECK POINT 38h
  359.     Verify CMOS checksum/battery if it is OK and set CMOS driver
  360. Description:
  361.     * Clear the diagnostic status byte of CMOS when system is in cold
  362.           start. 
  363.     * Clear all except memory size bit of the diagnostic when system is
  364.           in soft reset.
  365.     * Check CMOS battery is bad or not. Set error status into CMOS RAM's 
  366.           diagnostic status byte if the battery of CMOS lost or bad, and 
  367.           leave for next checking.
  368.     * Verify CMOS checksum from 10h to 2Dh. If checksum is an error, set 
  369.       checksum incorrect bit (bit 6) of diagnostic status byte and leave 
  370.           it.
  371.     * Select 32.768 KHz time base, 1.024 KHz square-wave output frequency
  372.       and 976.562 microsecond periodic interrupt rate.
  373.  
  374. --------------------------------------------------------------------------
  375. CHECK POINT 3Ch (PROTECTED MODE TEST1)
  376.     Protected mode test and memory size determination
  377. Description:
  378.         * Enter protected mode
  379.     * Check the machine status word (MSW) for protected mode. If it 
  380.           fails, issue shutdown 8 to halt the system.
  381.     * Determine the basic memory size and save it into BIOS data area.
  382.     * Determine memory size above 1M and save it into CMOS.
  383.     * During soft reset, the memory size determination test checks for 
  384.           parity errors.
  385.     * Test address line 0 - 31, if it fails issue shutdown 8.
  386.     * Issue shutdown 1.
  387.  
  388. NOTE:
  389.  
  390.     1. This routine runs in protected mode in order to address all of
  391.        the storage.
  392.     2. During power-up sequence, memory size determination is performed 
  393.            with memory and I/O parity checks disabled.
  394.     3. Parity check should be enabled after this check point.
  395.  
  396. --------------------------------------------------------------------------
  397. CHECK POINT XX
  398.     Starting address of shutdown 8
  399. Description:
  400.        * Set LED to indicate which check point causes system halt
  401.          (C0h or check point value)
  402.        * Execute a halt instruction to halt the system
  403.  
  404. --------------------------------------------------------------------------
  405.                        -- To be continued -- 
  406.  
  407. --------------------------------------------------------------------------
  408. CHECK POINT 40h
  409.     Starting address of shutdown 1
  410. Description:
  411.     * Set real mode stack.
  412.     * Set divide 0 interrupt.
  413.     * Set bit of incorrect configuration of CMOS diagnostic byte if 
  414.           CMOS has lost power or checksum is incorrect.
  415.     * Set bit of diskette drives installed of equipment byte of BIOS 
  416.           data area.
  417. --------------------------------------------------------------------------
  418. CHECK POINT 44h
  419.     Initialize & test video system
  420. Description:
  421.       * Check I/O ROM from C0000h to C7FFFh 
  422.       * If video ROM exists, initialize I/O ROM and skip to the next check 
  423.         point.
  424.       * Setup vectors of graphic character font and video parameters table
  425.         into BIOS data area.
  426.       * Initialize 6845
  427.       * Test 6845, video buffer and vertical signal 
  428.       * Set video mode.
  429.       * Generate 1 long and 2 short beeps if test fails.
  430.       * Generate 1 long and 3 short beeps if vertical synchronization test 
  431.         fails.
  432.       * If no video exists, generate 2 short beeps and set no console flag 
  433.         bit.
  434.  
  435.  NOTE:
  436.          If system has built-in video, it must be disabled when it begins 
  437.          this check point. If video I/O ROM does not exist, enable built-in 
  438.          video, initialize and test it.
  439. --------------------------------------------------------------------------
  440. CHECK POINT 48h
  441.        Additional read/write storage test
  442. Description:
  443.        * If warm start flag equals 1234h
  444.            clear extended memory & update ext. memory size
  445.            display total memory size and then jump to shutdown 6.
  446.        * Enter protected mode for storage testing (including addressability
  447.          check)
  448.        * If the real memory size does not match configuration, set this
  449.          information into memory mismatch CMOS diagnostic status register.
  450.        * Display size of good memory
  451.        * When an error occurs, update real memory size in BIOS data area or
  452.          CMOS, and issue shutdown 3.
  453.        * Finally, the system issue shutdown 2 when memory test successfully.
  454. --------------------------------------------------------------------------
  455.                        -- To be continued -- 
  456.  
  457. --------------------------------------------------------------------------
  458. CHECK POINT 4Ch
  459.     Starting address of shutdown 3
  460. Description:
  461.     * Display error messages of additional read/write storage test.
  462.     * Jump to shutdown 2.
  463.  
  464. --------------------------------------------------------------------------
  465. CHECK POINT 50h
  466.     Additional protected mode test (starting address of shutdown 2)
  467. Description:
  468.     * Enter protected mode.
  469.     * Check the machine status word.
  470.     * Test programmed and exception interrupt.
  471.     * Test LDT/SDT, LTR/STR and control flags.
  472.     * Test the following instructions:
  473.         BOUND, PUSHA, POPA, VERW, VERR, APRL, LAR, LSL.
  474.     * Test that a write to address 1B0000 or 1A0000 does not write B0000
  475.           or B8000 or A0000.
  476.     * If any error occurs, issue shutdown 7.
  477.     * Issue shutdown 6 for normal process.
  478.  
  479. --------------------------------------------------------------------------
  480. CHECK POINT 54h
  481.     Starting address of shutdown 7
  482. Description:
  483.     * Display error messages for protected mode and test if it fails.
  484.     * Jump shutdown 6.
  485. --------------------------------------------------------------------------
  486. CHECK POINT 58h
  487.     Starting address of shutdown 6
  488. Description:
  489.     * Turn off gate A20.
  490.  
  491. --------------------------------------------------------------------------
  492. CHECK POINT 5Ch
  493.     Keyboard device test
  494. Description:
  495.     * Test keyboard device interface. If it fails, display error
  496.       messages.
  497.     * Test keyboard. If it fails, display error messages.
  498. --------------------------------------------------------------------------
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.                        -- To be continued -- 
  506.  
  507. --------------------------------------------------------------------------
  508. CHECK POINT 5Dh
  509.     Auxiliary device test
  510. Description:
  511.     * Check existence of auxiliary device. If auxiliary device does not
  512.       exist, leave for next check.
  513.     * Test interface of auxiliary device. If it fails, display error
  514.           messages.
  515.     * Test auxiliary device. If it fails, display error messages,
  516.           otherwise set bit of pointing device of equipment byte of BIOS 
  517.           data area.
  518.  
  519. NOTE:
  520.       1. Disable auxiliary device interface after this check point pass
  521.          successfully.
  522.       2. Set pointing device interrupt service routine ( INT 74h) when the 
  523.          auxiliary device is installed.
  524. --------------------------------------------------------------------------
  525. CHECK POINT 60h
  526.     Setup hardware interrupt vector table
  527. Description:
  528.     * Setup level 0 - 7 (vectors start at INT 8).
  529.     * Setup level 8 - 15 (vectors start at INT 70h).
  530.     * Setup NMI, print screen, RTC, KB interrupt vectors.
  531.     * Fill interrupt 60h thru 67h with zero.
  532.  
  533. --------------------------------------------------------------------------
  534. CHECK POINT 64h
  535.     Check CMOS real-time clock and diagnostic status.
  536. Description:
  537.     * Enable interrupt of system timer.
  538.     * Check for any error bit set in CMOS diagnostic status register and
  539.       the display error messages.
  540.     * Test real-time clock updating. If it fails, display error messages.
  541. --------------------------------------------------------------------------
  542. CHECK POINT 68h
  543.     Test attached diskette drive and initialize floppy diskette drive.
  544. Description:
  545.     * Check if diskette drive is attached to system.
  546.     * If it is attached, test it. If test fails, display error messages.
  547.     * Determine how many drives and what type of drives are installed.
  548.     * Update diskette drive number bits of equipment byte of BIOS data
  549.       area.
  550.     * If configuration of dikestte drive does not match, set 
  551.           configuration error bit of diagnostic status byte.
  552. NOTE:
  553.       Check FDC status before turning on diskette motor. If status fails,
  554.       reset  diskette.
  555. --------------------------------------------------------------------------
  556.  
  557. --------------------------------------------------------------------------
  558. CHECK POINT 6Ch
  559.     Initialize hard disk drive
  560. Description:
  561.     * Test attach hard disk and setup BIOS data area.
  562.     * If any error occurs, display error messages.
  563.  
  564. --------------------------------------------------------------------------
  565. CHECK POINT 70h
  566.     Check parallel port 
  567. Description:
  568.  
  569.       * Assign printer timeout value 
  570.       * Check the presence of parallel port
  571.       * If parallel port exists, set port address to BIOS data area.
  572.       * Assign number of parallel to equipment byte of BIOS data area.
  573.  
  574. NOTE:
  575.       1. If system has built-in parallel port, disable on-board 
  576.          parallel port, and then check whether add-on parallel is present 
  577.          or not.
  578.       2. If add-on exists, disable on-board parallel port, otherwise
  579.          enable on-board parallel port and check its presence.
  580.  
  581. --------------------------------------------------------------------------
  582. CHECK POINT 74h
  583.     Check serial port 
  584. Description:
  585.  
  586.       * assign RS232 timeout value
  587.       * check presence of serial port
  588.       * If serial port exist, set port address to BIOS data area.
  589.       * assign number of RS232 to equipment byte of BIOS data area.
  590. NOTE:
  591.       1. If system has built-in serial port, disable on-board 
  592.          serial port and then check the presence of an add-on serial.
  593.       2. If add-on exists, disable on-board serial port, otherwise enable 
  594.          on board serial port and check if it exist or not.
  595. --------------------------------------------------------------------------
  596. CHECK POINT 78h
  597.     Check for optional ROM from C8000h to DFFFFh in 2K block
  598. Description:
  599.     * A valid module has '55AA' in the first 2 locations, length 
  600.           indicator (length/512) in the 3rd location and test/init, and 
  601.           code starting in the 4th location.
  602.     * Check optional ROM using the above criteria. If its checksum is OK,
  603.       initialize it.
  604. --------------------------------------------------------------------------
  605.                        -- To be continued -- 
  606.  
  607. --------------------------------------------------------------------------
  608. CHECK POINT 7Ch
  609.     Test MATH coprocessor installation
  610. Description:
  611.     * Check MATH coprocessor if is good or not.
  612.     * Set up equipment byte of BIOS data area and MP bit of CPU register.
  613.  
  614. NOTE:
  615.       Set ET bit of MSW in CPU when 80387 math_processor has been installed
  616.  
  617. --------------------------------------------------------------------------
  618. CHECK POINT 80h
  619.     Initialize keyboard
  620. Description:
  621.     * Clear keyboard controller and LED flag of BIOS data area.
  622.     * Enable keyboard and timer interrupt.
  623.     * Read keyboard ID to initialize keyboard type and NUM lock state.
  624.     * If it fails, display error messages.
  625.     * Setup pointer of buffer head, buffer tail, buffer start, buffer end
  626.       in BIOS data area.
  627.  
  628. --------------------------------------------------------------------------
  629. CHECK POINT 84h
  630.     Set time of day
  631. Description:
  632.     * If CMOS RAM content is bad, set bit of invalid time of diagnostic
  633.       status byte and display error messages then exit for the next 
  634.         check.
  635.     * Convert HR:MIN:SEC from CMOS to timer ticks and store in BIOS data
  636.       area.
  637.  
  638. NOTE:
  639.       1. If the time of day in CMOS is failure, clear timer ticks of BIOS
  640.          data area.
  641.       2. The timer ticks is counted by system timer (IRQ0) increase by 1 
  642.          when IRQ 0 interrupt occurred.
  643.          The period of IRQ0 is 0.054925493 sec ( = 65536/1.19318 MHz), and
  644.          the real timer ticks counter of one day (24 hours) is 1573040.045
  645.          ( = 24 * 60 * 60 sec/ 0.054925493 sec) i.e. 24*65536 +176.045, so
  646.          system timer has error value 176.045 that must be considered in 
  647.          converting HR:MIN:SEC of CMOS into timer ticks of BIOS data. 
  648.  
  649.  
  650. --------------------------------------------------------------------------
  651.  
  652.  
  653.  
  654.  
  655.                        -- To be continued -- 
  656.  
  657. --------------------------------------------------------------------------
  658. CHECK POINT 88h
  659.     Initialize system (I)
  660. Description:
  661.     * Generate 1 short beep for successfull POST.
  662.     * Clear any RAM that is temporarily used by POST.
  663.     * Set POST system stack.
  664.     * Ensure that master level 2 of interrupt system is enabled.
  665.         * Unmask hardware auxiliary device interrupt (INT 74h) when 
  666.           pointing device has been installed.
  667.  
  668. NOTES:
  669.       1. Display the number of hard disk, diskette and system configuration
  670.       2. Let user select the system setup configuration or bypass a system 
  671.          configuration error.
  672.  
  673. --------------------------------------------------------------------------
  674. CHECK POINT 8Ch
  675.     Initialize system (II) (Starting address of shutdown 4)
  676. Description:
  677.     * Enable NMI, channel check and parity check.
  678.     * Go to bootstrap loader.
  679. --------------------------------------------------------------------------
  680. CHECK POINT 90h
  681.     Boot strap loader (INT 19H)
  682. Description:
  683.     * Read track 0, sector 1 of diskette into the boot location 
  684.           (segment 0 offset 7C00). Transfer the control if no errors 
  685.           occurred.
  686.     * If there is a hardware error while booting from the diskette, try
  687.           to boot from the hard disk.
  688.         * Check power-on password during system cold start and the password
  689.           is enabled.
  690. NOTES:
  691.       1. Clear warm start flag.
  692.       2. System can boot from driver B on laptop machine for an external 
  693.          driver boot.
  694. --------------------------------------------------------------------------
  695. CHECK POINT 94h
  696.     Starting address of shutdown 5
  697. Description:
  698.     * Flush the keyboard buffer.
  699.     * Flush last timer when request is pending in order to allow timer
  700.       interrupt.
  701.     * Issue a jump far instruction to the far pointer of 40:67 in the
  702.           BIOS data area.
  703.     * Jump to shutdown 0A.
  704. --------------------------------------------------------------------------
  705.                        -- To be continued -- 
  706.  
  707. --------------------------------------------------------------------------
  708. CHECK POINT 98h
  709.     Starting address of shutdown 0A
  710. Description:
  711.       * Issue a jump far instruction to the far pointer of 40:67 in the 
  712.         BIOS data area.
  713. --------------------------------------------------------------------------
  714. CHECK POINT 9Ch
  715.     Starting address of shutdown 0B
  716. Description:
  717.     * Turn off gate A20.
  718.     * Clear value of IDTR and set its limit to 3FFh.
  719.     * Issue a jump far instruction to the far pointer of 40:67 in the
  720.           BIOS data area.
  721.  
  722. --------------------------------------------------------------------------
  723.  
  724.  
  725.