home *** CD-ROM | disk | FTP | other *** search
/ Compu-Fix / Compu-Fix.iso / referenz / text / biosdiag.man < prev    next >
Encoding:
Text File  |  1993-03-01  |  31.6 KB  |  1,166 lines

  1.  
  2.  
  3.                   AMI BIOS POWER ON SELF TEST FUNCTIONS
  4.  
  5.  
  6.  
  7.  
  8.  
  9.           On cold boot or hard reset AMI BIOS performs system diagnostics
  10.           and initialization operations which can be broadly classified
  11.           into the following :
  12.  
  13.  
  14.                               Processor register test
  15.  
  16.                               ROM BIOS checksum check
  17.  
  18.                               Keyboard controller test
  19.  
  20.                               CMOS Shutdown register test
  21.  
  22.                               Channel 2,1,0 timer test
  23.  
  24.                               Memory refresh test
  25.  
  26.                               Base 64KB RAM test
  27.  
  28.                               CACHE memory test
  29.  
  30.                               CMOS battery, options set, checksum check
  31.  
  32.                               Display type verification
  33.  
  34.                               Entering protected mode
  35.  
  36.                               Address line test and memory size finding
  37.  
  38.                               Conventional and Extended memory test
  39.  
  40.                               DMA controller test
  41.  
  42.                               Keyboard test
  43.  
  44.                               System configuration verification and setup
  45.  
  46.  
  47.  
  48.  
  49. 1.0.1 Processor register test..
  50.  
  51. Procedure..
  52.  
  53. All processor registers are loaded with values 05555h, 0aaaah, 0cccch,
  54. 0f0f0h and checked if they retain the values.
  55.  
  56. Possible errors..
  57.  
  58. error:  Registers do not retain the values
  59. Action: 5 short beeps in an infinite loop. System does not
  60.         proceed further.
  61.  
  62. 1.0.2. ROM BIOS Checksum check..
  63.  
  64. Procedure..
  65.  
  66. Word addition of the BIOS ROM starting at F000:8000h till F000:FFFEh is
  67. taken. The word addition (checksum)  should be 0.
  68.  
  69. Possible errors..
  70.  
  71. error:  Checksum is nonzero
  72. action: 9 short beeps in an infinite loop. System does not
  73.         proceed further.
  74.  
  75. 1.0.3. Keyboard controller test..
  76.  
  77. A keyboard controller BAT command is issued(command 0AAH) and the
  78. response is checked. Response should be 55H.
  79.  
  80. Possible errors..
  81.  
  82. error:  Return value <> 55H
  83. action: 6 short beeps issued in an infinite loop. System does
  84.         not proceed any further.
  85.  
  86. 1.0.4. CMOS Shutdown register test..
  87.  
  88. Hex value 55h is written into and read back from CMOS shutdown register
  89. 8fh. The value read back should be 55h. The same test is then performed
  90. with a hex value 0AAh.
  91.  
  92. Possible errors..
  93.  
  94. error:  Values read back not same as values written.
  95. action: Error "CMOS INOPERATIONAL" is registered and the system
  96.         will stop after the display is initialized with the
  97.         above error displayed on the screen.
  98.  
  99.  
  100. 1.0.5. Channel 2,1,0 timer test..
  101.  
  102. A. Channel 2 timer test..
  103.  
  104. Procedure..
  105.  
  106. Channel 2 timer gate and speaker is disabled and the gate bit is verified to
  107. see if the gate is still disabled.
  108.  
  109. Channel 2 timer is programmed for 2 byte count. A test value of 55h is
  110. written to high byte and AAh to low byte of channel 2 timer. Since the
  111. timer gate is disabled it should retain these values.
  112.  
  113. Possible errors..
  114.  
  115. error:  channel 2 timer gate is still enabled
  116. action: Register "CH-2 timer error" to be displayed before
  117.         system boot.
  118.  
  119. error:  The channel 2 timer does not retain the 55h,AAh written
  120.         to it.
  121. action: Register "CH-2 timer error" to be displayed before
  122.                 system boot.
  123.  
  124. B. Channel 2, Channel 1 and Channel 0 delta count test..
  125.  
  126. Procedure..
  127.  
  128. Select channel 2 timer and load with count data 0ffh. Wait for a predefined
  129. time. Read channel 2 timer value and check if the difference between the
  130. data written and read is within the tolerance limit. If the operation is
  131. successful, try the same with count data 0cch.
  132.  
  133. Do the same operations on channel 1 and channel 0 timer in the same
  134. order.
  135.  
  136. Possible errors..
  137.  
  138. error:  Channel 2 timer is not counting at all
  139. action: Register "CH-2 timer error" to be displayed before
  140.                 system boot.
  141.  
  142. error:  Channel 2 timer in not counting properly. The delta
  143.                 diference is not within tolerence limit.
  144. action: Register "CH-2 timer error" to be displayed before
  145.                 system boot.
  146.  
  147. error:  Channel 1 timer is not counting at all.
  148. action: 4 beeps and system halted.
  149.  
  150.  
  151.  
  152. error: Channel 1 timer count is not within tolerence limit.
  153. action: 4 beeps and system halted.
  154.  
  155. error:  Channel 0 timer is not counting at all.
  156. action: 4 beeps and system halted.
  157.  
  158. error:  Channel 0 timer count is not within tolerence limit.
  159. action: 4 beeps and system halted.
  160.  
  161.  
  162. 1.0.6. Refresh test...
  163.  
  164. Procedure..
  165.  
  166. Enable channel 1 (Refresh) timer and channel 0 (System timer). Test refresh
  167. signal changing from low-to-high and high-to-low with time out count of
  168. 0ffffh.
  169.  
  170. Wait for refresh signal to be high. Use counter 1 to count till refresh
  171. becomes low. Use counter 2 to count till refresh becomes high. The
  172. difference between counter 1 and counter 2 should not be more than 6.
  173.  
  174. Possible errors...
  175.  
  176. error:  A time out has occured while testing refresh
  177.                 low-to-high and high-to-low.
  178. action: 1 beep in an infinite loop and system does not proceed
  179.                 further.
  180.  
  181. error:  The difference between counter 1 and counter 2 is more
  182.                 than 6.
  183. action: 1 beep in an infinite loop and the system does not
  184.                 proceed further.
  185.  
  186.  
  187. 1.0.7.Base 64KB RAM test...
  188.  
  189. Procedure...
  190.  
  191. On first 64kb of memory do a Address test, Sequential data write & read
  192. test, Random data write & read test. After all tests are over read the
  193. parity port for any parity error which could have occured during the tests.
  194.  
  195. Possible errors...
  196.  
  197. error:  Error in address line test
  198. action: 3 beeps in an infinite loop and system does not proceed
  199.                 further.
  200.  
  201. error:: Error in sequential data write & read test
  202. action: 3 beeps in an infinite loop and system does not proceed
  203.                 further.
  204.  
  205.  
  206. error: Error in random data write & read test.
  207. action: 3 beeps in an infinite loop and system does not proceed
  208.                 further.
  209.  
  210. error:  A parity error has occured during the tests.
  211. action: 3 beeps in an infinite loop ands the system does not
  212.                 proceed further.
  213.  
  214.  
  215. 1.0.8. Cache memory test...
  216.  
  217.  
  218. A. Check the presence of cache memory
  219.  
  220. Procedure..
  221.  
  222. Disable cache memory
  223.  
  224. Take timing to read 32kb memory 9 times and take the minimum value
  225.  
  226. Enable cache memory
  227.  
  228. Take timing to read 32kb memory 9 times and take the minimum value
  229.  
  230. If the minimum value of timing taken with cache on is greater than
  231. minimum value of timing taken with cache memory off, then indicate in
  232. global data area that cache memory is not present.
  233.  
  234. If cache memory is found present then with cache on test 32kb of memory.
  235.  
  236. Possible errors..
  237.  
  238. error:  Error in testing cache memory
  239. action: Register "CACHE MEMORY BAD, DO NOT ENABLE CACHE" error
  240.                 to be displayed on the screen.
  241.  
  242.  
  243. B. Test 64kb cache memory
  244.  
  245. Test 1st 32kb cache memory
  246.  
  247. Test 2nd 32kb cache memory
  248.  
  249. Possible errors..
  250.  
  251. error:  Error in either 1st or 2nd 32kb cache memory test.
  252. action: Disable cache and register "CACHE MEMORY BAD, DO NOT
  253.                 ENABLE CACHE" error to be displayed on the screen.
  254.  
  255. 1.0.9. CMOS battery, options and checksum check...
  256.  
  257. Read CMOS status register (8dh) and check if battery power is on.
  258.  
  259. Read CMOS diagnostic byte and check if CMOS options set.
  260.  
  261. If CMOS battery power is ok and options set then calculate CMOS
  262. checksum for CMOS registers 10h thru 2dh by a byte addition to a word
  263. result. Read the checksum word stored in registers 2eh and 2fh and
  264. compare it with the calculated checksum.
  265.  
  266. Possible errors..
  267.  
  268. error:  CMOS battery state is low error.
  269. action: Register "CMOS battery state low" error to be displayed before
  270.                 system boot.
  271.  
  272. error:  CMOS system options not set error.
  273. action: Register "CMOS system option not set" error to be displayed
  274.                 before system boot.
  275.  
  276. error:  CMOS checksum mismatch
  277. action: Register "CMOS checksum error" to be displayed before system
  278.                 boot.
  279.  
  280.  
  281. 1.0.10. Display type verification...
  282.  
  283. A. finding out Display type
  284.  
  285. Procedure..
  286.  
  287. Get display switch setting.
  288.  
  289. If display switch mono then segment b000h else segment b800h.
  290.  
  291. Do a display memory sequential write and read test on 4kb of memory.
  292.  
  293. If display memory write and read test ok then do a horizontal and vertical
  294. retrace test.
  295.  
  296. If memory test ok and all retrace test ok then leave the mode of display to
  297. what ever is tested and go to check CMOS display type.
  298.  
  299. If memory test error or any retrace test fails then try the other mode. In
  300. other words if you had color try mono and if you had mono try color.
  301.  
  302. Do a memory test with the new mode.
  303.  
  304. Do horizontal and vertical retrace with the new mode.
  305.  
  306. If memory test ok and all retrace tests ok then leave the mode of display
  307. to whatever is tested and go to check CMOS display type.
  308.  
  309. if memory test error or retrace test error with the new mode then give one
  310. long and 8 short beeps and continue after setting the final mode to mono.
  311.  
  312. Possible errors..
  313.  
  314. error: memory test error with new mode set
  315. action: 1 long beep and 8 short beeps
  316.  
  317. error:  retrace test failed with new mode
  318. action: 1 long beep and 8 short beeps.
  319.  
  320. B. Check CMOS display type and display switch setting
  321.  
  322. Check the final mode set after finding out display type with the display
  323. switch setting on the motherboard and the display type set in the CMOS by
  324. the user.
  325.  
  326. Possible errors..
  327.  
  328. error:  Display switch setting on mother board is not same as what BIOS
  329.                 finds out.
  330. action: Register "Display switch setting not proper" error to be displayed
  331.                 before system boot.
  332.  
  333. error:  Display type set in CMOS is different from what BIOS has found
  334.                 out.
  335. action: Register "CMOS display type mismatch" error to be displayed
  336. before
  337.                 system boot.
  338.  
  339.  
  340. 1.0.11. Entering protected mode...
  341.  
  342. Procedure..
  343.  
  344. Get into protected mode using BIOS interrupt 15h function 89h.
  345.  
  346. Possible errors..
  347.  
  348. error:  Processor not in protected mode
  349. action: Display "8042 GATE-A20 ERROR, SYSTEM HALTED"
  350.  
  351. error:  Virtual mode exception error
  352. action: 7 beeps in an infinite loop. System does not proceed
  353.                 further.
  354.  
  355. 1.0.12. Address line test and memory size finding..
  356.  
  357. Procedure..
  358.  
  359. Write a test pattern at 0:0h
  360.  
  361. Starting from bottom of the conventional memory space (640kb boundary) do
  362. a address line test 64kb at a time and come down till there is a segment
  363. where address line error is not found. That will be the bottom of the
  364. conventional memory.
  365.  
  366. Now read back the test pattern at 0:0h. This should be same as the test
  367. data written at 0:0h before the test was performed. If the test pattern at 0:0h is overwritten then there is a address line error because while doing
  368. address line test, the addresses are generated in such a way that only one
  369. bit is set in the address line everytime. If there is a failure in that bit of
  370. address line then the address generated will be 0. So the data written at
  371. that address will actually be written at 0:0h.
  372.  
  373. Write a test pattern at 0:0h.
  374.  
  375. Starting from the bottom of the Extended memory (16MB boundary) do a
  376. address line test till there is a segment where address line error is not
  377. found. That will be the bottom of extended memory.
  378.  
  379. Now read back the data at 0:0h. This should be same as the test data
  380. written at 0:0h before the test is peformed
  381.  
  382. Possible errors..
  383.  
  384. error:  Test data at 0:0h is destroyed while trying to find out
  385.                 the conventional memory size.
  386. action: 3 beeps in a loop and system does not proceed any
  387.                 further.
  388.  
  389. error:  Test data at 0:0h is destroyed while trying to find out
  390.                 the extended memory size.
  391. action: 3 beeps in an infinite loop and the system does not
  392.                 proceed further.
  393.  
  394.  
  395. 1.0.13. Conventional and Extended memory test..
  396.  
  397. Procedure..
  398.  
  399. Clear all the conventional memory 64kb at a time by filling it with 0.
  400.  
  401. Clear all Extended memory 64kb at a time by filling if with 0.
  402.  
  403.  
  404. Starting from 2nd 64kb in conventional memory space do the following 64kb
  405. at a time for the size of conventional memory found in step 13:-
  406.  
  407. IF <ESC> is pressed
  408.  
  409.         skip all test
  410.  
  411.         Fill the 64kb memory with 0.
  412.  
  413.         Go back to real mode
  414.  
  415.         Display memory size tested so far
  416.  
  417.         Go back to protected mode
  418.  
  419. ELSE
  420.  
  421.        Do a Sequential Write and Read test
  422.  
  423.         Do a Random Write and Read test
  424.  
  425.  
  426.         Check if Parity error is registered during any of the above
  427.         2 tests.
  428.  
  429.         Fill memory tested with 0
  430.  
  431.         Go back to real mode
  432.  
  433.         Display memory size tested so far
  434.  
  435.         Go back to protected mode
  436.  
  437. Starting from 1st 64kb in Extended memory space do the following 64kb at
  438. a time for the size of extended memory found in step 13:-
  439.  
  440. IF <ESC> is pressed
  441.  
  442.         Skip all test
  443.  
  444.         Fill the memory with 0.
  445.  
  446.         Go back to real mode
  447.  
  448.         Display memory size tested so far
  449.  
  450.         Go back to protected mode
  451.  
  452.  
  453. ELSE
  454.  
  455.         Do a Sequential Write and Read test
  456.  
  457.         Do a Random Write and Read test
  458.  
  459.         Check if parity error is registered during any of the above
  460.         2 tests.
  461.  
  462.         Fill memory tested with 0
  463.  
  464.         Get into real mode
  465.  
  466.         Display memory size tested so far
  467.  
  468.         Go back to protected mode
  469.  
  470. Possible errors...
  471.  
  472. error:  Memory Write and Read test error
  473. action: 1 long beep and 3 short beeps produced in the speaker.
  474.                 The memory size is trimmed to what ever was found good.
  475.  
  476.  
  477. error:  Parity error registered during Sequential and Random
  478.                 test on any 64kb segment.
  479. action: 1 long beep and 3 short beeps produced in the speaker.
  480.                 The memory size is trimmed to what ever was found good.
  481.  
  482. error:  Virtual mode exception error has occured
  483. action: 7 beeps in an infinite loop and system does not proceed
  484.                 further.
  485.  
  486.  
  487. 1.0.14. DMA Controller test
  488.  
  489. 4 different patterns are written into and read back from DMA page
  490. registers 80h thru 8fh. The data read back should be same as the data
  491. written. The data patterns used are aa55h,55aah,cc0fh,0000h.
  492.  
  493. The same patterns are then written into, read back from DMA unit 1
  494. registers 00 thru 07. The data read back should be same as the data
  495. written.
  496.  
  497. The same patterns are them written into, read back from DMA unit 2
  498. registers C0h thru C7h. The data read back should be same as the data
  499. written.
  500.  
  501. Possible errors...
  502.  
  503. error:  Any one of the DMA page registers did not retain the
  504.                 data.
  505. action: "DMA ERROR, SYSTEM HALTED"
  506.  
  507. error:  Any one of the DMA unit 1 registers did not retain the
  508.                 data.
  509. action: "DMA #1 ERROR, SYSTEM HALTED"
  510.  
  511. error:  Any one of the DMA unit 2 registers did not ratain the
  512.                 data.
  513. action: "DMA #2 ERROR, SYSTEM HALTED"
  514.  
  515.  
  516. 1.0.15. Keyboard test
  517.  
  518. Procedure..
  519.  
  520. Output keyboard self test command 0ffh. The keyboard should return 0fah
  521. and 0aah.
  522.  
  523. If the data returned is 0fah and 0aah then check if any key is stuck on
  524. the keyboard. This is done by enabling keyboard enable bit, inhibit bit, sys
  525. bit, output buffer full bit and then checking for output buffer full bit going
  526. low.
  527.  
  528.  
  529.  
  530. If any error occured during the above two tests, keyboard interface test is
  531. performed. This is done by writing command 0abh to keyboard controller
  532. and reading the response. The response should be 00h.
  533.  
  534. Possible errors..
  535.  
  536. error:  Keyboard self test command failed but the keyboard
  537.                 interface test command was successful.
  538. action: Register soft error "Keyboard error" to be displayed
  539.                 before system boot.
  540.  
  541. error:  Keyboard self test command passed, keyboard was found
  542.                 to be stuck and keyboard interface command passed.
  543. action: Register soft error "Keyboard error" to be displayed
  544.                 before system boot.
  545.  
  546. error:  Keyboard self test command failed or keyboard was found
  547.                 stuck and the keyboard interface command failed.
  548. action: Register "KB/Interface error" to be displayed before
  549.                 system boot.
  550.  
  551. 1.0.16. System configuration verification and setup
  552.  
  553. A. Floppy disk setup..
  554.  
  555. Procedure..
  556.  
  557. Initialize floppy global data area.
  558.  
  559. reset floppy controller.
  560.  
  561. For floppy drive 0 and 1 try to find out the presence of the drive and then
  562. sense the drive type in the following manner:-
  563.  
  564.         Seek to track 48
  565.  
  566.         Seek backwards till track 0
  567.  
  568.         If seek to track 0 is not successful then it is a 40 track
  569.         drive which is 360kb. So set global as 360kb disk type.
  570.  
  571.         If seek to track 0 is successful, it is a 80 track drive so
  572.         check CMOS for type of drive selected through the SETUP
  573.         program.
  574.  
  575.         For 720kb drive set 720kb disk type in global.
  576.  
  577.         If 1.2mb or 1.44mb in CMOS, then set 2 or 7 respectively in
  578.         the global which means that media has to be established for
  579.         these drives every time a new disk is put in. This is
  580.         necessary because a 1.2mb drive can take 1.2mb or 360kb disk
  581.         and a 1.44mb drive can take either 720kb or 1.44mb disk.
  582.  
  583.  
  584.  
  585. Possible errors...
  586.  
  587. error:  Reset floppy controller failure
  588. action: Register "FDD controller failure" error to be displayed
  589.                 before system boot.
  590.  
  591. B. Hard disk Setup
  592.  
  593. Procedure..
  594.  
  595. Reset hard disk controller.
  596.  
  597. If CMOS bad or no drive type set, skip hard disk check otherwise do hard
  598. disk tests in following manner:-
  599.  
  600. Redirect Int 13h to Int 40h for floppy and point Int 13h to hard disk
  601. routines.
  602.  
  603. Depending upon the CMOS Drive type value, point Int 41h and Int 46h
  604. vectors to ROM drive type parameters for drive C and D respectively.
  605.  
  606. Initialize the global data area for hard disks.
  607.  
  608. Issue controller diagnostics command for the hard disk controller.
  609.  
  610. Set parameters from drive type table for drive 0 and recalibrate on drive 0
  611. if CMOS type is set for drive 0.
  612.  
  613. Set parameters from drive type table for drive 1 and recalibrate on drive 1
  614. if CMOS type is set for for drive 1.
  615.  
  616. For drive 0, if CMOS type is set, do verify on each sector in the last
  617. track. At least one of the sectors in the last track should verify ok.
  618.  
  619. For drive 1, if CMOS isset, do verify on each sector in the last track. At
  620. least one of the sectors in the last track should verify ok.
  621.  
  622. Possible errors..
  623.  
  624. error:  Hard disk controller diagnostics failed
  625. action: Register "HDD controller error" to be displayed before
  626.                 system boot.
  627.  
  628. error:  Recalibrate on drive 0 failed.
  629. action: Register "C:Drive failure" error to be displayed before
  630.                 system boot.
  631.  
  632. error:: Recalibrate on drive 1 failed.
  633. action: Register "D:Drive failure" error to be displayed before
  634.                 system boot.
  635.  
  636.  
  637.  
  638. error:  None of the sectors in last track on drive 0 verified
  639.                 ok.
  640. action: Register "C:Drive error" error to be displayed before
  641.                 system boot.
  642.  
  643. error:  None of the sectors in last track on drive 1 verified
  644.                 ok.
  645. action: Register "D:Drive error" error to be displayed before
  646.                 system boot.
  647.  
  648.  
  649. C. Memory size verification
  650.  
  651. Procedure...
  652.  
  653. If CMOS battery state is ok and CMOS checksum is ok then do the
  654. following:-
  655.  
  656. Check Conventional memory size in CMOS with actual memory size found
  657. out by BIOS.
  658.  
  659. Check Extended memory size in CMOS with actual extended memory size
  660. found by BIOS.
  661.  
  662. Possible errors..
  663.  
  664. error:: Actual conventional memory size found by BIOS is not
  665.                 same as memory size stored in CMOS.
  666. action: Register "CMOS memory size mismatch" error to be
  667.                 displayed before system boot.
  668.  
  669. error:  Actual extended memory size found by BIOS is different
  670.                 from memory size stored in CMOS.
  671. action: Register "CMOS memory size mismatch" error to be
  672.                 displayed before system boot.
  673.  
  674.  
  675. D. Optional ROM control
  676.  
  677. Procedure..
  678.  
  679. Start from segment C800h segment and continue with an increment of 80h
  680. till E000h segment with the following operation:-
  681.  
  682. Check if word at offset 0 is 0aa55h.
  683.  
  684. If word at offset 0 is 0aa55h then do the following:-
  685.  
  686. Take the size of the ROM from offset 2. The size should be # of 512 bytes
  687. in the optional ROM. Now calculate the checksum of the ROM by adding all
  688. the bytes. The checksum should be 0. If the checksum is 0 then give
  689. control to the optional ROM at offset 3
  690. by a FAR CALL.
  691.  
  692. E. Initialize Timer data area
  693.  
  694. Procedure..
  695.  
  696. Check if CMOS battery state ok and CMOS checksum ok. If both of them
  697. are ok then do the following:-
  698.  
  699. Read real time clock through BIOS interrupt routine 1Ah. Compare the
  700. hour, minute and second BCD values to find if they are within limit. Hour
  701. should be <=24, Minute<=60 and second<=60. If they are within limit then
  702. change them from BCD to Binary value and in terms 1/18th of a second.
  703. Save them in timer data area which is 2 words and is used by the timer
  704. routine to update the count in every 1/18th of a second.
  705.  
  706. Possible errors..
  707.  
  708. error:  Error returned by int 1Ah function.
  709. action: Register "CMOS time & date not set" to be displayed
  710.                 before system boot.
  711.  
  712. error:  Hour, minute and seconds not within limit.
  713. action: Register "CMOS time & date not set" error to be
  714.                 displayed before system boot.
  715.  
  716.  
  717. E. Setup Printer and RS232 Ports
  718.  
  719. Procedure..
  720.  
  721. Check for presence of printer ports 03bch, 0378h, 0278h by a port pattern
  722. test. In the port pattern test write values 0aa55h, 55aah, cc00h,0000h to
  723. these ports in these order and read them back after writing to check if
  724. they retain the values. For the ports that retain the values, add them to
  725. the system data area starting at 40h:8.
  726.  
  727. Check for presence of RS232 ports 03f8h, 02f8h, 03e8h, 02e8h in the same
  728. way as above and add them to the system data area at 40h:0.
  729.  
  730. F. Check for Keyboard lock
  731.  
  732. Procedure..
  733.  
  734. Read keyboard status port and check the keyboard lock bit.
  735.  
  736. Possible errors..
  737.  
  738. error:  Keyboard is locked
  739. action: Register "Keyboard is locked" error to be displayed
  740.                 before system boot.
  741.  
  742. G. Display all error messages
  743.  
  744. H. System ROM control
  745.  
  746. Procedure..
  747.  
  748. Check for System ROM at segment e000h in following manner:-
  749.  
  750. Check if at offset 0 the word value is 0aa55h. If the value is 0aa55h then
  751. calculate a byte checksum for 64kb by adding all bytes. The checksum
  752. should be 0. If the checksum is zero then give control to the optional ROM
  753. at offset 3.
  754.  
  755.  
  756.  
  757.  
  758. 2.0 Classification of error messages..
  759.  
  760. The error messages can be classified into 4 diferent categories
  761.  
  762.                 Fatal errors through beeps
  763.  
  764.                 Fatal errors through display
  765.  
  766.                 Non fatal errors through beeps
  767.  
  768.                 Non fatal errors through display
  769.  
  770. 2.1 Fatal errors through beeps..
  771.  
  772. The fatal errors through beeps are conveyed through a number of beeps in
  773. an infinite process and there is enough time gap between tow subsequent
  774. sets of error beeps to calculate the number in each set.
  775.  
  776. 2.1.1 One beep (DRAM Refresh failure)
  777.  
  778. Occurrence..
  779.  
  780.         Refresh test
  781.  
  782. 2.1.2 Three beeps (Base 64kb RAM failure)
  783.  
  784. Occurrence..
  785.  
  786.         Base 64kb RAM test
  787.  
  788.         Address test and memory size finding
  789.  
  790. 2.1.3 Four beeps (System timer failure)
  791.  
  792. Occurrence..
  793.  
  794.         Channel 1 timer test
  795.  
  796.         Channel 0 timer test
  797.  
  798. 2.1.4 Five beeps (Processor failure)
  799.  
  800. Occurrence..
  801.  
  802.         Processor register test
  803.  
  804. 2.1.5 Six beeps (Keyboard controller Gate A20 error)
  805.  
  806. Occurrence..
  807.  
  808.         Keyboard controller test
  809.  
  810.  
  811. 2.1.6 Seven beeps (Virtual mode exception error)
  812.  
  813. Occurrence..
  814.  
  815.         Getting into protected mode
  816.  
  817.         Conventional and Extended memory test
  818.  
  819.  
  820. 2.1.7 Nine beeps (ROM BIOS Checksum failure)
  821.  
  822. Occurrence..
  823.  
  824.         ROM BIOS Checksum check
  825.  
  826.  
  827. 2.2 Fatal errors through display..
  828.  
  829. When these errors are displayed the screen is cleared and after the error
  830. message display is also followed by a line saying "SYSTEM HALTED"
  831.  
  832. 2.2.1 CMOS INOPERATIONAL
  833.  
  834. Occurrence..
  835.  
  836.         CMOS Shutdown register test
  837.  
  838. 2.2.2 8042 GATE-A20 ERROR
  839.  
  840. Occurrence..
  841.  
  842.         Getting into protected mode
  843.  
  844. 2.2.3 INVALID SWITCH MEMORY FAILURE
  845.  
  846. 2.2.4 DMA ERROR
  847.  
  848. Occurrence..
  849.  
  850.         DMA Controller page register test
  851.  
  852. 2.2.5 DMA #1 ERROR
  853.  
  854. Occurrence..
  855.  
  856.         DMA Unit 1 register test
  857.  
  858. 2.2.6 DMA #2 ERROR
  859.  
  860. Occurrence..
  861.  
  862.         DMA Unit 2 register test
  863.  
  864.  
  865. 2.3 Non fatal errors through beeps..
  866.  
  867. These errors are displayed as one long beep following by a number of short
  868. beeps and the system proceeds normally.
  869.  
  870. 2.3.1 One long and 3 short beeps
  871.  
  872. Occurrence..
  873.  
  874.         Conventional and Extended memory test
  875.  
  876. 2.3.2 One long and eight short beeps
  877.  
  878. Occurrence..
  879.  
  880.         Display RAM test and display vertical and horizontal retrace test.
  881.  
  882. 2.4 Non fatal errors through display..
  883.  
  884. These types of errors are classified into 2 categories.
  885.  
  886.         Ones that wait for F1 key and give the option to run SETUP
  887.  
  888.         Ones that wait for F1 key but do not give option to run SETUP
  889.  
  890. 2.4.1 Errors waiting fot F1 key and giving option to run SETUP
  891.  
  892. 2.4.1.1 CMOS battery state low
  893.  
  894. Ouucrrence..
  895.  
  896.         CMOS battery, options set and checksum test
  897.  
  898. 2.4.1.2 CMOS system options not set
  899.  
  900. Occurrence..
  901.  
  902.         CMOS battery, options set and checksum test
  903.  
  904. 2.4.1.3 CMOS ckecksum failure
  905.  
  906. Occurrence..
  907.  
  908.         CMOS battery, options set and checksum test
  909.  
  910. 2.4.1.4 CMOS display type mismatch
  911.  
  912. Occurrence..
  913.  
  914.         Display type verification
  915.  
  916. 2.4.1.5 CMOS memory size mismatch
  917.  
  918. Occurrence..
  919.  
  920.         System Configuration verification and setup (Memory size verification)
  921.  
  922. 2.4.1.6 CMOS time & date not set
  923.  
  924. Occurrence..
  925.  
  926.         System configuration verification and setup (Init timer data)
  927.  
  928.  
  929. 2.4.1.7 C:Drive failure
  930.  
  931. Occurrence..
  932.  
  933.         System configuration verification and setup (Hard disk setup)
  934.  
  935. 2.4.2 Errors waiting for F1 key and not giving the option to run SETUP
  936.  
  937. 2.4.2.1 CH-2 timer error
  938.  
  939. Occurrence..
  940.  
  941.         Channel 2,1,0 timer test
  942.  
  943. 2.4.2.2 Keyboard error
  944.  
  945. Occurrence..
  946.  
  947.         Keyboard test
  948.  
  949. 2.4.2.3 KB/Interface error
  950.  
  951. Occurrence..
  952.  
  953.         Keyboard test
  954.  
  955. 2.4.2.4 Display switch setting not proper
  956.  
  957. Occurrence..
  958.  
  959.         Display type verification
  960.  
  961.  
  962. 2.4.2.5 Keyboard is locked ... Unlock it
  963.  
  964. Occurrence..
  965.  
  966.         System configuration verification and setup (Keyboard lock check)
  967.  
  968. 2.4.2.6 FDD controller error
  969.  
  970. Occurrence..
  971.  
  972.        System configuration verification and setup (floppy disk setup)
  973.  
  974. 2.4.2.7 HDD controller failure
  975.  
  976. Occurrence..
  977.  
  978.         System configuration verification and setup (Hard disk setup)
  979.  
  980. 2.4.2.8 C:Drive error
  981.  
  982. Occurrence..
  983.  
  984.         System configuration verification and setup (Hard disk setup)
  985.  
  986.  
  987. 2.4.2.9 D:Drive error
  988.  
  989. Occurrence..
  990.  
  991.         System configuration verification and setup (Hard disk setup)
  992.  
  993.  
  994. 2.4.2.10 D:Drive failure
  995.  
  996. Occurrence..
  997.  
  998.         System configuration verification and setup (Hard disk setup)
  999.  
  1000.  
  1001. Appendix A
  1002.  
  1003.  
  1004. Address line test procedure
  1005.  
  1006.  
  1007. For the 64kb of memory on test, write and then read data patterns 0ffh
  1008. and 00h at addresses 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096,
  1009. 8192, 16384, 32768. The data read back should be same as that written.
  1010.  
  1011. Sequential memory Write and Read test
  1012.  
  1013. For the 64kb of memory on test, use test patterns 8080h, 5555h, 3333h,
  1014. 0f0fh in the same order.
  1015.  
  1016. Take one pattern and write it on the entire 64kb space one word at a time.
  1017. Then compare the 64k space one word at a time with the value written. If
  1018. any word does not retain the value then return error.
  1019.  
  1020.  
  1021. Random memory Write and Read test
  1022.  
  1023. Use a random number generator which generates 16k of random numbers as
  1024. memory addresses and returns a seed between 0 to ffh associated with each
  1025. random addresses generated.
  1026.  
  1027. Use the random number generator again and read the data from the random
  1028. address.  The data read back should be same as the seed returned by the
  1029. random number generator. In short, the BIOS checks wheather the data
  1030. written in 16k random addresses are retained in those memory locations.
  1031.  
  1032. The random number generator procedure is written in such a way that it
  1033. generates the same sequence of random numbers in the same order every
  1034. time it is called and it also returns a unique seed associated with each
  1035. random number.
  1036.  
  1037.  
  1038.  
  1039. Appendix B
  1040.  
  1041. CMOS RAM USAGE IN AMI MARK II AT BIOS
  1042.  
  1043. -------------------------------------------------------------------------
  1044. Address         Description
  1045.  
  1046. -------------------------------------------------------------------------
  1047. 00-0D   *Real-time clock information
  1048. 0E              *Diagnostics status byte
  1049. 0F              *Shutdown status byte
  1050. 10              Diskett drive type byte - drives A and B
  1051. 11              Reserved
  1052. 12              Fixed disk type byte - drives C and D (1 - 14)
  1053. 13              Reserved
  1054. 14              Equipment byte
  1055. 15              Base memory byte LOW
  1056. 16              Base memory byte HIGH
  1057. 17              Expansion memory byte LOW
  1058. 18              Expansion memory byte HIGH
  1059. 19              Extended fixed disk type - drive C (16 - 255)
  1060. 1A              Extended fixed disk type - drive D (16 - 255)
  1061. 1B-2C!! User defined drive type
  1062. 2D              Reserved
  1063. 2E-2F   2 - byte CMOS Checksum
  1064. 30              *Expansion memory size LOW
  1065. 31              *Expansion memory size HIGH
  1066. 32              *Date century byte
  1067. 33              *Information flags (set during power on)
  1068. 34-36   Reserved
  1069. 37 !!   Video and Keyboard installation information
  1070. 38 !!   Video shadow and memory information
  1071. 39-3A!! Segment value for scratch memory used by BIOS for Load all
  1072.                 translation.
  1073. 3B-3F   Reserved
  1074. ------------------------------------------------------------------------
  1075.  
  1076. *These bytes are not included in the checksum calculation and are not part
  1077. of the configuration record.
  1078.  
  1079. !! These are extra bytes used by AMI BIOS.
  1080.  
  1081. Bytes 1B - 2C (Is used by AMI BIOS released after March 1989)
  1082. _____________________________________________
  1083.  
  1084. These bytes will store user defined drive types in following format.
  1085.  
  1086. Drive C User defined type
  1087.  
  1088. 1B,1C           Number of cylinders
  1089. 1D                      Number of heads
  1090.  
  1091. 1E,1F           Write precom
  1092.  
  1093. 20                      Control byte
  1094. 21,22           Landing zone
  1095. 23                      Number of sectors
  1096.  
  1097. Drive D User defined type
  1098.  
  1099. 24,25           Number of cylinders
  1100. 26                      Number of heads
  1101. 27,28           Write precom
  1102. 29                      Control byte
  1103. 2A,2B           Landing zone
  1104. 2C                      Number of sectors
  1105.  
  1106.  
  1107. Byte 37
  1108. _____
  1109.  
  1110.  
  1111. Bit 0           This bit has meaning only in BIOS released after March
  1112. 1989.
  1113.                         1=Test keyboard
  1114.                         0=Do not test keyboard
  1115.  
  1116. Bit 1           This bit has meaning only in BIOS released after March
  1117. 1989.
  1118.                         1=Test Video
  1119.                         0=Don not test Video
  1120.  
  1121. Bit 2           Current status of keyboard controller pin 23.
  1122.  
  1123. Bit 3           Current Status of Keyboard controller pin 24.
  1124.  
  1125. Bit 4-7         Not used
  1126.  
  1127. Byte 38
  1128. _____
  1129.  
  1130. Bit 0-2         Not used
  1131.  
  1132. Bit 3           1="INS" key has been pressed
  1133.                         0="INS" key not pressed
  1134.  
  1135. Bit 4           1=Weitek co-processor present
  1136.                         0=Weitek co-processor absent
  1137.  
  1138. Bit 5           1=Enable Video shadow
  1139.                         0=Disable video shadow
  1140.  
  1141. Bit 6           1=Relocate 256k memory
  1142.                         0=Do not relocate 256k memory
  1143.  
  1144. Bit 7           1=32-bit memory card installed
  1145.                         0=32-bit memory card not installed
  1146.  
  1147.  
  1148.  
  1149. Byte 39-3A
  1150. ________
  1151.  
  1152. These bytes are used to save the segment value of the memory BIOS is
  1153. going to use for Load all function translation. For MARK II AT Board this
  1154. actually points to BIOS area because BIOS Shadow RAM is enabled.
  1155.  
  1156.  
  1157.  
  1158.                   ------------------- END -------------------
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.