5877 lines
255 KiB
HTML
5877 lines
255 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
|
||
<meta name=Generator content="Microsoft Word 14 (filtered)">
|
||
|
||
<style>
|
||
<!--
|
||
/* Font Definitions */
|
||
@font-face
|
||
{font-family:Helvetica;
|
||
panose-1:2 11 6 4 2 2 2 2 2 4;}
|
||
@font-face
|
||
{font-family:Courier;
|
||
panose-1:2 7 4 9 2 2 5 2 4 4;}
|
||
@font-face
|
||
{font-family:"Tms Rmn";
|
||
panose-1:2 2 6 3 4 5 5 2 3 4;}
|
||
@font-face
|
||
{font-family:Helv;
|
||
panose-1:2 11 6 4 2 2 2 3 2 4;}
|
||
@font-face
|
||
{font-family:"New York";
|
||
panose-1:2 4 5 3 6 5 6 2 3 4;}
|
||
@font-face
|
||
{font-family:System;
|
||
panose-1:0 0 0 0 0 0 0 0 0 0;}
|
||
@font-face
|
||
{font-family:Wingdings;
|
||
panose-1:5 0 0 0 0 0 0 0 0 0;}
|
||
@font-face
|
||
{font-family:"MS Mincho";
|
||
panose-1:2 2 6 9 4 2 5 8 3 4;}
|
||
@font-face
|
||
{font-family:Batang;
|
||
panose-1:2 3 6 0 0 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:ËÎÌå;
|
||
panose-1:2 1 6 0 3 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:PMingLiU;
|
||
panose-1:2 2 5 0 0 0 0 0 0 0;}
|
||
@font-face
|
||
{font-family:"MS Gothic";
|
||
panose-1:2 11 6 9 7 2 5 8 2 4;}
|
||
@font-face
|
||
{font-family:Dotum;
|
||
panose-1:2 11 6 0 0 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:ºÚÌå;
|
||
panose-1:2 1 6 9 6 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:MingLiU;
|
||
panose-1:2 2 5 9 0 0 0 0 0 0;}
|
||
@font-face
|
||
{font-family:Mincho;
|
||
panose-1:2 2 6 9 4 3 5 8 3 5;}
|
||
@font-face
|
||
{font-family:Gulim;
|
||
panose-1:2 11 6 0 0 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:Century;
|
||
panose-1:2 4 6 4 5 5 5 2 3 4;}
|
||
@font-face
|
||
{font-family:"Angsana New";
|
||
panose-1:2 2 6 3 5 4 5 2 3 4;}
|
||
@font-face
|
||
{font-family:"Cordia New";
|
||
panose-1:2 11 3 4 2 2 2 2 2 4;}
|
||
@font-face
|
||
{font-family:Mangal;
|
||
panose-1:2 4 5 3 5 2 3 3 2 2;}
|
||
@font-face
|
||
{font-family:Latha;
|
||
panose-1:2 11 6 4 2 2 2 2 2 4;}
|
||
@font-face
|
||
{font-family:Sylfaen;
|
||
panose-1:1 10 5 2 5 3 6 3 3 3;}
|
||
@font-face
|
||
{font-family:Vrinda;
|
||
panose-1:2 11 5 2 4 2 4 2 2 3;}
|
||
@font-face
|
||
{font-family:Raavi;
|
||
panose-1:2 11 5 2 4 2 4 2 2 3;}
|
||
@font-face
|
||
{font-family:Shruti;
|
||
panose-1:2 11 5 2 4 2 4 2 2 3;}
|
||
@font-face
|
||
{font-family:Sendnya;
|
||
panose-1:0 0 4 0 0 0 0 0 0 0;}
|
||
@font-face
|
||
{font-family:Gautami;
|
||
panose-1:2 11 5 2 4 2 4 2 2 3;}
|
||
@font-face
|
||
{font-family:Tunga;
|
||
panose-1:2 11 5 2 4 2 4 2 2 3;}
|
||
@font-face
|
||
{font-family:"Estrangelo Edessa";
|
||
panose-1:3 8 6 0 0 0 0 0 0 0;}
|
||
@font-face
|
||
{font-family:"Cambria Math";
|
||
panose-1:2 4 5 3 5 4 6 3 2 4;}
|
||
@font-face
|
||
{font-family:"Arial Unicode MS";
|
||
panose-1:2 11 6 4 2 2 2 2 2 4;}
|
||
@font-face
|
||
{font-family:Cambria;
|
||
panose-1:2 4 5 3 5 4 6 3 2 4;}
|
||
@font-face
|
||
{font-family:Calibri;
|
||
panose-1:2 15 5 2 2 2 4 3 2 4;}
|
||
@font-face
|
||
{font-family:·½ÕýС±êËμòÌå;}
|
||
@font-face
|
||
{font-family:"\@ºÚÌå";
|
||
panose-1:2 1 6 9 6 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:"\@ËÎÌå";
|
||
panose-1:2 1 6 0 3 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:"\@·½ÕýС±êËμòÌå";}
|
||
/* Style Definitions */
|
||
p.MsoNormal, li.MsoNormal, div.MsoNormal
|
||
{margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
h1
|
||
{mso-style-link:"±êÌâ 1 Char";
|
||
margin-top:17.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:16.5pt;
|
||
margin-left:7.2pt;
|
||
text-align:center;
|
||
text-indent:-7.2pt;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
h2
|
||
{mso-style-link:"±êÌâ 2 Char";
|
||
margin-top:13.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:13.0pt;
|
||
margin-left:0cm;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:0cm;
|
||
page-break-after:avoid;
|
||
font-size:16.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
h3
|
||
{mso-style-link:"±êÌâ 3 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:0cm;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
h4
|
||
{mso-style-link:"±êÌâ 4 Char";
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:28.8pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-28.8pt;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
h5
|
||
{mso-style-link:"±êÌâ 5 Char";
|
||
margin-top:14.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:14.5pt;
|
||
margin-left:36.0pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-36.0pt;
|
||
line-height:156%;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
h6
|
||
{mso-style-link:"±êÌâ 6 Char";
|
||
margin-top:12.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:3.2pt;
|
||
margin-left:43.2pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-43.2pt;
|
||
line-height:133%;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
|
||
{mso-style-link:"±êÌâ 7 Char";
|
||
margin-top:12.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:3.2pt;
|
||
margin-left:50.4pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-50.4pt;
|
||
line-height:133%;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
|
||
{mso-style-link:"±êÌâ 8 Char";
|
||
margin-top:12.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:3.2pt;
|
||
margin-left:57.6pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-72.0pt;
|
||
line-height:133%;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
|
||
{mso-style-link:"±êÌâ 9 Char";
|
||
margin-top:12.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:3.2pt;
|
||
margin-left:64.8pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-79.2pt;
|
||
line-height:133%;
|
||
page-break-after:avoid;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.MsoIndex1, li.MsoIndex1, div.MsoIndex1
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:10.5pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoIndex2, li.MsoIndex2, div.MsoIndex2
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoIndex3, li.MsoIndex3, div.MsoIndex3
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:31.5pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoIndex4, li.MsoIndex4, div.MsoIndex4
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:42.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoIndex5, li.MsoIndex5, div.MsoIndex5
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:52.5pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoIndex6, li.MsoIndex6, div.MsoIndex6
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:63.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoIndex7, li.MsoIndex7, div.MsoIndex7
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:73.5pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoIndex8, li.MsoIndex8, div.MsoIndex8
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:84.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoIndex9, li.MsoIndex9, div.MsoIndex9
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:94.5pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoToc1, li.MsoToc1, div.MsoToc1
|
||
{margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.MsoToc2, li.MsoToc2, div.MsoToc2
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoToc3, li.MsoToc3, div.MsoToc3
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:42.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoToc4, li.MsoToc4, div.MsoToc4
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:31.5pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoToc5, li.MsoToc5, div.MsoToc5
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:42.0pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoToc6, li.MsoToc6, div.MsoToc6
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:52.5pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoToc7, li.MsoToc7, div.MsoToc7
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:63.0pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoToc8, li.MsoToc8, div.MsoToc8
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:73.5pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoToc9, li.MsoToc9, div.MsoToc9
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:84.0pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
|
||
{mso-style-link:"½Å×¢Îı¾ Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
layout-grid-mode:char;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoCommentText, li.MsoCommentText, div.MsoCommentText
|
||
{mso-style-link:"Åú×¢ÎÄ×Ö Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoHeader, li.MsoHeader, div.MsoHeader
|
||
{mso-style-link:"ҳü Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
layout-grid-mode:char;
|
||
border:none;
|
||
padding:0cm;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoFooter, li.MsoFooter, div.MsoFooter
|
||
{mso-style-link:"Ò³½Å Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
layout-grid-mode:char;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoIndexHeading, li.MsoIndexHeading, div.MsoIndexHeading
|
||
{mso-style-name:"Ë÷Òý±êÌâ\,Ë÷ÒýÀàÄ¿\,Ë÷ÒýÀàÄ¿1\,Ë÷ÒýÀàÄ¿2";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoCaption, li.MsoCaption, div.MsoCaption
|
||
{margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.MsoTof, li.MsoTof, div.MsoTof
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:42.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-21.0pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.MsoFootnoteReference
|
||
{vertical-align:super;}
|
||
p.MsoList, li.MsoList, div.MsoList
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoList2, li.MsoList2, div.MsoList2
|
||
{margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoList4, li.MsoList4, div.MsoList4
|
||
{margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.MsoDate, li.MsoDate, div.MsoDate
|
||
{mso-style-link:"ÈÕÆÚ Char";
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:5.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
a:link, span.MsoHyperlink
|
||
{mso-style-name:"³¬Á´½Ó\,³¬¼¶Á´½Ó";
|
||
color:blue;
|
||
text-decoration:underline;}
|
||
a:visited, span.MsoHyperlinkFollowed
|
||
{color:purple;
|
||
text-decoration:underline;}
|
||
p
|
||
{mso-style-name:"ÆÕͨ\(ÍøÕ¾\)\,ÆÕͨ \(Web\)\,ÆÕͨ \(Web\)1\,ÆÕͨ \(Web\)2\,ÆÕͨ \(Web\)3";
|
||
margin-right:0cm;
|
||
margin-left:0cm;
|
||
font-size:12.0pt;
|
||
font-family:ËÎÌå;}
|
||
pre
|
||
{mso-style-name:"HTML Ô¤Éè¸ñʽ\,HTML Ô¤Ïȸñʽ»¯\,HTML Ô¤Ïȸñʽ»¯1\,HTML Ô¤Ïȸñʽ»¯2\,HTML Ô¤Ïȸñʽ»¯3";
|
||
mso-style-link:"HTML Ô¤Éè¸ñʽ Char\,HTML Ô¤Ïȸñʽ»¯ Char\,HTML Ô¤Ïȸñʽ»¯1 Char\,HTML Ô¤Ïȸñʽ»¯2 Char\,HTML Ô¤Ïȸñʽ»¯3 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:12.0pt;
|
||
font-family:ËÎÌå;}
|
||
tt
|
||
{font-family:ºÚÌå;}
|
||
p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
|
||
{mso-style-link:"Åú×¢Ö÷Ìâ Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
|
||
{mso-style-link:"Åú×¢¿òÎı¾ Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.1, li.1, div.1
|
||
{mso-style-name:Ñùʽ1;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.a, li.a, div.a
|
||
{mso-style-name:´úÂë³ÌÐò;
|
||
mso-style-link:"´úÂë³ÌÐò Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.0pt;
|
||
font-family:ËÎÌå;}
|
||
span.Char
|
||
{mso-style-name:"´úÂë³ÌÐò Char";
|
||
mso-style-link:´úÂë³ÌÐò;
|
||
font-family:ËÎÌå;}
|
||
p.a0, li.a0, div.a0
|
||
{mso-style-name:ͼ˵Ã÷;
|
||
mso-style-link:"ͼ˵Ã÷ Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.Char0
|
||
{mso-style-name:"ͼ˵Ã÷ Char";
|
||
mso-style-link:ͼ˵Ã÷;
|
||
font-family:ËÎÌå;}
|
||
p.0, li.0, div.0
|
||
{mso-style-name:·âÃæ0;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:36.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.10, li.10, div.10
|
||
{mso-style-name:·âÃæ1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:18.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.11, li.11, div.11
|
||
{mso-style-name:·Ç±êÌâ1;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.a1, li.a1, div.a1
|
||
{mso-style-name:Îı¾¾ÓÖÐ;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.3CharChar, li.3CharChar, div.3CharChar
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char";
|
||
mso-style-link:"ͼÖÐÎÄ×Ö3 Char Char Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:ËÎÌå;}
|
||
span.3CharCharChar
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char Char";
|
||
mso-style-link:"ͼÖÐÎÄ×Ö3 Char Char";
|
||
font-family:ËÎÌå;}
|
||
p.post, li.post, div.post
|
||
{mso-style-name:Óʼþpost;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:right;
|
||
line-height:11.0pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.3, li.3, div.3
|
||
{mso-style-name:ͼÖÐ×ÖÌå3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.3CharChar1CharCharChar
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char1 Char Char Char";
|
||
font-family:ËÎÌå;}
|
||
span.3CharChar1CharChar
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char1 Char Char";
|
||
font-family:ËÎÌå;}
|
||
p.5Char, li.5Char, div.5Char
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö5ºÅ Char";
|
||
mso-style-link:"ͼÖÐÎÄ×Ö5ºÅ Char Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.5CharChar
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö5ºÅ Char Char";
|
||
mso-style-link:"ͼÖÐÎÄ×Ö5ºÅ Char";
|
||
font-family:ËÎÌå;}
|
||
p.5CharChar0, li.5CharChar0, div.5CharChar0
|
||
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char Char";
|
||
mso-style-link:"ͼÖÐÎÄ×ÖС5ºÅ Char Char Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
span.5CharCharChar
|
||
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char Char Char";
|
||
mso-style-link:"ͼÖÐÎÄ×ÖС5ºÅ Char Char";
|
||
font-family:ËÎÌå;}
|
||
p.5Char0, li.5Char0, div.5Char0
|
||
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.5, li.5, div.5
|
||
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
layout-grid-mode:char;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.2, li.2, div.2
|
||
{mso-style-name:´úÂë³ÌÐò2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.20, li.20, div.20
|
||
{mso-style-name:ͼ˵Ã÷2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.21, li.21, div.21
|
||
{mso-style-name:Îı¾¾ÓÖÐ2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.3CharCharCharCharChar, li.3CharCharCharCharChar, div.3CharCharCharCharChar
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char Char Char Char";
|
||
mso-style-link:"ͼÖÐÎÄ×Ö3 Char Char Char Char Char Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:ËÎÌå;}
|
||
span.3CharCharCharCharCharChar
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char Char Char Char Char";
|
||
mso-style-link:"ͼÖÐÎÄ×Ö3 Char Char Char Char Char";
|
||
font-family:ËÎÌå;}
|
||
p.a2, li.a2, div.a2
|
||
{mso-style-name:ͼ¾ÓÖÐ;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.110, li.110, div.110
|
||
{mso-style-name:"Ñùʽ ±êÌâ 1 + ¾ÓÖÐ1";
|
||
margin-right:0cm;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
span.1Char
|
||
{mso-style-name:"±êÌâ 1 Char";
|
||
mso-style-link:"±êÌâ 1";
|
||
font-weight:bold;}
|
||
p.22, li.22, div.22
|
||
{mso-style-name:"Ñùʽ Áбí 2 + ¾ÓÖÐ";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.23, li.23, div.23
|
||
{mso-style-name:Áбí2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.50, li.50, div.50
|
||
{mso-style-name:ͼÖÐÎÄ×Ö5ºÅ;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.111, li.111, div.111
|
||
{mso-style-name:Ñùʽ11;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.12, li.12, div.12
|
||
{mso-style-name:´úÂë³ÌÐò1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.13, li.13, div.13
|
||
{mso-style-name:ͼ˵Ã÷1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.01, li.01, div.01
|
||
{mso-style-name:·âÃæ01;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:36.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.112, li.112, div.112
|
||
{mso-style-name:·âÃæ11;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:18.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.113, li.113, div.113
|
||
{mso-style-name:·Ç±êÌâ11;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.14, li.14, div.14
|
||
{mso-style-name:Îı¾¾ÓÖÐ1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.3Char1, li.3Char1, div.3Char1
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char1";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.post1, li.post1, div.post1
|
||
{mso-style-name:Óʼþpost1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:right;
|
||
line-height:11.0pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.31, li.31, div.31
|
||
{mso-style-name:ͼÖÐ×ÖÌå31;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.5Char1, li.5Char1, div.5Char1
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö5ºÅ Char1";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.5CharChar1, li.5CharChar1, div.5CharChar1
|
||
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char Char1";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.5Char10, li.5Char10, div.5Char10
|
||
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char1";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.51, li.51, div.51
|
||
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.120, li.120, div.120
|
||
{mso-style-name:Ñùʽ12;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.02, li.02, div.02
|
||
{mso-style-name:·âÃæ02;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:36.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.121, li.121, div.121
|
||
{mso-style-name:·âÃæ12;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:18.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.122, li.122, div.122
|
||
{mso-style-name:·Ç±êÌâ12;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.3Char2, li.3Char2, div.3Char2
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char2";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.post2, li.post2, div.post2
|
||
{mso-style-name:Óʼþpost2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:right;
|
||
line-height:11.0pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.32, li.32, div.32
|
||
{mso-style-name:ͼÖÐ×ÖÌå32;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.5Char2, li.5Char2, div.5Char2
|
||
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char2";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.52, li.52, div.52
|
||
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.3CharCharCharChar, li.3CharCharCharChar, div.3CharCharCharChar
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char Char Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.130, li.130, div.130
|
||
{mso-style-name:Ñùʽ13;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.30, li.30, div.30
|
||
{mso-style-name:´úÂë³ÌÐò3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.03, li.03, div.03
|
||
{mso-style-name:·âÃæ03;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:36.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.131, li.131, div.131
|
||
{mso-style-name:·âÃæ13;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:18.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.132, li.132, div.132
|
||
{mso-style-name:·Ç±êÌâ13;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.33, li.33, div.33
|
||
{mso-style-name:Îı¾¾ÓÖÐ3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.3Char3, li.3Char3, div.3Char3
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char3";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.post3, li.post3, div.post3
|
||
{mso-style-name:Óʼþpost3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:right;
|
||
line-height:11.0pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.330, li.330, div.330
|
||
{mso-style-name:ͼÖÐ×ÖÌå33;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.5Char20, li.5Char20, div.5Char20
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö5ºÅ Char2";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.5CharChar2, li.5CharChar2, div.5CharChar2
|
||
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char Char2";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.5Char3, li.5Char3, div.5Char3
|
||
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char3";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.53, li.53, div.53
|
||
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.3Char, li.3Char, div.3Char
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char";
|
||
mso-style-link:"ͼÖÐÎÄ×Ö3 Char Char5";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:ËÎÌå;}
|
||
span.3CharChar5
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö3 Char Char5";
|
||
mso-style-link:"ͼÖÐÎÄ×Ö3 Char";
|
||
font-family:ËÎÌå;}
|
||
p.54, li.54, div.54
|
||
{mso-style-name:ͼÖÐÎÄ×ÖС5½ôÃÜ;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
line-height:9.0pt;
|
||
text-autospace:ideograph-numeric;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.24, li.24, div.24
|
||
{mso-style-name:¾ÓÖÐ2ºÅ´ÖËÎÌå;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.15, li.15, div.15
|
||
{mso-style-name:"Ñùʽ ±êÌâ 1 + ¾ÓÖÐ";
|
||
margin-top:17.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:16.5pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.25, li.25, div.25
|
||
{mso-style-name:"Ñùʽ ±êÌâ 2 + Ðоà\: µ¥±¶Ðоà";
|
||
margin-top:13.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:13.0pt;
|
||
margin-left:28.9pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-28.9pt;
|
||
page-break-after:avoid;
|
||
font-size:16.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
span.2Char
|
||
{mso-style-name:"±êÌâ 2 Char";
|
||
mso-style-link:"±êÌâ 2";
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.34, li.34, div.34
|
||
{mso-style-name:Áбí3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.35, li.35, div.35
|
||
{mso-style-name:±í3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.4, li.4, div.4
|
||
{mso-style-name:ͼ˵Ã÷4;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.40, li.40, div.40
|
||
{mso-style-name:Áбí4;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.41, li.41, div.41
|
||
{mso-style-name:±í4;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.55, li.55, div.55
|
||
{mso-style-name:ͼ˵Ã÷5;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.56, li.56, div.56
|
||
{mso-style-name:Áбí5;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.57, li.57, div.57
|
||
{mso-style-name:±í5;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.6, li.6, div.6
|
||
{mso-style-name:Áбí6;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.60, li.60, div.60
|
||
{mso-style-name:±í6;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.61, li.61, div.61
|
||
{mso-style-name:ͼ˵Ã÷6;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.7, li.7, div.7
|
||
{mso-style-name:Áбí7;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.70, li.70, div.70
|
||
{mso-style-name:ͼ˵Ã÷7;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.71, li.71, div.71
|
||
{mso-style-name:±í7;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.8, li.8, div.8
|
||
{mso-style-name:Áбí8;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.9, li.9, div.9
|
||
{mso-style-name:Áбí9;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.90, li.90, div.90
|
||
{mso-style-name:ͼ˵Ã÷9;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.100, li.100, div.100
|
||
{mso-style-name:Áбí10;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.101, li.101, div.101
|
||
{mso-style-name:ͼ˵Ã÷10;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.114, li.114, div.114
|
||
{mso-style-name:Áбí11;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.115, li.115, div.115
|
||
{mso-style-name:ͼ˵Ã÷11;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.116, li.116, div.116
|
||
{mso-style-name:±í11;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.123, li.123, div.123
|
||
{mso-style-name:Áбí12;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.124, li.124, div.124
|
||
{mso-style-name:ͼ˵Ã÷12;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.133, li.133, div.133
|
||
{mso-style-name:ͼ˵Ã÷13;
|
||
mso-style-link:"ͼ˵Ã÷13 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.13Char
|
||
{mso-style-name:"ͼ˵Ã÷13 Char";
|
||
mso-style-link:ͼ˵Ã÷13;
|
||
font-family:ËÎÌå;}
|
||
p.134, li.134, div.134
|
||
{mso-style-name:Áбí13;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.26, li.26, div.26
|
||
{mso-style-name:¸½Â¼2;
|
||
margin-top:13.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:13.0pt;
|
||
margin-left:0cm;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:16.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.36, li.36, div.36
|
||
{mso-style-name:¸½Â¼3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
span.3Char0
|
||
{mso-style-name:"±êÌâ 3 Char";
|
||
mso-style-link:"±êÌâ 3";
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.16, li.16, div.16
|
||
{mso-style-name:¸½Â¼1;
|
||
margin-top:17.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:16.5pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.17, li.17, div.17
|
||
{mso-style-name:¸½Â¼±í1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.42, li.42, div.42
|
||
{mso-style-name:¸½Â¼4;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
span.4Char
|
||
{mso-style-name:"±êÌâ 4 Char";
|
||
mso-style-link:"±êÌâ 4";
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.a3, li.a3, div.a3
|
||
{mso-style-name:¸½Â¼Í¼ËµÃ÷;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.27, li.27, div.27
|
||
{mso-style-name:Ðò±êÌâ2;
|
||
margin-top:13.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:13.0pt;
|
||
margin-left:28.8pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-28.8pt;
|
||
page-break-after:avoid;
|
||
font-size:16.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.a4, li.a4, div.a4
|
||
{mso-style-name:²Î¿¼±êÌâ;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.18, li.18, div.18
|
||
{mso-style-name:Ë÷Òý±êÌâ1;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.19, li.19, div.19
|
||
{mso-style-name:Áбí1;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.25pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.25pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.1a, li.1a, div.1a
|
||
{mso-style-name:±í1;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.25pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.25pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.37, li.37, div.37
|
||
{mso-style-name:ͼ˵Ã÷3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.62, li.62, div.62
|
||
{mso-style-name:±íÖÐ×ÖÌå6ºÅ;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
layout-grid-mode:char;
|
||
font-size:7.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.a5, li.a5, div.a5
|
||
{mso-style-name:ÕýÎÄ´úÂë;
|
||
mso-style-link:"ÕýÎÄ´úÂë Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.Char1
|
||
{mso-style-name:"ÕýÎÄ´úÂë Char";
|
||
mso-style-link:ÕýÎÄ´úÂë;
|
||
font-family:ËÎÌå;}
|
||
p.43, li.43, div.43
|
||
{mso-style-name:"Ñùʽ ±êÌâ 4 +";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.140, li.140, div.140
|
||
{mso-style-name:±í14;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.25pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.25pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.141, li.141, div.141
|
||
{mso-style-name:ͼ˵Ã÷14;
|
||
mso-style-link:"ͼ˵Ã÷14 Char";
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.25pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.25pt;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.14Char
|
||
{mso-style-name:"ͼ˵Ã÷14 Char";
|
||
mso-style-link:ͼ˵Ã÷14;
|
||
font-family:ËÎÌå;}
|
||
p.a6, li.a6, div.a6
|
||
{mso-style-name:ÎļþĿ¼±í;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.a7, li.a7, div.a7
|
||
{mso-style-name:"Ñùʽ ÕýÎÄ +";
|
||
mso-style-link:"Ñùʽ ÕýÎÄ + Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.Char2
|
||
{mso-style-name:"Ñùʽ ÕýÎÄ + Char";
|
||
mso-style-link:"Ñùʽ ÕýÎÄ +";
|
||
font-family:"Times New Roman","serif";}
|
||
p.a8, li.a8, div.a8
|
||
{mso-style-name:±í¸ñÌâ×¢;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.a9, li.a9, div.a9
|
||
{mso-style-name:ÁбíÌâ×¢;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.aa, li.aa, div.aa
|
||
{mso-style-name:ͼÌâ×¢;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.ab, li.ab, div.ab
|
||
{mso-style-name:³ÌÐòÌâ×¢;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.ac, li.ac, div.ac
|
||
{mso-style-name:¿òÖÐÎÄ×Ö;
|
||
margin-top:0cm;
|
||
margin-right:21.0pt;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
border:none;
|
||
padding:0cm;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.125, li.125, div.125
|
||
{mso-style-name:"Ñùʽ ±êÌâ 1 + ¾ÓÖÐ2";
|
||
margin-top:17.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:16.5pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.ad, li.ad, div.ad
|
||
{mso-style-name:"Ñùʽ Ìâ×¢ + ËÎÌå ÎåºÅ ¾ÓÖÐ";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ºÚÌå;}
|
||
p.1b, li.1b, div.1b
|
||
{mso-style-name:Ðò±êÌâ1;
|
||
margin-top:17.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:16.5pt;
|
||
margin-left:0cm;
|
||
line-height:240%;
|
||
page-break-after:avoid;
|
||
font-size:16.0pt;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
p.38, li.38, div.38
|
||
{mso-style-name:Ðò±êÌâ3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:·½ÕýС±êËμòÌå;}
|
||
p.63, li.63, div.63
|
||
{mso-style-name:±íÖÐÎÄ×Ö6ºÅ;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:7.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.64, li.64, div.64
|
||
{mso-style-name:ͼÖÐÎÄ×Ö6ºÅ×ó¶ÔÆë;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
line-height:10.0pt;
|
||
layout-grid-mode:char;
|
||
font-size:7.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.65, li.65, div.65
|
||
{mso-style-name:ͼÖÐÎÄ×Ö6ºÅ;
|
||
mso-style-link:"ͼÖÐÎÄ×Ö6ºÅ Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:10.0pt;
|
||
layout-grid-mode:char;
|
||
font-size:7.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.6Char
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö6ºÅ Char";
|
||
mso-style-link:ͼÖÐÎÄ×Ö6ºÅ;
|
||
font-family:ËÎÌå;}
|
||
p.ae, li.ae, div.ae
|
||
{mso-style-name:ͼ±ê;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.28, li.28, div.28
|
||
{mso-style-name:ͼ±ê2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.af, li.af, div.af
|
||
{mso-style-name:ϰÌâ±êÌâ;
|
||
margin-top:6.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:ºÚÌå;}
|
||
p.1c, li.1c, div.1c
|
||
{mso-style-name:²¿·Ö±àºÅ1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:16.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.af0, li.af0, div.af0
|
||
{mso-style-name:±í±êÌâ;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.af1, li.af1, div.af1
|
||
{mso-style-name:"Ñùʽ Ìâ×¢ + ¾ÓÖÐ";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
p.ListTitle, li.ListTitle, div.ListTitle
|
||
{mso-style-name:ListTitle;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.FigureTitle, li.FigureTitle, div.FigureTitle
|
||
{mso-style-name:FigureTitle;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.TableTitle, li.TableTitle, div.TableTitle
|
||
{mso-style-name:TableTitle;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.ProgramTitle, li.ProgramTitle, div.ProgramTitle
|
||
{mso-style-name:ProgramTitle;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.RightText, li.RightText, div.RightText
|
||
{mso-style-name:RightText;
|
||
margin-top:0cm;
|
||
margin-right:21.0pt;
|
||
margin-bottom:0cm;
|
||
margin-left:42.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
border:none;
|
||
padding:0cm;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.af2, li.af2, div.af2
|
||
{mso-style-name:±íÖÐÎÄ×ÖСÎå;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.af3, li.af3, div.af3
|
||
{mso-style-name:¹Ø¼ü´Ê;
|
||
mso-style-link:"¹Ø¼ü´Ê Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.Char3
|
||
{mso-style-name:"¹Ø¼ü´Ê Char";
|
||
mso-style-link:¹Ø¼ü´Ê;
|
||
font-family:ËÎÌå;}
|
||
p.af4, li.af4, div.af4
|
||
{mso-style-name:ÎļþÃû;
|
||
mso-style-link:"ÎļþÃû Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.Char4
|
||
{mso-style-name:"ÎļþÃû Char";
|
||
mso-style-link:ÎļþÃû;
|
||
font-family:ËÎÌå;}
|
||
p.af5, li.af5, div.af5
|
||
{mso-style-name:Ñ¡Ïî;
|
||
mso-style-link:"Ñ¡Ïî Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.Char5
|
||
{mso-style-name:"Ñ¡Ïî Char";
|
||
mso-style-link:Ñ¡Ïî;
|
||
font-family:ËÎÌå;}
|
||
p.af6, li.af6, div.af6
|
||
{mso-style-name:ÃüÁîÐÐ;
|
||
mso-style-link:"ÃüÁîÐÐ Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.Char6
|
||
{mso-style-name:"ÃüÁîÐÐ Char";
|
||
mso-style-link:ÃüÁîÐÐ;
|
||
font-family:ËÎÌå;}
|
||
p.af7, li.af7, div.af7
|
||
{mso-style-name:º¯ÊýÃû;
|
||
mso-style-link:"º¯ÊýÃû Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.Char7
|
||
{mso-style-name:"º¯ÊýÃû Char";
|
||
mso-style-link:º¯ÊýÃû;
|
||
font-family:ËÎÌå;}
|
||
p.af8, li.af8, div.af8
|
||
{mso-style-name:¼Ä´æÆ÷Ãû;
|
||
mso-style-link:"¼Ä´æÆ÷Ãû Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.Char8
|
||
{mso-style-name:"¼Ä´æÆ÷Ãû Char";
|
||
mso-style-link:¼Ä´æÆ÷Ãû;
|
||
font-family:"Times New Roman","serif";}
|
||
p.af9, li.af9, div.af9
|
||
{mso-style-name:±äÁ¿Ãû;
|
||
mso-style-link:"±äÁ¿Ãû Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:ËÎÌå;}
|
||
span.Char9
|
||
{mso-style-name:"±äÁ¿Ãû Char";
|
||
mso-style-link:±äÁ¿Ãû;
|
||
font-family:ËÎÌå;}
|
||
p.58, li.58, div.58
|
||
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ×ó;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.59, li.59, div.59
|
||
{mso-style-name:ͼÖÐÎÄ×ÖС5ºÅ¿¿×ó;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
layout-grid-mode:char;
|
||
font-size:9.0pt;
|
||
font-family:ËÎÌå;}
|
||
p.926, li.926, div.926
|
||
{mso-style-name:"Ñùʽ ´úÂë³ÌÐò + ×ó²à\: 9\.26 ÀåÃ×";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
layout-grid-mode:char;
|
||
font-size:10.0pt;
|
||
font-family:ËÎÌå;}
|
||
span.5Char4
|
||
{mso-style-name:"±êÌâ 5 Char";
|
||
mso-style-link:"±êÌâ 5";
|
||
font-weight:bold;}
|
||
span.6Char0
|
||
{mso-style-name:"±êÌâ 6 Char";
|
||
mso-style-link:"±êÌâ 6";
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
span.7Char
|
||
{mso-style-name:"±êÌâ 7 Char";
|
||
mso-style-link:"±êÌâ 7";
|
||
font-weight:bold;}
|
||
span.8Char
|
||
{mso-style-name:"±êÌâ 8 Char";
|
||
mso-style-link:"±êÌâ 8";
|
||
font-family:"Arial","sans-serif";}
|
||
span.9Char
|
||
{mso-style-name:"±êÌâ 9 Char";
|
||
mso-style-link:"±êÌâ 9";
|
||
font-family:"Arial","sans-serif";}
|
||
span.Chara
|
||
{mso-style-name:"½Å×¢Îı¾ Char";
|
||
mso-style-link:½Å×¢Îı¾;
|
||
font-family:ËÎÌå;}
|
||
span.Charb
|
||
{mso-style-name:"Åú×¢ÎÄ×Ö Char";
|
||
mso-style-link:Åú×¢ÎÄ×Ö;
|
||
font-family:ËÎÌå;}
|
||
span.Charc
|
||
{mso-style-name:"ҳü Char";
|
||
mso-style-link:ҳü;
|
||
font-family:ËÎÌå;}
|
||
span.Chard
|
||
{mso-style-name:"Ò³½Å Char";
|
||
mso-style-link:Ò³½Å;
|
||
font-family:ËÎÌå;}
|
||
span.Chare
|
||
{mso-style-name:"ÈÕÆÚ Char";
|
||
mso-style-link:ÈÕÆÚ;
|
||
font-family:ËÎÌå;}
|
||
span.HTMLChar
|
||
{mso-style-name:"HTML Ô¤Éè¸ñʽ Char\,HTML Ô¤Ïȸñʽ»¯ Char\,HTML Ô¤Ïȸñʽ»¯1 Char\,HTML Ô¤Ïȸñʽ»¯2 Char\,HTML Ô¤Ïȸñʽ»¯3 Char";
|
||
mso-style-link:"HTML Ô¤Éè¸ñʽ\,HTML Ô¤Ïȸñʽ»¯\,HTML Ô¤Ïȸñʽ»¯1\,HTML Ô¤Ïȸñʽ»¯2\,HTML Ô¤Ïȸñʽ»¯3";
|
||
font-family:ËÎÌå;}
|
||
span.Charf
|
||
{mso-style-name:"Åú×¢Ö÷Ìâ Char";
|
||
mso-style-link:Åú×¢Ö÷Ìâ;
|
||
font-family:ËÎÌå;
|
||
font-weight:bold;}
|
||
span.Charf0
|
||
{mso-style-name:"Åú×¢¿òÎı¾ Char";
|
||
mso-style-link:Åú×¢¿òÎı¾;
|
||
font-family:ËÎÌå;}
|
||
span.5CharCharChar0
|
||
{mso-style-name:"ͼÖÐÎÄ×Ö5ºÅ Char Char Char";
|
||
font-family:ËÎÌå;}
|
||
span.5CharCharCharChar
|
||
{mso-style-name:"ͼÖÐÎÄ×ÖС5ºÅ Char Char Char Char";
|
||
font-family:ËÎÌå;}
|
||
span.msoIns
|
||
{mso-style-name:"";
|
||
text-decoration:underline;
|
||
color:teal;}
|
||
span.msoDel
|
||
{mso-style-name:"";
|
||
text-decoration:line-through;
|
||
color:red;}
|
||
.MsoChpDefault
|
||
{font-size:10.0pt;}
|
||
/* Page Definitions */
|
||
@page WordSection1
|
||
{size:595.3pt 841.9pt;
|
||
margin:72.0pt 54.0pt 72.0pt 54.0pt;
|
||
layout-grid:15.6pt;}
|
||
div.WordSection1
|
||
{page:WordSection1;}
|
||
/* List Definitions */
|
||
ol
|
||
{margin-bottom:0cm;}
|
||
ul
|
||
{margin-bottom:0cm;}
|
||
-->
|
||
</style>
|
||
|
||
</head>
|
||
|
||
<body lang=ZH-CN link=blue vlink=purple style='text-justify-trim:punctuation'>
|
||
|
||
<div class=WordSection1 style='layout-grid:15.6pt'>
|
||
|
||
<p class=ab><a name="_Toc53320598"><span style='font-family:ºÚÌå'>³ÌÐò</span><span
|
||
lang=EN-US> 6‑2 linux/boot/setup.S</span></a></p>
|
||
|
||
<div class=a align=center style='text-align:center'><span lang=EN-US>
|
||
|
||
<hr size=4 width="100%" align=center>
|
||
|
||
</span></div>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L1">1</a> !</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L2">2</a>
|
||
!
|
||
setup.s (C) 1991 Linus Torvalds</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L3">3</a> !</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L4">4</a> ! setup.s
|
||
is responsible for getting the system data from the BIOS,</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L5">5</a> ! and
|
||
putting them into the appropriate places in system memory.</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L6">6</a> ! both
|
||
setup.s and system has been loaded by the bootblock.</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L7">7</a> !</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L8">8</a> ! This
|
||
code asks the bios for memory/disk/other parameters, and</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L9">9</a> ! puts
|
||
them in a "safe" place: 0x90000-0x901FF, ie where the</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L10">10</a> !
|
||
boot-block used to be. It is then up to the protected mode</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L11">11</a> !
|
||
system to read them from there before the area is overwritten</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L12">12</a> ! for
|
||
buffer-blocks.</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L13">13</a> !</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! setup.s</span>¸ºÔð´Ó<span
|
||
lang=EN-US>BIOS</span>ÖлñȡϵͳÊý¾Ý£¬²¢½«ÕâЩÊý¾Ý·Åµ½ÏµÍ³ÄÚ´æµÄÊʵ±</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µØ·½¡£´Ëʱ<span lang=EN-US>setup.s</span>ºÍ<span
|
||
lang=EN-US>system</span>ÒѾÓÉ<span lang=EN-US>bootsect</span>Òýµ¼¿é¼ÓÔØµ½ÄÚ´æÖС£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Õâ¶Î´úÂëѯÎÊ<span lang=EN-US>bios</span>ÓйØÄÚ´æ<span
|
||
lang=EN-US>/</span>´ÅÅÌ<span lang=EN-US>/</span>ÆäËû²ÎÊý£¬²¢½«ÕâЩ²ÎÊý·Åµ½Ò»¸ö</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¡°°²È«µÄ¡±µØ·½£º<span
|
||
lang=EN-US>0x90000-0x901FF</span>£¬Ò²¼´ÔÀ´<span lang=EN-US>bootsect</span>´úÂë¿éÔø¾ÔÚ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÄµØ·½£¬È»ºóÔÚ±»»º³å¿é¸²¸Çµô֮ǰÓɱ£»¤Ä£Ê½µÄ<span
|
||
lang=EN-US>system</span>¶ÁÈ¡¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L14">14</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L15">15</a> ! NOTE!
|
||
These had better be the same as in bootsect.s!</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÒÔÏÂÕâЩ²ÎÊý×îºÃºÍ<span
|
||
lang=EN-US>bootsect.s</span>ÖеÄÏàͬ£¡</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L16">16</a>
|
||
#include <linux/config.h></span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! config.h</span>Öж¨ÒåÁË<span
|
||
lang=EN-US>DEF_INITSEG = 0x9000</span>£»<span lang=EN-US>DEF_SYSSEG = 0x1000</span>£»<span
|
||
lang=EN-US>DEF_SETUPSEG = 0x9020</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L17">17</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L18">18</a>
|
||
INITSEG = DEF_INITSEG ! we move boot here - out of the way ! </span>ÔÀ´<span
|
||
lang=EN-US>bootsect</span>Ëù´¦µÄ¶Î¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L19">19</a>
|
||
SYSSEG = DEF_SYSSEG ! system loaded at 0x10000 (65536).
|
||
! system</span>ÔÚ<span lang=EN-US>0x10000</span>´¦¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L20">20</a>
|
||
SETUPSEG = DEF_SETUPSEG ! this is the current segment !
|
||
</span>±¾³ÌÐòËùÔڵĶεØÖ·¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L21">21</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L22">22</a> .globl
|
||
begtext, begdata, begbss, endtext, enddata, endbss</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L23">23</a> .text</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L24">24</a>
|
||
begtext:</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L25">25</a> .data</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L26">26</a>
|
||
begdata:</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L27">27</a> .bss</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L28">28</a> begbss:</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L29">29</a> .text</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L30">30</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L31">31</a> entry
|
||
start</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L32">32</a> start:</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L33">33</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L34">34</a> ! ok,
|
||
the read went well so we get current cursor position and save it for</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L35">35</a> !
|
||
posterity.</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! ok</span>£¬Õû¸ö¶Á´ÅÅ̹ý³Ì¶¼Õý³££¬ÏÖÔÚ½«¹â±êλÖñ£´æÒÔ±¸½ñºóʹÓã¨Ïà¹Ø´úÂëÔÚ<span
|
||
lang=EN-US>59--62</span>ÐУ©¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L36">36</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ͼ佫<span lang=EN-US>ds</span>ÖóÉ<span
|
||
lang=EN-US>INITSEG(0x9000)</span>¡£ÕâÒѾÔÚ<span lang=EN-US>bootsect</span>³ÌÐòÖÐÉèÖùý£¬µ«ÊÇÏÖÔÚÊÇ<span
|
||
lang=EN-US>setup</span>³ÌÐò£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! Linus</span>¾õµÃÐèÒªÔÙÖØÐÂÉèÖÃһϡ£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L37">37</a>
|
||
mov ax,#INITSEG </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L38">38</a>
|
||
mov ds,ax</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L39">39</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L40">40</a> ! Get
|
||
memory size (extended mem, kB)</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>È¡À©Õ¹ÄÚ´æµÄ´óСֵ£¨<span
|
||
lang=EN-US>KB</span>£©¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÀûÓÃ<span lang=EN-US>BIOS</span>ÖжÏ<span
|
||
lang=EN-US>0x15 </span>¹¦ÄܺÅ<span lang=EN-US>ah = 0x88 </span>ȡϵͳËùº¬À©Õ¹ÄÚ´æ´óС²¢±£´æÔÚÄÚ´æ<span
|
||
lang=EN-US>0x90002</span>´¦¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>·µ»Ø£º<span lang=EN-US>ax
|
||
= </span>´Ó<span lang=EN-US>0x100000</span>£¨<span
|
||
lang=EN-US>1M</span>£©´¦¿ªÊ¼µÄÀ©Õ¹ÄÚ´æ´óС<span lang=EN-US>(KB)</span>¡£Èô³ö´íÔò<span
|
||
lang=EN-US>CF</span>ÖÃ룬<span lang=EN-US>ax = </span>³ö´íÂë¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L41">41</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L42">42</a>
|
||
mov ah,#0x88</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L43">43</a>
|
||
int 0x15</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L44">44</a>
|
||
mov [2],ax
|
||
! </span>½«À©Õ¹ÄÚ´æÊýÖµ´æÔÚ<span lang=EN-US>0x90002</span>´¦£¨<span lang=EN-US>1</span>¸ö×Ö£©¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L45">45</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L46">46</a> ! check
|
||
for EGA/VGA and some config parameters</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¼ì²éÏÔʾ·½Ê½£¨<span
|
||
lang=EN-US>EGA/VGA</span>£©²¢È¡²ÎÊý¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µ÷ÓÃ<span lang=EN-US>BIOS</span>ÖжÏ<span
|
||
lang=EN-US>0x10</span>£¬¸½¼Ó¹¦ÄÜÑ¡Ôñ·½Ê½ÐÅÏ¢¡£¹¦Äܺţº<span lang=EN-US>ah = 0x12</span>£¬<span
|
||
lang=EN-US>bl = 0x10</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>·µ»Ø£º<span lang=EN-US>bh
|
||
=</span>ÏÔʾ״̬¡£<span lang=EN-US>0x00 -</span>²Êɫģʽ£¬<span lang=EN-US>I/O</span>¶Ë¿Ú<span
|
||
lang=EN-US>=0x3dX</span>£»<span lang=EN-US>0x01 -</span>µ¥É«Ä£Ê½£¬<span lang=EN-US>I/O</span>¶Ë¿Ú<span
|
||
lang=EN-US>=0x3bX</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! bl = </span>°²×°µÄÏÔʾÄÚ´æ¡£<span
|
||
lang=EN-US>0x00 - 64k</span>£»<span lang=EN-US>0x01 - 128k</span>£»<span
|
||
lang=EN-US>0x02 - 192k</span>£»<span lang=EN-US>0x03 = 256k</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! cx = </span>ÏÔʾ¿¨ÌØÐÔ²ÎÊý<span
|
||
lang=EN-US>(</span>²Î¼û³ÌÐòºó¶Ô<span lang=EN-US>BIOS</span>ÊÓÆµÖжÏ<span lang=EN-US>0x10</span>µÄ˵Ã÷<span
|
||
lang=EN-US>)</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L47">47</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L48">48</a>
|
||
mov ah,#0x12</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L49">49</a>
|
||
mov bl,#0x10</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L50">50</a>
|
||
int 0x10</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L51">51</a>
|
||
mov [8],ax !
|
||
0x90008 = ??</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L52">52</a>
|
||
mov [10],bx !
|
||
0x9000A =</span>°²×°µÄÏÔʾÄڴ棻<span
|
||
lang=EN-US>0x9000B=</span>ÏÔʾ״̬<span lang=EN-US>(</span>²Ê<span lang=EN-US>/</span>µ¥É«<span
|
||
lang=EN-US>)</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L53">53</a>
|
||
mov [12],cx !
|
||
0x9000C =</span>ÏÔʾ¿¨ÌØÐÔ²ÎÊý¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¼ì²âÆÁÄ»µ±Ç°ÐÐÁÐÖµ¡£ÈôÏÔʾ¿¨ÊÇ<span
|
||
lang=EN-US>VGA</span>¿¨Ê±ÔòÇëÇóÓû§Ñ¡ÔñÏÔʾÐÐÁÐÖµ£¬²¢±£´æµ½<span lang=EN-US>0x9000E</span>´¦¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L54">54</a>
|
||
mov ax,#0x5019 ! </span>ÔÚ<span
|
||
lang=EN-US>ax</span>ÖÐÔ¤ÖÃÆÁĻĬÈÏÐÐÁÐÖµ£¨<span lang=EN-US>ah = 80</span>ÁУ»<span
|
||
lang=EN-US>al=25</span>ÐУ©¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L55">55</a>
|
||
cmp bl,#0x10
|
||
! </span>ÈôÖжϷµ»Ø<span lang=EN-US>bl</span>ֵΪ<span lang=EN-US>0x10</span>£¬Ôò±íʾ²»ÊÇ<span
|
||
lang=EN-US>VGA</span>ÏÔʾ¿¨£¬Ìø×ª¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L56">56</a>
|
||
je novga</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L57">57</a>
|
||
call chsvga
|
||
! </span>¼ì²âÏÔʾ¿¨³§¼ÒºÍÀàÐÍ£¬ÐÞ¸ÄÏÔʾÐÐÁÐÖµ£¨µÚ<span lang=EN-US>215</span>ÐУ©¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L58">58</a>
|
||
novga: mov [14],ax
|
||
! </span>±£´æÆÁÄ»µ±Ç°ÐÐÁÐÖµ£¨<span lang=EN-US>0x9000E</span>£¬<span lang=EN-US>0x9000F</span>£©¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Õâ¶Î´úÂëʹÓÃ<span lang=EN-US>BIOS</span>ÖжÏÈ¡ÆÁÄ»µ±Ç°¹â±êλÖã¨ÁС¢ÐУ©£¬²¢±£´æÔÚÄÚ´æ<span
|
||
lang=EN-US>0x90000</span>´¦£¨<span lang=EN-US>2</span>×Ö½Ú£©¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¿ØÖÆÌ¨³õʼ»¯³ÌÐò»áµ½´Ë´¦¶ÁÈ¡¸ÃÖµ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! BIOS</span>ÖжÏ<span lang=EN-US>0x10</span>¹¦ÄܺÅ<span
|
||
lang=EN-US> ah = 0x03</span>£¬¶Á¹â±êλÖá£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÊäÈ룺<span lang=EN-US>bh
|
||
= </span>Ò³ºÅ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>·µ»Ø£º<span lang=EN-US>ch
|
||
= </span>ɨÃ迪ʼÏߣ»<span lang=EN-US>cl = </span>ɨÃè½áÊøÏߣ»<span lang=EN-US>dh = </span>ÐкÅ<span
|
||
lang=EN-US>(0x00</span>¶¥¶Ë<span lang=EN-US>)</span>£»<span lang=EN-US>dl = </span>ÁкÅ<span
|
||
lang=EN-US>(0x00</span>×î×ó±ß<span lang=EN-US>)</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L59">59</a>
|
||
mov ah,#0x03 !
|
||
read cursor pos</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L60">60</a>
|
||
xor bh,bh</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L61">61</a>
|
||
int
|
||
0x10 !
|
||
save it in known place, con_init fetches</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L62">62</a>
|
||
mov [0],dx !
|
||
it from 0x90000.</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L63">63</a>
|
||
</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L64">64</a> ! Get
|
||
video-card data:</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÕâ¶ÎÓÃÓÚÈ¡ÏÔʾ¿¨µ±Ç°ÏÔʾģʽ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µ÷ÓÃ<span lang=EN-US>BIOS</span>ÖжÏ<span
|
||
lang=EN-US>0x10</span>£¬¹¦ÄܺÅ<span lang=EN-US> ah = 0x0f</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>·µ»Ø£º<span lang=EN-US>ah
|
||
= </span>×Ö·ûÁÐÊý£»<span lang=EN-US>al = </span>ÏÔʾģʽ£»<span lang=EN-US>bh = </span>µ±Ç°ÏÔʾҳ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! 0x90004(1</span>×Ö<span
|
||
lang=EN-US>)</span>´æ·Åµ±Ç°Ò³£»<span lang=EN-US>0x90006</span>´æ·ÅÏÔʾģʽ£»<span
|
||
lang=EN-US>0x90007</span>´æ·Å×Ö·ûÁÐÊý¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L65">65</a>
|
||
</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L66">66</a>
|
||
mov ah,#0x0f</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L67">67</a>
|
||
int 0x10</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L68">68</a>
|
||
mov
|
||
[4],bx ! bh = display
|
||
page</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L69">69</a>
|
||
mov
|
||
[6],ax ! al = video mode,
|
||
ah = window width</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L70">70</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L71">71</a> ! Get
|
||
hd0 data</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>È¡µÚÒ»¸öÓ²Å̵ÄÐÅÏ¢£¨¸´ÖÆÓ²Å̲ÎÊý±í£©¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÚ<span lang=EN-US>1</span>¸öÓ²Å̲ÎÊý±íµÄÊ×µØÖ·¾¹È»ÊÇÖжÏÏòÁ¿<span
|
||
lang=EN-US>0x41</span>µÄÏòÁ¿Öµ£¡¶øµÚ<span lang=EN-US>2</span>¸öÓ²Å̲ÎÊý±í½ô½ÓÔÚµÚ<span
|
||
lang=EN-US>1</span>¸ö</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>±íµÄºóÃæ£¬ÖжÏÏòÁ¿<span
|
||
lang=EN-US>0x46</span>µÄÏòÁ¿ÖµÒ²Ö¸ÏòµÚ<span lang=EN-US>2</span>¸öÓ²Å̵IJÎÊý±íÊ×Ö·¡£±íµÄ³¤¶ÈÊÇ<span
|
||
lang=EN-US>16</span>¸ö×Ö½Ú¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÁ½¶Î³ÌÐò·Ö±ð¸´ÖÆ<span
|
||
lang=EN-US>ROM BIOS</span>ÖÐÓйØÁ½¸öÓ²Å̵IJÎÊý±í£¬<span lang=EN-US>0x90080</span>´¦´æ·ÅµÚ<span
|
||
lang=EN-US>1</span>¸öÓ²ÅÌµÄ±í£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! 0x90090</span>´¦´æ·ÅµÚ<span
|
||
lang=EN-US>2</span>¸öÓ²ÅÌµÄ±í¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L72">72</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÚ<span lang=EN-US>75</span>ÐÐÓï¾ä´ÓÄÚ´æÖ¸¶¨Î»Öô¦¶Áȡһ¸ö³¤Ö¸ÕëÖµ²¢·ÅÈë<span
|
||
lang=EN-US>ds</span>ºÍ<span lang=EN-US>si</span>¼Ä´æÆ÷ÖС£<span lang=EN-US>ds</span>ÖзŶεØÖ·£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! si</span>ÊǶÎÄÚÆ«ÒƵØÖ·¡£ÕâÀïÊǰÑÄÚ´æµØÖ·<span
|
||
lang=EN-US>4 * 0x41</span>£¨<span lang=EN-US>= 0x104</span>£©´¦±£´æµÄ<span
|
||
lang=EN-US>4</span>¸ö×Ö½Ú¶Á³ö¡£Õâ<span lang=EN-US>4</span>×Ö</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>½Ú¼´ÊÇÓ²Å̲ÎÊý±íËù´¦Î»ÖÃµÄ¶ÎºÍÆ«ÒÆÖµ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L73">73</a>
|
||
mov ax,#0x0000</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L74">74</a>
|
||
mov ds,ax</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L75">75</a>
|
||
lds si,[4*0x41] !
|
||
</span>È¡ÖжÏÏòÁ¿<span lang=EN-US>0x41</span>µÄÖµ£¬¼´<span lang=EN-US>hd0</span>²ÎÊý±íµÄµØÖ·<span
|
||
lang=EN-US style='font-family:Wingdings'>¨¨</span><span lang=EN-US>ds:si</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L76">76</a>
|
||
mov ax,#INITSEG</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L77">77</a>
|
||
mov es,ax</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L78">78</a>
|
||
mov di,#0x0080 !
|
||
</span>´«ÊäµÄÄ¿µÄµØÖ·<span lang=EN-US>: 0x9000:0x0080 </span><span lang=EN-US
|
||
style='font-family:Wingdings'>¨¨</span><span lang=EN-US> es:di</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L79">79</a>
|
||
mov cx,#0x10 !
|
||
</span>¹²´«Êä<span lang=EN-US>16</span>×Ö½Ú¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L80">80</a>
|
||
rep</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L81">81</a>
|
||
movsb</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L82">82</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L83">83</a> ! Get
|
||
hd1 data</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L84">84</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L85">85</a>
|
||
mov ax,#0x0000</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L86">86</a>
|
||
mov ds,ax</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L87">87</a>
|
||
lds si,[4*0x46] !
|
||
</span>È¡ÖжÏÏòÁ¿<span lang=EN-US>0x46</span>µÄÖµ£¬¼´<span lang=EN-US>hd1</span>²ÎÊý±íµÄµØÖ·<span
|
||
lang=EN-US style='font-family:Wingdings'>¨¨</span><span lang=EN-US>ds:si</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L88">88</a>
|
||
mov ax,#INITSEG</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L89">89</a>
|
||
mov es,ax</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L90">90</a>
|
||
mov di,#0x0090 !
|
||
</span>´«ÊäµÄÄ¿µÄµØÖ·<span lang=EN-US>: 0x9000:0x0090 </span><span lang=EN-US
|
||
style='font-family:Wingdings'>¨¨</span><span lang=EN-US> es:di</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L91">91</a>
|
||
mov cx,#0x10</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L92">92</a>
|
||
rep</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L93">93</a>
|
||
movsb</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L94">94</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L95">95</a> ! Check
|
||
that there IS a hd1 :-)</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¼ì²éϵͳÊÇ·ñÓеÚ<span
|
||
lang=EN-US>2</span>¸öÓ²ÅÌ¡£Èç¹ûûÓÐÔò°ÑµÚ<span lang=EN-US>2</span>¸ö±íÇåÁã¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÀûÓÃ<span lang=EN-US>BIOS</span>Öжϵ÷ÓÃ<span
|
||
lang=EN-US>0x13</span>µÄÈ¡ÅÌÀàÐ͹¦ÄÜ£¬¹¦ÄܺÅ<span lang=EN-US> ah = 0x15</span>£»</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÊäÈ룺<span lang=EN-US>dl
|
||
= </span>Çý¶¯Æ÷ºÅ£¨<span lang=EN-US>0x8X</span>ÊÇÓ²ÅÌ£º<span lang=EN-US>0x80</span>Ö¸µÚ<span
|
||
lang=EN-US>1</span>¸öÓ²ÅÌ£¬<span lang=EN-US>0x81</span>µÚ<span lang=EN-US>2</span>¸öÓ²ÅÌ£©</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Êä³ö£º<span lang=EN-US>ah
|
||
= </span>ÀàÐÍÂ룻<span lang=EN-US>00 - </span>ûÓÐÕâ¸öÅÌ£¬<span lang=EN-US>CF</span>ÖÃλ£»<span
|
||
lang=EN-US>01 - </span>ÊÇÈíÇý£¬Ã»ÓÐ<span lang=EN-US>change-line</span>Ö§³Ö£»</p>
|
||
|
||
<p class=a><span lang=EN-US>
|
||
!
|
||
02 - </span>ÊÇÈíÇý<span lang=EN-US>(</span>»òÆäËû¿ÉÒÆ¶¯É豸<span lang=EN-US>)</span>£¬ÓÐ<span
|
||
lang=EN-US>change-line</span>Ö§³Ö£»<span lang=EN-US> 03 - </span>ÊÇÓ²ÅÌ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L96">96</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L97">97</a>
|
||
mov ax,#0x01500</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L98">98</a>
|
||
mov dl,#0x81</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L99">99</a>
|
||
int 0x13</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L100">100</a>
|
||
jc no_disk1</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L101">101</a>
|
||
cmp ah,#3
|
||
! </span>ÊÇÓ²ÅÌÂð£¿<span lang=EN-US>(</span>ÀàÐÍ<span lang=EN-US> = 3 </span>£¿<span
|
||
lang=EN-US>)</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L102">102</a>
|
||
je is_disk1</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L103">103</a>
|
||
no_disk1:</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L104">104</a>
|
||
mov ax,#INITSEG
|
||
! </span>µÚ<span lang=EN-US>2</span>¸öÓ²Å̲»´æÔÚ£¬Ôò¶ÔµÚ<span lang=EN-US>2</span>¸öÓ²Å̱íÇåÁã¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L105">105</a>
|
||
mov es,ax</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L106">106</a>
|
||
mov di,#0x0090</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L107">107</a>
|
||
mov cx,#0x10</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L108">108</a>
|
||
mov ax,#0x00</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L109">109</a>
|
||
rep</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L110">110</a>
|
||
stosb</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L111">111</a>
|
||
is_disk1:</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L112">112</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L113">113</a> ! now
|
||
we want to move to protected mode ...</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÖÔÚÎÒÃÇÒª½øÈë±£»¤Ä£Ê½ÖÐÁË<span
|
||
lang=EN-US>...</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L114">114</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L115">115</a>
|
||
cli
|
||
! no interrupts allowed ! ! </span>´Ó´Ë¿ªÊ¼²»ÔÊÐíÖжϡ£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L116">116</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L117">117</a> !
|
||
first we move the system to it's rightful place</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ê×ÏÈÎÒÃǽ«<span lang=EN-US>system</span>Ä£¿éÒÆµ½ÕýÈ·µÄλÖá£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! bootsect</span>Òýµ¼³ÌÐò»á°Ñ<span
|
||
lang=EN-US> system </span>Ä£¿é¶ÁÈëµ½ÄÚ´æ<span lang=EN-US> 0x10000</span>£¨<span
|
||
lang=EN-US>64KB</span>£©¿ªÊ¼µÄλÖá£ÓÉÓÚµ±Ê±¼ÙÉè</p>
|
||
|
||
<p class=a><span lang=EN-US> ! system</span>Ä£¿é×î´ó³¤¶È²»»á³¬¹ý<span
|
||
lang=EN-US>0x80000</span>£¨<span lang=EN-US>512KB</span>£©£¬¼´ÆäÄ©¶Ë²»»á³¬¹ýÄÚ´æµØÖ·<span
|
||
lang=EN-US>0x90000</span>£¬ËùÒÔ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! bootsect</span>»á°Ñ×Ô¼ºÒƶ¯µ½<span
|
||
lang=EN-US>0x90000</span>¿ªÊ¼µÄµØ·½£¬²¢°Ñ<span lang=EN-US>setup</span>¼ÓÔØµ½ËüµÄºóÃæ¡£ÏÂÃæÕâ¶Î³ÌÐòµÄ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÓÃ;ÊÇÔÙ°ÑÕû¸ö<span
|
||
lang=EN-US>system</span>Ä£¿éÒÆ¶¯µ½<span lang=EN-US> 0x00000</span>λÖ㬼´°Ñ´Ó<span
|
||
lang=EN-US> 0x10000</span>µ½<span lang=EN-US>0x8ffff </span>µÄÄÚ´æÊý¾Ý¿é</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>£¨<span lang=EN-US>512KB</span>£©Õû¿éµØÏòÄÚ´æµÍ¶ËÒÆ¶¯ÁË<span
|
||
lang=EN-US>0x10000</span>£¨<span lang=EN-US>64KB</span>£©µÄλÖá£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L118">118</a> </span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L119">119</a>
|
||
mov ax,#0x0000</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L120">120</a>
|
||
cld
|
||
! 'direction'=0, movs moves forward</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L121">121</a>
|
||
do_move:</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L122">122</a>
|
||
mov
|
||
es,ax ! destination
|
||
segment ! es:di</span>ÊÇÄ¿µÄµØÖ·<span lang=EN-US>(</span>³õʼΪ<span lang=EN-US>0x0:0x0)</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L123">123</a>
|
||
add ax,#0x1000</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L124">124</a>
|
||
cmp ax,#0x9000 ! </span>ÒѾ°Ñ×îºóÒ»¶Î£¨´Ó<span
|
||
lang=EN-US>0x8000</span>¶Î¿ªÊ¼µÄ<span lang=EN-US>64KB</span>£©´úÂëÒÆ¶¯Íꣿ</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L125">125</a>
|
||
jz end_move
|
||
! </span>ÊÇ£¬ÔòÌø×ª¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L126">126</a>
|
||
mov
|
||
ds,ax ! source
|
||
segment ! ds:si</span>ÊÇÔ´µØÖ·<span lang=EN-US>(</span>³õʼΪ<span lang=EN-US>0x1000:0x0)</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L127">127</a>
|
||
sub di,di</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L128">128</a>
|
||
sub si,si</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L129">129</a>
|
||
mov cx,#0x8000 ! </span>ÒÆ¶¯<span
|
||
lang=EN-US>0x8000</span>×Ö£¨<span lang=EN-US>64KB</span>×Ö½Ú£©¡£</p>
|
||
|
||
<p class=a><a name=L130></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L130"><span
|
||
lang=EN-US>130</span></a><span lang=EN-US>
|
||
rep</span></p>
|
||
|
||
<p class=a><a name=L131></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L131"><span
|
||
lang=EN-US>131</span></a><span lang=EN-US>
|
||
movsw</span></p>
|
||
|
||
<p class=a><a name=L132></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L132"><span
|
||
lang=EN-US>132</span></a><span lang=EN-US>
|
||
jmp do_move</span></p>
|
||
|
||
<p class=a><a name=L133></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L133"><span
|
||
lang=EN-US>133</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L134></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L134"><span
|
||
lang=EN-US>134</span></a><span lang=EN-US> ! then we load the segment
|
||
descriptors</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>´Ëºó£¬ÎÒÃǼÓÔØ¶ÎÃèÊö·û¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>´ÓÕâÀ↑ʼ»áÓöµ½<span
|
||
lang=EN-US>32</span>λ±£»¤Ä£Ê½µÄ²Ù×÷£¬Òò´ËÐèÒª<span lang=EN-US>Intel 32</span>λ±£»¤Ä£Ê½±à³Ì·½ÃæµÄ֪ʶÁË£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÓйØÕâ·½ÃæµÄÐÅÏ¢Çë²éÔÄÁбíºóµÄ¼òµ¥½éÉÜ»ò¸½Â¼ÖеÄÏêϸ˵Ã÷¡£ÕâÀï½ö×÷¸ÅҪ˵Ã÷¡£ÔÚ½øÈë</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>±£»¤Ä£Ê½ÖÐÔËÐÐ֮ǰ£¬ÎÒÃÇÐèÒªÊ×ÏÈÉèÖúÃÐèҪʹÓõĶÎÃèÊö·û±í¡£ÕâÀïÐèÒªÉèÖÃÈ«¾ÖÃèÊö·û</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>±íºÍÖжÏÃèÊö·û±í¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> !</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÖ¸Áî<span lang=EN-US>lidt</span>ÓÃÓÚ¼ÓÔØÖжÏÃèÊö·û±í£¨<span
|
||
lang=EN-US>IDT</span>£©¼Ä´æÆ÷¡£ËüµÄ²Ù×÷Êý£¨<span lang=EN-US>idt_48</span>£©ÓÐ<span
|
||
lang=EN-US>6</span>×Ö½Ú¡£Ç°<span lang=EN-US>2</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>×Ö½Ú£¨×Ö½Ú<span lang=EN-US>0-1</span>£©ÊÇÃèÊö·û±íµÄ×Ö½Ú³¤¶ÈÖµ£»ºó<span
|
||
lang=EN-US>4</span>×Ö½Ú£¨×Ö½Ú<span lang=EN-US>2-5</span>£©ÊÇÃèÊö·û±íµÄ<span lang=EN-US>32</span>λÏßÐÔ»ù</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µØÖ·£¬ÆäÐÎʽ²Î¼ûÏÂÃæ<span
|
||
lang=EN-US>218--220</span>ÐкÍ<span lang=EN-US>222--224</span>ÐÐ˵Ã÷¡£ÖжÏÃèÊö·û±íÖеÄÿһ¸ö<span
|
||
lang=EN-US>8</span>×Ö½Ú±íÏî</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ö¸³ö·¢ÉúÖжÏʱÐèÒªµ÷ÓõĴúÂëÐÅÏ¢¡£ÓëÖжÏÏòÁ¿ÓÐЩÏàËÆ£¬µ«Òª°üº¬¸ü¶àµÄÐÅÏ¢¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> !</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! lgdt</span>Ö¸ÁîÓÃÓÚ¼ÓÔØÈ«¾ÖÃèÊö·û±í£¨<span
|
||
lang=EN-US>GDT</span>£©¼Ä´æÆ÷£¬Æä²Ù×÷Êý¸ñʽÓë<span lang=EN-US>lidt</span>Ö¸ÁîµÄÏàͬ¡£È«¾ÖÃèÊö</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>·û±íÖеÄÿ¸öÃèÊö·ûÏ<span
|
||
lang=EN-US>8</span>×Ö½Ú£©ÃèÊöÁ˱£»¤Ä£Ê½ÏÂÊý¾Ý¶ÎºÍ´úÂë¶Î£¨¿é£©µÄÐÅÏ¢¡£ ÆäÖаüÀ¨</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¶ÎµÄ×î´ó³¤¶ÈÏÞÖÆ£¨<span
|
||
lang=EN-US>16</span>룩¡¢¶ÎµÄÏßÐÔµØÖ·»ùÖ·£¨<span lang=EN-US>32</span>룩¡¢¶ÎµÄÌØÈ¨¼¶¡¢¶ÎÊÇ·ñÔÚÄÚ´æ¡¢¶Áд</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ðí¿ÉȨÒÔ¼°ÆäËûһЩ±£»¤Ä£Ê½ÔËÐеıêÖ¾¡£²Î¼ûºóÃæ<span
|
||
lang=EN-US>205--216</span>ÐС£</p>
|
||
|
||
<p class=a><a name=L135></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L135"><span
|
||
lang=EN-US>135</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L136></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L136"><span
|
||
lang=EN-US>136</span></a><span lang=EN-US> end_move:</span></p>
|
||
|
||
<p class=a><a name=L137></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L137"><span
|
||
lang=EN-US>137</span></a><span lang=EN-US>
|
||
mov ax,#SETUPSEG ! right, forgot this
|
||
at first. didn't work :-)</span></p>
|
||
|
||
<p class=a><a name=L138></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L138"><span
|
||
lang=EN-US>138</span></a><span lang=EN-US>
|
||
mov ds,ax
|
||
! ds</span>Ö¸Ïò±¾³ÌÐò<span lang=EN-US>(setup)</span>¶Î¡£</p>
|
||
|
||
<p class=a><a name=L139></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L139"><span
|
||
lang=EN-US>139</span></a><span lang=EN-US>
|
||
lidt
|
||
idt_48 ! load idt with
|
||
0,0 !
|
||
</span>¼ÓÔØ<span lang=EN-US>IDT</span>¼Ä´æÆ÷¡£</p>
|
||
|
||
<p class=a><a name=L140></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L140"><span
|
||
lang=EN-US>140</span></a><span lang=EN-US>
|
||
lgdt
|
||
gdt_48 ! load gdt with
|
||
whatever appropriate ! </span>¼ÓÔØ<span lang=EN-US>GDT</span>¼Ä´æÆ÷¡£</p>
|
||
|
||
<p class=a><a name=L141></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L141"><span
|
||
lang=EN-US>141</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L142></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L142"><span
|
||
lang=EN-US>142</span></a><span lang=EN-US> ! that was painless, now we enable
|
||
A20</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÒÔÉϵIJÙ×÷ºÜ¼òµ¥£¬ÏÖÔÚÎÒÃÇ¿ªÆô<span
|
||
lang=EN-US>A20</span>µØÖ·Ïß¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ΪÁËÄܹ»·ÃÎʺÍʹÓÃ<span
|
||
lang=EN-US>1MB</span>ÒÔÉϵÄÎïÀíÄڴ棬ÎÒÃÇÐèÒªÊ×ÏÈ¿ªÆô<span lang=EN-US>A20</span>µØÖ·Ïß¡£²Î¼û±¾³ÌÐòÁбíºó</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÓйØ<span lang=EN-US>A20</span>ÐźÅÏßµÄ˵Ã÷¡£¹ØÓÚËùÉæ¼°µÄһЩ¶Ë¿ÚºÍÃüÁ¿É²Î¿¼<span
|
||
lang=EN-US>kernel/chr_drv/keyboard.S</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>³ÌÐòºó¶Ô¼üÅ̽ӿڵÄ˵Ã÷¡£ÖÁÓÚ»úÆ÷ÊÇ·ñÕæÕý¿ªÆôÁË<span
|
||
lang=EN-US>A20</span>µØÖ·Ïߣ¬ÎÒÃÇ»¹ÐèÒªÔÚ½øÈë±£»¤Ä£Ê½</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ö®ºó£¨ÄÜ·ÃÎÊ<span lang=EN-US>1MB</span>ÒÔÉÏÄÚ´æÖ®ºó£©ÔÚ²âÊÔһϡ£Õâ¸ö¹¤×÷·ÅÔÚÁË<span
|
||
lang=EN-US>head.S</span>³ÌÐòÖУ¨<span lang=EN-US>32--36</span>ÐУ©¡£</p>
|
||
|
||
<p class=a><a name=L143></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L143"><span
|
||
lang=EN-US>143</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L144></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L144"><span
|
||
lang=EN-US>144</span></a><span lang=EN-US>
|
||
call empty_8042
|
||
! </span>²âÊÔ<span lang=EN-US>8042</span>״̬¼Ä´æÆ÷£¬µÈ´ýÊäÈ뻺³åÆ÷¿Õ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US>
|
||
! </span>Ö»Óе±ÊäÈ뻺³åÆ÷Ϊ¿Õʱ²Å¿ÉÒÔ¶ÔÆäÖ´ÐÐдÃüÁî¡£</p>
|
||
|
||
<p class=a><a name=L145></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L145"><span
|
||
lang=EN-US>145</span></a><span lang=EN-US>
|
||
mov
|
||
al,#0xD1
|
||
! command write ! 0xD1</span>ÃüÁîÂë<span lang=EN-US>-</span>±íʾҪдÊý¾Ýµ½</p>
|
||
|
||
<p class=a><a name=L146></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L146"><span
|
||
lang=EN-US>146</span></a><span lang=EN-US>
|
||
out #0x64,al
|
||
! 8042</span>µÄ<span lang=EN-US>P2</span>¶Ë¿Ú¡£<span lang=EN-US>P2</span>¶Ë¿Úλ<span
|
||
lang=EN-US>1</span>ÓÃÓÚ<span lang=EN-US>A20</span>ÏßµÄѡͨ¡£</p>
|
||
|
||
<p class=a><a name=L147></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L147"><span
|
||
lang=EN-US>147</span></a><span lang=EN-US> call
|
||
empty_8042
|
||
! </span>µÈ´ýÊäÈ뻺³åÆ÷¿Õ£¬¿´ÃüÁîÊÇ·ñ±»½ÓÊÜ¡£</p>
|
||
|
||
<p class=a><a name=L148></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L148"><span
|
||
lang=EN-US>148</span></a><span lang=EN-US>
|
||
mov
|
||
al,#0xDF
|
||
! A20 on ! </span>ѡͨ<span lang=EN-US>A20</span>µØÖ·ÏߵIJÎÊý¡£</p>
|
||
|
||
<p class=a><a name=L149></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L149"><span
|
||
lang=EN-US>149</span></a><span lang=EN-US>
|
||
out #0x60,al
|
||
! </span>Êý¾ÝҪдµ½<span lang=EN-US>0x60</span>¿Ú¡£</p>
|
||
|
||
<p class=a><a name=L150></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L150"><span
|
||
lang=EN-US>150</span></a><span lang=EN-US>
|
||
call empty_8042
|
||
! </span>Èô´ËʱÊäÈ뻺³åÆ÷Ϊ¿Õ£¬Ôò±íʾ<span lang=EN-US>A20</span>ÏßÒѾѡͨ¡£</p>
|
||
|
||
<p class=a><a name=L151></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L151"><span
|
||
lang=EN-US>151</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L152></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L152"><span
|
||
lang=EN-US>152</span></a><span lang=EN-US> ! well, that went ok, I hope. Now we
|
||
have to reprogram the interrupts :-(</span></p>
|
||
|
||
<p class=a><a name=L153></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L153"><span
|
||
lang=EN-US>153</span></a><span lang=EN-US> ! we put them right after the
|
||
intel-reserved hardware interrupts, at</span></p>
|
||
|
||
<p class=a><a name=L154></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L154"><span
|
||
lang=EN-US>154</span></a><span lang=EN-US> ! int 0x20-0x2F. There they won't mess up anything. Sadly IBM really</span></p>
|
||
|
||
<p class=a><a name=L155></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L155"><span
|
||
lang=EN-US>155</span></a><span lang=EN-US> ! messed this up with the original
|
||
PC, and they haven't been able to</span></p>
|
||
|
||
<p class=a><a name=L156></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L156"><span
|
||
lang=EN-US>156</span></a><span lang=EN-US> ! rectify it afterwards. Thus the
|
||
bios puts interrupts at 0x08-0x0f,</span></p>
|
||
|
||
<p class=a><a name=L157></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L157"><span
|
||
lang=EN-US>157</span></a><span lang=EN-US> ! which is used for the internal
|
||
hardware interrupts as well. We just</span></p>
|
||
|
||
<p class=a><a name=L158></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L158"><span
|
||
lang=EN-US>158</span></a><span lang=EN-US> ! have to reprogram the 8259's, and
|
||
it isn't fun.</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ï£ÍûÒÔÉÏÒ»ÇÐÕý³£¡£ÏÖÔÚÎÒÃDZØÐëÖØÐ¶ÔÖжϽøÐбà³Ì<span
|
||
lang=EN-US> :-( </span>ÎÒÃǽ«ËüÃÇ·ÅÔÚÕýºÃ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>´¦ÓÚ<span lang=EN-US>Intel</span>±£ÁôµÄÓ²¼þÖжϺóÃæ£¬¼´<span
|
||
lang=EN-US>int 0x20--0x2F</span>¡£ÔÚÄÇÀïËüÃDz»»áÒýÆð³åÍ»¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>²»ÐÒµÄÊÇ<span lang=EN-US>IBM</span>ÔÚÔ<span
|
||
lang=EN-US>PC</span>»úÖиãÔãÁË£¬ÒÔºóҲûÓоÀÕý¹ýÀ´¡£ËùÒÔ<span lang=EN-US>PC</span>»ú<span
|
||
lang=EN-US>BIOS</span>°ÑÖжÏ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>·ÅÔÚÁË<span lang=EN-US>0x08--0x0f</span>£¬ÕâЩÖжÏÒ²±»ÓÃÓÚÄÚ²¿Ó²¼þÖжϡ£ËùÒÔÎÒÃǾͱØÐëÖØÐ¶Ô<span
|
||
lang=EN-US>8259</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÖжϿØÖÆÆ÷½øÐбà³Ì£¬ÕâÒ»µã¶¼Ã»Òâ˼¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> !</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! PC</span>»úʹÓÃ<span lang=EN-US>2</span>¸ö<span
|
||
lang=EN-US>8259A</span>оƬ£¬¹ØÓڶԿɱà³Ì¿ØÖÆÆ÷<span
|
||
lang=EN-US>8259A</span>оƬµÄ±à³Ì·½·¨Çë²Î¼û±¾³ÌÐòºóµÄ½éÉÜ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÚ<span lang=EN-US>162</span>ÐÐÉ϶¨ÒåµÄÁ½¸ö×Ö£¨<span
|
||
lang=EN-US>0x00eb</span>£©ÊÇÖ±½ÓʹÓûúÆ÷Âë±íʾµÄÁ½ÌõÏà¶ÔÌø×ªÖ¸ÁÆðÑÓʱ×÷Óá£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! 0xeb</span>ÊÇÖ±½Ó½üÌø×ªÖ¸ÁîµÄ²Ù×÷Â룬´ø<span
|
||
lang=EN-US>1</span>¸ö×Ö½ÚµÄÏà¶ÔÎ»ÒÆÖµ¡£Òò´ËÌø×ª·¶Î§ÊÇ<span lang=EN-US>-127</span>µ½<span
|
||
lang=EN-US>127</span>¡£<span lang=EN-US>CPU</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ͨ¹ý°ÑÕâ¸öÏà¶ÔÎ»ÒÆÖµ¼Óµ½<span
|
||
lang=EN-US>EIP</span>¼Ä´æÆ÷ÖоÍÐγÉÒ»¸öеÄÓÐЧµØÖ·¡£´Ëʱ<span lang=EN-US>EIP</span>Ö¸ÏòÏÂÒ»Ìõ±»Ö´ÐÐ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÄÖ¸Áî¡£Ö´ÐÐʱËù»¨·ÑµÄ<span
|
||
lang=EN-US>CPU</span>ʱÖÓÖÜÆÚÊýÊÇ<span lang=EN-US>7</span>ÖÁ<span lang=EN-US>10</span>¸ö¡£<span
|
||
lang=EN-US>0x00eb </span>±íÊ¾Ìø×ªÖµÊÇ<span lang=EN-US>0</span>µÄÒ»ÌõÖ¸ÁÒò</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>´Ë»¹ÊÇÖ±½ÓÖ´ÐÐÏÂÒ»ÌõÖ¸Áî¡£ÕâÁ½ÌõÖ¸Áî¹²¿ÉÌṩ<span
|
||
lang=EN-US>14--20</span>¸ö<span lang=EN-US>CPU</span>ʱÖÓÖÜÆÚµÄÑÓ³Ùʱ¼ä¡£ÔÚ<span
|
||
lang=EN-US>as86</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÖÐûÓбíʾÏàÓ¦Ö¸ÁîµÄÖú¼Ç·û£¬Òò´Ë<span
|
||
lang=EN-US>Linus</span>ÔÚ<span lang=EN-US>setup.s</span>µÈһЩ»ã±à³ÌÐòÖоÍÖ±½ÓʹÓûúÆ÷ÂëÀ´±í</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ʾÕâÖÖÖ¸Áî¡£ÁíÍ⣬ÿ¸ö¿Õ²Ù×÷Ö¸Áî<span
|
||
lang=EN-US>NOP</span>µÄʱÖÓÖÜÆÚÊýÊÇ<span lang=EN-US>3</span>¸ö£¬Òò´ËÈôÒª´ïµ½ÏàͬµÄÑÓ³ÙЧ¹û¾Í</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÐèÒª<span lang=EN-US>6</span>ÖÁ<span
|
||
lang=EN-US>7</span>¸ö<span lang=EN-US>NOP</span>Ö¸Áî¡£</p>
|
||
|
||
<p class=a><a name=L159></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L159"><span
|
||
lang=EN-US>159</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! 8259</span>оƬÖ÷Ƭ¶Ë¿ÚÊÇ<span
|
||
lang=EN-US>0x20-0x21</span>£¬´ÓƬ¶Ë¿ÚÊÇ<span lang=EN-US>0xA0-0xA1</span>¡£Êä³öÖµ<span
|
||
lang=EN-US>0x11</span>±íʾ³õʼ»¯ÃüÁʼ£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ËüÊÇ<span lang=EN-US>ICW1</span>ÃüÁî×Ö£¬±íʾ±ßÑØ´¥·¢¡¢¶àƬ<span
|
||
lang=EN-US>8259</span>¼¶Á¬¡¢×îºóÒª·¢ËÍ<span lang=EN-US>ICW4</span>ÃüÁî×Ö¡£</p>
|
||
|
||
<p class=a><a name=L160></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L160"><span
|
||
lang=EN-US>160</span></a><span lang=EN-US>
|
||
mov
|
||
al,#0x11
|
||
! initialization sequence</span></p>
|
||
|
||
<p class=a><a name=L161></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L161"><span
|
||
lang=EN-US>161</span></a><span lang=EN-US>
|
||
out
|
||
#0x20,al
|
||
! send it to 8259A-1 ! </span>·¢Ë͵½<span
|
||
lang=EN-US>8259A</span>Ö÷оƬ¡£</p>
|
||
|
||
<p class=a><a name=L162></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L162"><span
|
||
lang=EN-US>162</span></a><span lang=EN-US>
|
||
.word
|
||
0x00eb,0x00eb ! jmp
|
||
$+2, jmp $+2 ! '$'</span>±íʾµ±Ç°Ö¸ÁîµÄµØÖ·£¬</p>
|
||
|
||
<p class=a><a name=L163></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L163"><span
|
||
lang=EN-US>163</span></a><span lang=EN-US>
|
||
out
|
||
#0xA0,al
|
||
! and to 8259A-2 ! </span>ÔÙ·¢Ë͵½<span
|
||
lang=EN-US>8259A</span>´ÓоƬ¡£</p>
|
||
|
||
<p class=a><a name=L164></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L164"><span
|
||
lang=EN-US>164</span></a><span lang=EN-US>
|
||
.word 0x00eb,0x00eb</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! Linux</span>ϵͳӲ¼þÖжϺű»ÉèÖóɴÓ<span
|
||
lang=EN-US>0x20</span>¿ªÊ¼¡£²Î¼û±í<span lang=EN-US>3-2</span>£ºÓ²¼þÖжÏÇëÇóÐźÅÓëÖжϺŶÔÓ¦±í¡£</p>
|
||
|
||
<p class=a><a name=L165></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L165"><span
|
||
lang=EN-US>165</span></a><span lang=EN-US>
|
||
mov
|
||
al,#0x20
|
||
! start of hardware int's (0x20)</span></p>
|
||
|
||
<p class=a><a name=L166></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L166"><span
|
||
lang=EN-US>166</span></a><span lang=EN-US>
|
||
out #0x21,al
|
||
! </span>ËÍÖ÷оƬ<span lang=EN-US>ICW2</span>ÃüÁî×Ö£¬ÉèÖÃÆðʼÖжϺţ¬ÒªËÍÆæ¶Ë¿Ú¡£</p>
|
||
|
||
<p class=a><a name=L167></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L167"><span
|
||
lang=EN-US>167</span></a><span lang=EN-US>
|
||
.word 0x00eb,0x00eb</span></p>
|
||
|
||
<p class=a><a name=L168></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L168"><span
|
||
lang=EN-US>168</span></a><span lang=EN-US> mov
|
||
al,#0x28
|
||
! start of hardware int's 2 (0x28)</span></p>
|
||
|
||
<p class=a><a name=L169></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L169"><span
|
||
lang=EN-US>169</span></a><span lang=EN-US>
|
||
out #0xA1,al
|
||
! </span>ËÍ´ÓоƬ<span lang=EN-US>ICW2</span>ÃüÁî×Ö£¬´ÓоƬµÄÆðʼÖжϺš£</p>
|
||
|
||
<p class=a><a name=L170></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L170"><span
|
||
lang=EN-US>170</span></a><span lang=EN-US>
|
||
.word 0x00eb,0x00eb</span></p>
|
||
|
||
<p class=a><a name=L171></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L171"><span
|
||
lang=EN-US>171</span></a><span lang=EN-US>
|
||
mov
|
||
al,#0x04
|
||
! 8259-1 is master</span></p>
|
||
|
||
<p class=a><a name=L172></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L172"><span
|
||
lang=EN-US>172</span></a><span lang=EN-US>
|
||
out #0x21,al
|
||
! </span>ËÍÖ÷оƬ<span lang=EN-US>ICW3</span>ÃüÁî×Ö£¬Ö÷оƬµÄ<span lang=EN-US>IR2</span>Á¬´ÓоƬ<span
|
||
lang=EN-US>INT</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US>
|
||
</span>£¡²Î¼û´úÂëÁбíºóµÄ˵Ã÷¡£</p>
|
||
|
||
<p class=a><a name=L173></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L173"><span
|
||
lang=EN-US>173</span></a><span lang=EN-US>
|
||
.word 0x00eb,0x00eb</span></p>
|
||
|
||
<p class=a><a name=L174></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L174"><span
|
||
lang=EN-US>174</span></a><span lang=EN-US>
|
||
mov
|
||
al,#0x02
|
||
! 8259-2 is slave</span></p>
|
||
|
||
<p class=a><a name=L175></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L175"><span
|
||
lang=EN-US>175</span></a><span lang=EN-US>
|
||
out #0xA1,al
|
||
! </span>ËÍ´ÓоƬ<span lang=EN-US>ICW3</span>ÃüÁî×Ö£¬±íʾ´ÓоƬµÄ<span lang=EN-US>INT</span>Á¬µ½Ö÷о</p>
|
||
|
||
<p class=a><span lang=EN-US>
|
||
! </span>ƬµÄ<span
|
||
lang=EN-US>IR2</span>Òý½ÅÉÏ¡£</p>
|
||
|
||
<p class=a><a name=L176></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L176"><span
|
||
lang=EN-US>176</span></a><span lang=EN-US>
|
||
.word 0x00eb,0x00eb</span></p>
|
||
|
||
<p class=a><a name=L177></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L177"><span
|
||
lang=EN-US>177</span></a><span lang=EN-US>
|
||
mov
|
||
al,#0x01
|
||
! 8086 mode for both</span></p>
|
||
|
||
<p class=a><a name=L178></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L178"><span
|
||
lang=EN-US>178</span></a><span lang=EN-US>
|
||
out #0x21,al
|
||
! </span>ËÍÖ÷оƬ<span lang=EN-US>ICW4</span>ÃüÁî×Ö¡£<span lang=EN-US>8086</span>ģʽ£»ÆÕͨ<span
|
||
lang=EN-US>EOI</span>¡¢·Ç»º³å</p>
|
||
|
||
<p class=a><span lang=EN-US>
|
||
! </span>·½Ê½£¬Ðè·¢ËÍÖ¸ÁîÀ´¸´Î»¡£³õʼ»¯½áÊø£¬Ð¾Æ¬¾ÍÐ÷¡£</p>
|
||
|
||
<p class=a><a name=L179></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L179"><span
|
||
lang=EN-US>179</span></a><span lang=EN-US>
|
||
.word 0x00eb,0x00eb</span></p>
|
||
|
||
<p class=a><a name=L180></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L180"><span
|
||
lang=EN-US>180</span></a><span lang=EN-US>
|
||
out #0xA1,al
|
||
</span>£¡ËÍ´ÓоƬ<span lang=EN-US>ICW4</span>ÃüÁî×Ö£¬ÄÚÈÝͬÉÏ¡£</p>
|
||
|
||
<p class=a><a name=L181></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L181"><span
|
||
lang=EN-US>181</span></a><span lang=EN-US>
|
||
.word 0x00eb,0x00eb</span></p>
|
||
|
||
<p class=a><a name=L182></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L182"><span
|
||
lang=EN-US>182</span></a><span lang=EN-US>
|
||
mov
|
||
al,#0xFF
|
||
! mask off all interrupts for now</span></p>
|
||
|
||
<p class=a><a name=L183></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L183"><span
|
||
lang=EN-US>183</span></a><span lang=EN-US>
|
||
out #0x21,al
|
||
! </span>ÆÁ±ÎÖ÷оƬËùÓÐÖжÏÇëÇó¡£</p>
|
||
|
||
<p class=a><a name=L184></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L184"><span
|
||
lang=EN-US>184</span></a><span lang=EN-US>
|
||
.word 0x00eb,0x00eb</span></p>
|
||
|
||
<p class=a><a name=L185></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L185"><span
|
||
lang=EN-US>185</span></a><span lang=EN-US>
|
||
out #0xA1,al
|
||
</span>£¡ÆÁ±Î´ÓоƬËùÓÐÖжÏÇëÇó¡£</p>
|
||
|
||
<p class=a><a name=L186></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L186"><span
|
||
lang=EN-US>186</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L187></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L187"><span
|
||
lang=EN-US>187</span></a><span lang=EN-US> ! well, that certainly wasn't fun
|
||
:-(. Hopefully it works, and we don't</span></p>
|
||
|
||
<p class=a><a name=L188></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L188"><span
|
||
lang=EN-US>188</span></a><span lang=EN-US> ! need no steenking BIOS anyway
|
||
(except for the initial loading :-).</span></p>
|
||
|
||
<p class=a><a name=L189></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L189"><span
|
||
lang=EN-US>189</span></a><span lang=EN-US> ! The BIOS-routine wants lots of
|
||
unnecessary data, and it's less</span></p>
|
||
|
||
<p class=a><a name=L190></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L190"><span
|
||
lang=EN-US>190</span></a><span lang=EN-US> ! "interesting" anyway.
|
||
This is how REAL programmers do it.</span></p>
|
||
|
||
<p class=a><a name=L191></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L191"><span
|
||
lang=EN-US>191</span></a><span lang=EN-US> !</span></p>
|
||
|
||
<p class=a><a name=L192></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L192"><span
|
||
lang=EN-US>192</span></a><span lang=EN-US> ! Well, now's the time to actually
|
||
move into protected mode. To make</span></p>
|
||
|
||
<p class=a><a name=L193></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L193"><span
|
||
lang=EN-US>193</span></a><span lang=EN-US> ! things as simple as possible, we
|
||
do no register set-up or anything,</span></p>
|
||
|
||
<p class=a><a name=L194></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L194"><span
|
||
lang=EN-US>194</span></a><span lang=EN-US> ! we let the gnu-compiled 32-bit
|
||
programs do that. We just jump to</span></p>
|
||
|
||
<p class=a><a name=L195></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L195"><span
|
||
lang=EN-US>195</span></a><span lang=EN-US> ! absolute address 0x00000, in
|
||
32-bit protected mode.</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ºß£¬ÉÏÃæÕâ¶Î±à³Ìµ±È»Ã»¾¢<span
|
||
lang=EN-US>:-(</span>£¬µ«Ï£ÍûÕâÑùÄܹ¤×÷£¬¶øÇÒÎÒÃÇÒ²²»ÔÙÐèÒª·¦Î¶µÄ<span lang=EN-US>BIOS </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÁË£¨³ýÁ˳õʼ¼ÓÔØ<span
|
||
lang=EN-US>:-)</span>¡£<span lang=EN-US>BIOS</span>×Ó³ÌÐòÒªÇóºÜ¶à²»±ØÒªµÄÊý¾Ý£¬¶øÇÒËüÒ»µã¶¼Ã»È¤¡£ÄÇÊÇ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¡°ÕæÕý¡±µÄ³ÌÐòÔ±Ëù×öµÄÊ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ºÃÁË£¬ÏÖÔÚÊÇÕæÕý¿ªÊ¼½øÈë±£»¤Ä£Ê½µÄʱºòÁË¡£ÎªÁ˰ÑÊÂÇé×öµÃ¾¡Á¿¼òµ¥£¬ÎÒÃDz¢²»¶Ô</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¼Ä´æÆ÷ÄÚÈݽøÐÐÈκÎÉèÖá£ÎÒÃÇÈÃ<span
|
||
lang=EN-US>gnu</span>±àÒëµÄ<span lang=EN-US>32</span>λ³ÌÐòÈ¥´¦ÀíÕâЩÊ¡£ÔÚ½øÈë<span
|
||
lang=EN-US>32</span>λ±£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>»¤Ä£Ê½Ê±ÎÒÃǽöÊǼòµ¥µØÌø×ªµ½¾ø¶ÔµØÖ·<span
|
||
lang=EN-US>0x00000</span>´¦¡£</p>
|
||
|
||
<p class=a><a name=L196></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L196"><span
|
||
lang=EN-US>196</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÉèÖò¢½øÈë<span
|
||
lang=EN-US>32</span>λ±£»¤Ä£Ê½ÔËÐС£Ê×ÏȼÓÔØ»úÆ÷״̬×Ö<span lang=EN-US>(lmsw-Load Machine Status
|
||
Word)</span>£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ò²³Æ¿ØÖƼĴæÆ÷<span
|
||
lang=EN-US>CR0</span>£¬Æä±ÈÌØÎ»<span lang=EN-US>0</span>ÖÃ<span lang=EN-US>1</span>½«µ¼ÖÂ<span
|
||
lang=EN-US>CPU</span>Çл»µ½±£»¤Ä£Ê½£¬²¢ÇÒÔËÐÐÔÚÌØÈ¨¼¶<span lang=EN-US>0</span>ÖУ¬¼´</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µ±Ç°ÌØÈ¨¼¶<span lang=EN-US>CPL=0</span>¡£´Ëʱ¶Î¼Ä´æÆ÷ÈÔȻָÏòÓëʵµØÖ·Ä£Ê½ÖÐÏàͬµÄÏßÐÔµØÖ·´¦£¨ÔÚʵµØÖ·Ä£Ê½ÏÂ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏßÐÔµØÖ·ÓëÎïÀíÄÚ´æµØÖ·Ïàͬ£©¡£ÔÚÉèÖøñÈÌØÎ»ºó£¬ËæºóÒ»ÌõÖ¸Áî±ØÐëÊÇÒ»Ìõ¶Î¼äÌø×ªÖ¸ÁîÒÔ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÓÃÓÚË¢ÐÂ<span lang=EN-US>CPU</span>µ±Ç°Ö¸Áî¶ÓÁС£ÒòΪ<span
|
||
lang=EN-US>CPU</span>ÊÇÔÚÖ´ÐÐÒ»ÌõÖ¸Áî֮ǰ¾ÍÒÑ´ÓÄÚ´æ¶ÁÈ¡¸ÃÖ¸Áî²¢¶ÔÆä½øÐÐ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>½âÂ롣Ȼ¶øÔÚ½øÈë±£»¤Ä£Ê½ÒÔºóÄÇЩÊôÓÚʵģʽµÄÔ¤ÏÈÈ¡µÃµÄÖ¸ÁîÐÅÏ¢¾Í±äµÃ²»ÔÙÓÐЧ¡£¶øÒ»Ìõ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¶Î¼äÌø×ªÖ¸Áî¾Í»áË¢ÐÂ<span
|
||
lang=EN-US>CPU</span>µÄµ±Ç°Ö¸Áî¶ÓÁУ¬¼´¶ªÆúÕâЩÎÞЧÐÅÏ¢¡£ÁíÍ⣬ÔÚ<span lang=EN-US>Intel</span>¹«Ë¾µÄÊÖ²á</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÉϽ¨Òé<span lang=EN-US>80386</span>»òÒÔÉÏ<span
|
||
lang=EN-US>CPU</span>Ó¦¸ÃʹÓÃÖ¸Áî<span lang=EN-US>¡°mov cr0,ax</span>¡±Çл»µ½±£»¤Ä£Ê½¡£<span
|
||
lang=EN-US>lmsw</span>Ö¸Áî½öÓÃÓÚ¼æÈÝÒÔ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ǰµÄ<span lang=EN-US>286 CPU</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L197></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L197"><span
|
||
lang=EN-US>197</span></a><span lang=EN-US>
|
||
mov ax,#0x0001 !
|
||
protected mode (PE) bit ! </span>±£»¤Ä£Ê½±ÈÌØÎ»<span
|
||
lang=EN-US>(PE)</span>¡£</p>
|
||
|
||
<p class=a><a name=L198></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L198"><span
|
||
lang=EN-US>198</span></a><span lang=EN-US>
|
||
lmsw
|
||
ax
|
||
! This is it!
|
||
! </span>¾ÍÕâÑù¼ÓÔØ»úÆ÷״̬×Ö<span lang=EN-US>!</span></p>
|
||
|
||
<p class=a><a name=L199></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L199"><span
|
||
lang=EN-US>199</span></a><span lang=EN-US>
|
||
jmpi
|
||
0,8 !
|
||
jmp offset 0 of segment 8 (cs) ! </span>Ìø×ªÖÁ<span lang=EN-US>cs</span>¶ÎÆ«ÒÆ<span
|
||
lang=EN-US>0</span>´¦¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÎÒÃÇÒѾ½«<span lang=EN-US>system</span>Ä£¿éÒÆ¶¯µ½<span
|
||
lang=EN-US>0x00000</span>¿ªÊ¼µÄµØ·½£¬ËùÒÔÉϾäÖÐµÄÆ«ÒƵØÖ·ÊÇ<span lang=EN-US>0</span>¡£¶ø¶ÎÖµ<span
|
||
lang=EN-US>8</span>ÒѾ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÊDZ£»¤Ä£Ê½ÏµĶÎÑ¡Ôñ·ûÁË£¬ÓÃÓÚÑ¡ÔñÃèÊö·û±íºÍÃèÊö·û±íÏîÒÔ¼°ËùÒªÇóµÄÌØÈ¨¼¶¡£¶ÎÑ¡Ôñ·û³¤</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¶ÈΪ<span lang=EN-US>16</span>루<span
|
||
lang=EN-US>2</span>×Ö½Ú£©£»Î»<span lang=EN-US>0-1</span>±íʾÇëÇóµÄÌØÈ¨¼¶<span lang=EN-US>0--3</span>£¬µ«<span
|
||
lang=EN-US>Linux</span>²Ù×÷ϵͳֻÓõ½Á½¼¶£º<span lang=EN-US>0</span>¼¶£¨ÄÚ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ºË¼¶£©ºÍ<span lang=EN-US>3</span>¼¶£¨Óû§¼¶£©£»Î»<span
|
||
lang=EN-US>2</span>ÓÃÓÚÑ¡ÔñÈ«¾ÖÃèÊö·û±í£¨<span lang=EN-US>0</span>£©»¹ÊǾֲ¿ÃèÊö·û±í<span
|
||
lang=EN-US>(1)</span>£»Î»<span lang=EN-US>3-15</span>ÊÇÃè</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Êö·û±íÏîµÄË÷Òý£¬Ö¸³öÑ¡ÔñµÚ¼¸ÏîÃèÊö·û¡£ËùÒÔ¶ÎÑ¡Ôñ·û<span
|
||
lang=EN-US>8</span>£¨<span lang=EN-US>0b0000,0000,0000,1000</span>£©±íʾÇëÇó</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÌØÈ¨¼¶<span lang=EN-US>0</span>¡¢Ê¹ÓÃÈ«¾ÖÃèÊö·û±í<span
|
||
lang=EN-US>GDT</span>ÖеÚ<span lang=EN-US>2</span>¸ö¶ÎÃèÊö·ûÏ¸ÃÏîÖ¸³ö´úÂëµÄ»ùµØÖ·ÊÇ<span
|
||
lang=EN-US>0</span>£¨²Î¼û<span lang=EN-US>571</span>ÐУ©£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Òò´ËÕâÀïµÄÌø×ªÖ¸Áî¾Í»áÈ¥Ö´ÐÐ<span
|
||
lang=EN-US>system</span>ÖеĴúÂë¡£ÁíÍ⣬</p>
|
||
|
||
<p class=a><a name=L200></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L200"><span
|
||
lang=EN-US>200</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L201></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L201"><span
|
||
lang=EN-US>201</span></a><span lang=EN-US> ! This routine checks that the
|
||
keyboard command queue is empty</span></p>
|
||
|
||
<p class=a><a name=L202></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L202"><span
|
||
lang=EN-US>202</span></a><span lang=EN-US> ! No timeout is used - if this hangs
|
||
there is something wrong with</span></p>
|
||
|
||
<p class=a><a name=L203></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L203"><span
|
||
lang=EN-US>203</span></a><span lang=EN-US> ! the machine, and we probably
|
||
couldn't proceed anyway.</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÕâ¸ö×Ó³ÌÐò¼ì²é¼üÅÌÃüÁî¶ÓÁÐÊÇ·ñΪ¿Õ¡£ÕâÀﲻʹÓó¬Ê±·½·¨<span
|
||
lang=EN-US> - </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Èç¹ûÕâÀïËÀ»ú£¬Ôò˵Ã÷<span
|
||
lang=EN-US>PC</span>»úÓÐÎÊÌ⣬ÎÒÃǾÍûÓа취ÔÙ´¦ÀíÏÂÈ¥ÁË¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ö»Óе±ÊäÈ뻺³åÆ÷Ϊ¿Õʱ£¨¼üÅÌ¿ØÖÆÆ÷״̬¼Ä´æÆ÷λ<span
|
||
lang=EN-US>1 = 0</span>£©²Å¿ÉÒÔ¶ÔÆäÖ´ÐÐдÃüÁî¡£</p>
|
||
|
||
<p class=a><a name=L204></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L204"><span
|
||
lang=EN-US>204</span></a><span lang=EN-US> empty_8042:</span></p>
|
||
|
||
<p class=a><a name=L205></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L205"><span
|
||
lang=EN-US>205</span></a><span lang=EN-US>
|
||
.word 0x00eb,0x00eb</span></p>
|
||
|
||
<p class=a><a name=L206></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L206"><span
|
||
lang=EN-US>206</span></a><span lang=EN-US>
|
||
in
|
||
al,#0x64 ! 8042 status port
|
||
! </span>¶Á<span lang=EN-US>AT</span>¼üÅÌ¿ØÖÆÆ÷״̬¼Ä´æÆ÷¡£</p>
|
||
|
||
<p class=a><a name=L207></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L207"><span
|
||
lang=EN-US>207</span></a><span lang=EN-US>
|
||
test
|
||
al,#2 ! is input
|
||
buffer full? ! </span>²âÊÔλ<span lang=EN-US>1</span>£¬ÊäÈ뻺³åÆ÷Âú£¿</p>
|
||
|
||
<p class=a><a name=L208></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L208"><span
|
||
lang=EN-US>208</span></a><span lang=EN-US>
|
||
jnz empty_8042 ! yes -
|
||
loop</span></p>
|
||
|
||
<p class=a><a name=L209></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L209"><span
|
||
lang=EN-US>209</span></a><span lang=EN-US>
|
||
ret</span></p>
|
||
|
||
<p class=a><a name=L210></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L210"><span
|
||
lang=EN-US>210</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L211></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L211"><span
|
||
lang=EN-US>211</span></a><span lang=EN-US> ! Routine trying to recognize type
|
||
of SVGA-board present (if any)</span></p>
|
||
|
||
<p class=a><a name=L212></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L212"><span
|
||
lang=EN-US>212</span></a><span lang=EN-US> ! and if it recognize one gives the
|
||
choices of resolution it offers.</span></p>
|
||
|
||
<p class=a><a name=L213></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L213"><span
|
||
lang=EN-US>213</span></a><span lang=EN-US> ! If one is found the resolution
|
||
chosen is given by al,ah (rows,cols).</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÊÇÓÃÓÚʶ±ð<span
|
||
lang=EN-US>SVGA</span>ÏÔʾ¿¨£¨ÈôÓеϰ£©µÄ×Ó³ÌÐò¡£Èôʶ±ð³öÒ»¿é¾ÍÏòÓû§</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÌṩѡÔñ·Ö±æÂʵĻú»á£¬²¢°Ñ·Ö±æÂÊ·ÅÈë¼Ä´æÆ÷<span
|
||
lang=EN-US>al</span>¡¢<span lang=EN-US>ah</span>£¨ÐС¢ÁУ©Öзµ»Ø¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>×¢ÒâÏÂÃæ<span lang=EN-US>215--566</span>ÐдúÂëÇ£Éæµ½ÖÚ¶àÏÔʾ¿¨¶Ë¿ÚÐÅÏ¢£¬Òò´Ë±È½Ï¸´ÔÓ¡£µ«ÓÉÓÚÕâ¶Î´úÂëÓëÄÚºË</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÔËÐйØÏµ²»´ó£¬Òò´Ë¿ÉÒÔÌø¹ý²»¿´¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÊ×ÏÈÏÔʾ<span lang=EN-US>588</span>ÐÐÉϵÄ<span
|
||
lang=EN-US>msg1</span>×Ö·û´®£¨<span lang=EN-US>"</span>°´<span lang=EN-US><</span>»Ø³µ¼ü<span
|
||
lang=EN-US>></span>²é¿´´æÔÚµÄ<span lang=EN-US>SVGA</span>ģʽ£¬»ò°´ÈÎÒâ¼ü¼ÌÐø<span
|
||
lang=EN-US>"</span>£©£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>È»ºóÑ»·¶ÁÈ¡¼üÅÌ¿ØÖÆÆ÷Êä³ö»º³åÆ÷£¬µÈ´ýÓû§°´¼ü¡£Èç¹ûÓû§°´Ï»سµ¼ü¾ÍÈ¥¼ì²éϵͳ¾ßÓÐ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÄ<span lang=EN-US>SVGA</span>ģʽ£¬²¢ÔÚ<span
|
||
lang=EN-US>AL</span>ºÍ<span lang=EN-US>AH</span>Öзµ»Ø×î´óÐÐÁÐÖµ£¬·ñÔòÉèÖÃĬÈÏÖµ<span
|
||
lang=EN-US>AL=25</span>ÐС¢<span lang=EN-US>AH=80</span>Áв¢·µ»Ø¡£</p>
|
||
|
||
<p class=a><a name=L214></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L214"><span
|
||
lang=EN-US>214</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L215></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L215"><span
|
||
lang=EN-US>215</span></a><span lang=EN-US> chsvga: cld</span></p>
|
||
|
||
<p class=a><a name=L216></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L216"><span
|
||
lang=EN-US>216</span></a><span lang=EN-US>
|
||
push ds
|
||
! </span>±£´æ<span lang=EN-US>ds</span>Öµ¡£½«ÔÚ<span lang=EN-US>231</span>ÐУ¨»ò<span
|
||
lang=EN-US>490</span>»ò<span lang=EN-US>492</span>ÐУ©µ¯³ö¡£</p>
|
||
|
||
<p class=a><a name=L217></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L217"><span
|
||
lang=EN-US>217</span></a><span lang=EN-US> push
|
||
cs
|
||
! </span>°ÑĬÈÏÊý¾Ý¶ÎÉèÖóɺʹúÂë¶Îͬһ¸ö¶Î¡£</p>
|
||
|
||
<p class=a><a name=L218></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L218"><span
|
||
lang=EN-US>218</span></a><span lang=EN-US>
|
||
pop ds</span></p>
|
||
|
||
<p class=a><a name=L219></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L219"><span
|
||
lang=EN-US>219</span></a><span lang=EN-US>
|
||
mov ax,#0xc000</span></p>
|
||
|
||
<p class=a><a name=L220></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L220"><span
|
||
lang=EN-US>220</span></a><span lang=EN-US>
|
||
mov es,ax
|
||
! es </span>Ö¸Ïò<span lang=EN-US>0xc000</span>¶Î¡£´Ë´¦ÊÇ<span lang=EN-US>VGA</span>¿¨ÉϵÄ<span
|
||
lang=EN-US>ROM BIOS</span>Çø¡£</p>
|
||
|
||
<p class=a><a name=L221></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L221"><span
|
||
lang=EN-US>221</span></a><span lang=EN-US>
|
||
lea si,msg1
|
||
! ds:si</span>Ö¸Ïò<span lang=EN-US>msg1</span>×Ö·û´®¡£</p>
|
||
|
||
<p class=a><a name=L222></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L222"><span
|
||
lang=EN-US>222</span></a><span lang=EN-US>
|
||
call prtstr
|
||
! </span>ÏÔʾÒÔ<span lang=EN-US>NULL</span>½áβµÄ<span lang=EN-US>msg1</span>×Ö·û´®¡£</p>
|
||
|
||
<p class=a><a name=L223></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L223"><span
|
||
lang=EN-US>223</span></a><span lang=EN-US> nokey:
|
||
in al,#0x60
|
||
! </span>¶ÁÈ¡¼üÅÌ¿ØÖÆÆ÷Êä³ö»º³åÆ÷£¨À´×Ô¼üÅ̵ÄɨÃèÂë»òÃüÁ¡£</p>
|
||
|
||
<p class=a><a name=L224></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L224"><span
|
||
lang=EN-US>224</span></a><span lang=EN-US>
|
||
cmp al,#0x82
|
||
! </span>Èç¹ûÊÕµ½±È<span lang=EN-US>0x82</span>СµÄɨÃèÂëÔòÊǽÓͨɨÃèÂ룬ÒòΪ<span lang=EN-US>0x82</span>ÊÇ</p>
|
||
|
||
<p class=a><a name=L225></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L225"><span
|
||
lang=EN-US>225</span></a><span lang=EN-US>
|
||
jb nokey
|
||
! </span>×îС¶Ï¿ªÉ¨ÃèÂëÖµ¡£Ð¡ÓÚ<span lang=EN-US>0x82</span>±íʾ»¹Ã»Óа´¼üËÉ¿ª¡£</p>
|
||
|
||
<p class=a><a name=L226></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L226"><span
|
||
lang=EN-US>226</span></a><span lang=EN-US>
|
||
cmp al,#0xe0
|
||
! </span>Èç¹ûɨÃèÂë´óÓÚ<span lang=EN-US>0xe0</span>£¬±íʾÊÕµ½µÄÊÇÀ©Õ¹É¨ÃèÂëǰ׺¡£</p>
|
||
|
||
<p class=a><a name=L227></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L227"><span
|
||
lang=EN-US>227</span></a><span lang=EN-US>
|
||
ja nokey</span></p>
|
||
|
||
<p class=a><a name=L228></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L228"><span
|
||
lang=EN-US>228</span></a><span lang=EN-US>
|
||
cmp al,#0x9c ! </span>Èç¹û¶Ï¿ªÉ¨ÃèÂëÊÇ<span lang=EN-US>0x9c</span>£¬±íʾÓû§°´ÏÂ<span
|
||
lang=EN-US>/</span>ËÉ¿ªÁ˻سµ¼ü£¬</p>
|
||
|
||
<p class=a><a name=L229></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L229"><span
|
||
lang=EN-US>229</span></a><span lang=EN-US>
|
||
je svga
|
||
! </span>ÓÚÊdzÌÐòÌø×ªÈ¥¼ì²éϵͳÊÇ·ñ¾ßÓÐ<span lang=EN-US>SVGA</span>ģʽ¡£</p>
|
||
|
||
<p class=a><a name=L230></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L230"><span
|
||
lang=EN-US>230</span></a><span lang=EN-US>
|
||
mov ax,#0x5019 ! </span>·ñÔò°Ñ<span
|
||
lang=EN-US>AX</span>Öзµ»ØÐÐÁÐֵĬÈÏÉèÖÃΪ<span lang=EN-US>AL=25</span>ÐС¢<span lang=EN-US>AH=80</span>ÁС£</p>
|
||
|
||
<p class=a><a name=L231></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L231"><span
|
||
lang=EN-US>231</span></a><span lang=EN-US>
|
||
pop ds</span></p>
|
||
|
||
<p class=a><a name=L232></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L232"><span
|
||
lang=EN-US>232</span></a><span lang=EN-US>
|
||
ret</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæ¸ù¾Ý<span lang=EN-US>VGA</span>ÏÔʾ¿¨ÉϵÄ<span
|
||
lang=EN-US>ROM BIOS</span>Ö¸¶¨Î»Öô¦µÄÌØÕ÷Êý¾Ý´®»òÕßÖ§³ÖµÄÌØ±ð¹¦ÄÜÀ´ÅжϻúÆ÷ÉÏ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>°²×°µÄÊÇÊ²Ã´ÅÆ×ÓµÄÏÔʾ¿¨¡£±¾³ÌÐò¹²Ö§³Ö<span
|
||
lang=EN-US>10</span>ÖÖÏÔʾ¿¨µÄÀ©Õ¹¹¦ÄÜ¡£×¢Ò⣬´Ëʱ³ÌÐòÒѾÔÚµÚ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! 220</span>ÐаÑ<span lang=EN-US>es</span>Ö¸Ïò<span
|
||
lang=EN-US>VGA</span>¿¨ÉÏ<span lang=EN-US>ROM BIOS</span>ËùÔڵĶÎ<span lang=EN-US>0xc000</span>£¨²Î¼ûµÚ<span
|
||
lang=EN-US>2</span>Õ£©¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ê×ÏÈÅжÏÊDz»ÊÇ<span
|
||
lang=EN-US>ATI</span>ÏÔʾ¿¨¡£ÎÒÃÇ°Ñ <span lang=EN-US>ds:si</span>Ö¸Ïò<span lang=EN-US>595</span>ÐÐÉÏ<span
|
||
lang=EN-US>ATI</span>ÏÔʾ¿¨ÌØÕ÷Êý¾Ý´®£¬²¢°Ñ<span lang=EN-US>es:si</span>Ö¸</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ïò<span lang=EN-US>VGA
|
||
BIOS</span>ÖÐÖ¸¶¨Î»Öã¨Æ«ÒÆ<span lang=EN-US>0x31</span>£©´¦¡£ÒòΪ¸ÃÌØÕ÷´®¹²ÓÐ<span lang=EN-US>9</span>¸ö×Ö·û£¨<span
|
||
lang=EN-US>"761295520"</span>£©£¬Òò´ËÎÒ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÃÇÑ»·±È½ÏÕâ¸öÌØÕ÷´®¡£Èç¹ûÏàͬÔò±íʾ»úÆ÷ÖеÄ<span
|
||
lang=EN-US>VGA</span>¿¨ÊÇ<span lang=EN-US>ATI</span>ÅÆ×ӵģ¬ÓÚÊÇÈÃ<span lang=EN-US>ds:si</span>Ö¸Ïò¸ÃÏÔ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ʾ¿¨¿ÉÒÔÉèÖõÄÐÐÁÐģʽֵ<span
|
||
lang=EN-US>dscati</span>£¨µÚ<span lang=EN-US>615</span>ÐУ©£¬ÈÃ<span lang=EN-US>di</span>Ö¸Ïò<span
|
||
lang=EN-US>ATI</span>¿¨¿ÉÉèÖõÄÐÐÁиöÊýºÍģʽ£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>²¢Ìø×ªµ½±êºÅ<span lang=EN-US>selmod</span>£¨<span
|
||
lang=EN-US>438</span>ÐУ©´¦½øÒ»²½½øÐÐÉèÖá£</p>
|
||
|
||
<p class=a><a name=L233></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L233"><span
|
||
lang=EN-US>233</span></a><span lang=EN-US> svga:
|
||
lea
|
||
si,idati ! Check ATI 'clues'
|
||
! </span>¼ì²éÅжÏ<span lang=EN-US> ATI</span>ÏÔʾ¿¨µÄÊý¾Ý¡£</p>
|
||
|
||
<p class=a><a name=L234></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L234"><span
|
||
lang=EN-US>234</span></a><span lang=EN-US>
|
||
mov di,#0x31
|
||
! </span>ÌØÕ÷´®´Ó<span lang=EN-US>0xc000:0x0031</span>¿ªÊ¼¡£</p>
|
||
|
||
<p class=a><a name=L235></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L235"><span
|
||
lang=EN-US>235</span></a><span lang=EN-US>
|
||
mov cx,#0x09
|
||
! </span>ÌØÕ÷´®ÓÐ<span lang=EN-US>9</span>¸ö×Ö½Ú¡£</p>
|
||
|
||
<p class=a><a name=L236></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L236"><span
|
||
lang=EN-US>236</span></a><span lang=EN-US>
|
||
repe</span></p>
|
||
|
||
<p class=a><a name=L237></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L237"><span
|
||
lang=EN-US>237</span></a><span lang=EN-US>
|
||
cmpsb</span></p>
|
||
|
||
<p class=a><a name=L238></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L238"><span
|
||
lang=EN-US>238</span></a><span lang=EN-US>
|
||
jne noati
|
||
! </span>ÈôÌØÕ÷´®²»Í¬Ôò±íʾ²»ÊÇ<span lang=EN-US>ATI</span>ÏÔʾ¿¨¡£Ìø×ª¼ÌÐø¼ì²â¿¨¡£</p>
|
||
|
||
<p class=a><a name=L239></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L239"><span
|
||
lang=EN-US>239</span></a><span lang=EN-US>
|
||
lea si,dscati
|
||
! </span>Èç¹û<span lang=EN-US>9</span>¸ö×Ö½Ú¶¼Ïàͬ£¬±íʾϵͳÖÐÓÐÒ»¿é<span lang=EN-US>ATI</span>ÅÆÏÔʾ¿¨¡£</p>
|
||
|
||
<p class=a><a name=L240></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L240"><span
|
||
lang=EN-US>240</span></a><span lang=EN-US>
|
||
lea di,moati
|
||
! </span>ÓÚÊÇ<span lang=EN-US>si</span>Ö¸Ïò<span lang=EN-US>ATI</span>¿¨¾ßÓеĿÉÑ¡ÐÐÁÐÖµ£¬<span
|
||
lang=EN-US>di</span>Ö¸Ïò¿ÉÑ¡¸öÊý</p>
|
||
|
||
<p class=a><a name=L241></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L241"><span
|
||
lang=EN-US>241</span></a><span lang=EN-US>
|
||
lea cx,selmod
|
||
! </span>ºÍģʽÁÐ±í£¬È»ºóÌø×ªµ½<span lang=EN-US>selmod</span>£¨<span lang=EN-US>438</span>ÐУ©´¦¼ÌÐø´¦Àí¡£</p>
|
||
|
||
<p class=a><a name=L242></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L242"><span
|
||
lang=EN-US>242</span></a><span lang=EN-US>
|
||
jmp cx</span></p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÖÔÚÀ´ÅжÏÊDz»ÊÇ<span
|
||
lang=EN-US>Ahead</span>ÅÆ×ÓµÄÏÔʾ¿¨¡£Ê×ÏÈÏò<span lang=EN-US>EGA/VGA </span>ͼÐÎË÷Òý¼Ä´æÆ÷<span
|
||
lang=EN-US>0x3ce</span>дÈëÏë·ÃÎʵÄ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ö÷ÔÊÐí¼Ä´æÆ÷Ë÷ÒýºÅ<span
|
||
lang=EN-US>0x0f</span>£¬Í¬Ê±Ïò<span
|
||
lang=EN-US>0x3cf</span>¶Ë¿Ú£¨´Ëʱ¶ÔÓ¦Ö÷ÔÊÐí¼Ä´æÆ÷£©Ð´È뿪ÆôÀ©Õ¹¼Ä´æÆ÷</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>±êÖ¾Öµ<span lang=EN-US>0x20</span>¡£È»ºóͨ¹ý<span
|
||
lang=EN-US>0x3cf</span>¶Ë¿Ú¶ÁÈ¡Ö÷ÔÊÐí¼Ä´æÆ÷Öµ£¬ÒÔ¼ì²éÊÇ·ñ¿ÉÒÔÉèÖÿªÆôÀ©Õ¹¼Ä´æÆ÷</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>±êÖ¾¡£Èç¹û¿ÉÒÔÔò˵Ã÷ÊÇ<span
|
||
lang=EN-US>Ahead</span>ÅÆ×ÓµÄÏÔʾ¿¨¡£×¢Òâ<span lang=EN-US>word</span>Êä³öʱ<span
|
||
lang=EN-US>al</span><span lang=EN-US style='font-family:Wingdings'>¨¨</span>¶Ë¿Ú<span
|
||
lang=EN-US>n</span>£¬<span lang=EN-US>ah</span><span lang=EN-US
|
||
style='font-family:Wingdings'>¨¨</span>¶Ë¿Ú<span lang=EN-US>n+1</span>¡£</p>
|
||
|
||
<p class=a><a name=L243></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L243"><span
|
||
lang=EN-US>243</span></a><span lang=EN-US> noati:
|
||
mov ax,#0x200f ! Check Ahead 'clues'</span></p>
|
||
|
||
<p class=a><a name=L244></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L244"><span
|
||
lang=EN-US>244</span></a><span lang=EN-US>
|
||
mov dx,#0x3ce
|
||
! </span>Êý¾Ý¶Ë¿ÚÖ¸ÏòÖ÷ÔÊÐí¼Ä´æÆ÷£¨<span lang=EN-US>0x0f</span><span
|
||
lang=EN-US style='font-family:Wingdings'>¨¨</span><span lang=EN-US>0x3ce</span>¶Ë¿Ú£©£¬</p>
|
||
|
||
<p class=a><a name=L245></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L245"><span
|
||
lang=EN-US>245</span></a><span lang=EN-US>
|
||
out dx,ax !
|
||
</span>²¢ÉèÖÿªÆôÀ©Õ¹¼Ä´æÆ÷±êÖ¾£¨<span lang=EN-US>0x20</span><span lang=EN-US
|
||
style='font-family:Wingdings'>¨¨</span><span lang=EN-US>0x3cf</span>¶Ë¿Ú£©¡£</p>
|
||
|
||
<p class=a><a name=L246></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L246"><span
|
||
lang=EN-US>246</span></a><span lang=EN-US>
|
||
inc dx
|
||
! </span>È»ºóÔÙ¶ÁÈ¡¸Ã¼Ä´æÆ÷£¬¼ì²é¸Ã±êÖ¾ÊÇ·ñ±»ÉèÖÃÉÏ¡£</p>
|
||
|
||
<p class=a><a name=L247></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L247"><span
|
||
lang=EN-US>247</span></a><span lang=EN-US>
|
||
in al,dx</span></p>
|
||
|
||
<p class=a><a name=L248></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L248"><span
|
||
lang=EN-US>248</span></a><span lang=EN-US>
|
||
cmp al,#0x20
|
||
! </span>Èç¹û¶ÁȡֵÊÇ<span lang=EN-US>0x20</span>£¬Ôò±íʾÊÇ<span lang=EN-US>Ahead A</span>ÏÔʾ¿¨¡£</p>
|
||
|
||
<p class=a><a name=L249></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L249"><span
|
||
lang=EN-US>249</span></a><span lang=EN-US>
|
||
je isahed
|
||
! </span>Èç¹û¶ÁȡֵÊÇ<span lang=EN-US>0x21</span>£¬Ôò±íʾÊÇ<span lang=EN-US>Ahead B</span>ÏÔʾ¿¨¡£</p>
|
||
|
||
<p class=a><a name=L250></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L250"><span
|
||
lang=EN-US>250</span></a><span lang=EN-US>
|
||
cmp al,#0x21
|
||
! </span>·ñÔò˵Ã÷²»ÊÇ<span lang=EN-US>Ahead</span>ÏÔʾ¿¨£¬ÓÚÊÇÌø×ª¼ÌÐø¼ì²âÆäÓ࿨¡£</p>
|
||
|
||
<p class=a><a name=L251></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L251"><span
|
||
lang=EN-US>251</span></a><span lang=EN-US>
|
||
jne noahed</span></p>
|
||
|
||
<p class=a><a name=L252></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L252"><span
|
||
lang=EN-US>252</span></a><span lang=EN-US> isahed: lea
|
||
si,dscahead ! si </span>Ö¸Ïò<span lang=EN-US>Ahead</span>ÏÔʾ¿¨¿ÉÑ¡ÐÐÁÐÖµ±í£¬<span
|
||
lang=EN-US>di</span>Ö¸ÏòÀ©Õ¹Ä£Ê½¸ö</p>
|
||
|
||
<p class=a><a name=L253></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L253"><span
|
||
lang=EN-US>253</span></a><span lang=EN-US>
|
||
lea di,moahead ! </span>ÊýºÍÀ©Õ¹Ä£Ê½ºÅÁÐ±í¡£È»ºóÌø×ªµ½<span
|
||
lang=EN-US>selmod</span>£¨<span lang=EN-US>438</span>ÐУ©´¦¼Ì</p>
|
||
|
||
<p class=a><a name=L254></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L254"><span
|
||
lang=EN-US>254</span></a><span lang=EN-US>
|
||
lea cx,selmod
|
||
! </span>Ðø´¦Àí¡£</p>
|
||
|
||
<p class=a><a name=L255></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L255"><span
|
||
lang=EN-US>255</span></a><span lang=EN-US>
|
||
jmp cx</span></p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÖÔÚÀ´¼ì²éÊDz»ÊÇ<span
|
||
lang=EN-US>Chips & Tech</span>Éú²úµÄÏÔʾ¿¨¡£Í¨¹ý¶Ë¿Ú<span lang=EN-US>0x3c3</span>£¨<span
|
||
lang=EN-US>0x94</span>»ò<span lang=EN-US>0x46e8</span>£©ÉèÖÃ<span lang=EN-US>VGA</span>ÔÊÐí</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¼Ä´æÆ÷µÄ½øÈëÉèÖÃģʽ±êÖ¾£¨Î»<span
|
||
lang=EN-US>4</span>£©£¬È»ºó´Ó¶Ë¿Ú<span lang=EN-US>0x104</span>¶ÁÈ¡ÏÔʾ¿¨Ð¾Æ¬¼¯±êʶֵ¡£Èç¹û¸Ã±êʶֵ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÊÇ<span lang=EN-US>0xA5</span>£¬Ôò˵Ã÷ÊÇ<span
|
||
lang=EN-US>Chips & Tech</span>Éú²úµÄÏÔʾ¿¨¡£</p>
|
||
|
||
<p class=a><a name=L256></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L256"><span
|
||
lang=EN-US>256</span></a><span lang=EN-US> noahed: mov
|
||
dx,#0x3c3 ! Check Chips & Tech. 'clues'</span></p>
|
||
|
||
<p class=a><a name=L257></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L257"><span
|
||
lang=EN-US>257</span></a><span lang=EN-US>
|
||
in al,dx
|
||
! </span>´Ó<span lang=EN-US>0x3c3</span>¶Ë¿Ú¶ÁÈ¡<span
|
||
lang=EN-US>VGA</span>ÔÊÐí¼Ä´æÆ÷Öµ£¬Ìí¼ÓÉϽøÈëÉèÖÃģʽ</p>
|
||
|
||
<p class=a><a name=L258></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L258"><span
|
||
lang=EN-US>258</span></a><span lang=EN-US>
|
||
or al,#0x10
|
||
! </span>±êÖ¾£¨Î»<span lang=EN-US>4</span>£©ºóÔÙд»Ø¡£</p>
|
||
|
||
<p class=a><a name=L259></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L259"><span
|
||
lang=EN-US>259</span></a><span lang=EN-US>
|
||
out dx,al</span></p>
|
||
|
||
<p class=a><a name=L260></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L260"><span
|
||
lang=EN-US>260</span></a><span lang=EN-US>
|
||
mov dx,#0x104
|
||
! </span>ÔÚÉèÖÃģʽʱ´ÓÈ«¾Ö±êʶ¶Ë¿Ú<span lang=EN-US>0x104</span>¶ÁÈ¡ÏÔʾ¿¨Ð¾Æ¬±êʶֵ£¬</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L261">261</a>
|
||
in al,dx
|
||
! </span>²¢ÔÝʱ´æ·ÅÔÚ<span lang=EN-US>bl</span>¼Ä´æÆ÷ÖС£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L262">262</a>
|
||
mov bl,al</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L263">263</a>
|
||
mov dx,#0x3c3 ! </span>È»ºó°Ñ<span lang=EN-US>0x3c3</span>¶Ë¿ÚÖеĽøÈëÉèÖÃģʽ±êÖ¾¸´Î»¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L264">264</a>
|
||
in al,dx</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L265">265</a>
|
||
and al,#0xef</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L266">266</a>
|
||
out dx,al</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L267">267</a>
|
||
cmp bl,[idcandt] ! </span>ÔÙ°Ñ<span
|
||
lang=EN-US>bl</span>ÖбêʶֵÓëλÓÚ<span lang=EN-US>idcandt</span>´¦£¨µÚ<span lang=EN-US>596</span>ÐУ©µÄ<span
|
||
lang=EN-US>Chips &</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L268">268</a>
|
||
jne nocant
|
||
! Tech</span>µÄ±êʶֵ<span lang=EN-US>0xA5</span>×÷±È½Ï¡£Èç¹û²»Í¬ÔòÌø×ª±È½ÏÏÂÒ»ÖÖÏÔ¿¨¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L269">269</a>
|
||
lea si,dsccandt ! </span>ÈÃ<span
|
||
lang=EN-US>si</span>Ö¸ÏòÕâÖÖÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµ±í£¬<span lang=EN-US>di</span>Ö¸ÏòÀ©Õ¹Ä£Ê½¸öÊý</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L270">270</a>
|
||
lea di,mocandt ! </span>ºÍÀ©Õ¹Ä£Ê½ºÅÁÐ±í¡£È»ºóÌø×ªµ½<span
|
||
lang=EN-US>selmod</span>£¨<span lang=EN-US>438</span>ÐУ©½øÐÐÉèÖÃ</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L271">271</a>
|
||
lea cx,selmod
|
||
! </span>ÏÔʾģʽµÄ²Ù×÷¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L272">272</a>
|
||
jmp cx</span></p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÖÔÚ¼ì²éÊDz»ÊÇ<span
|
||
lang=EN-US>Cirrus</span>ÏÔʾ¿¨¡£·½·¨ÊÇʹÓÃ<span lang=EN-US>CRT</span>¿ØÖÆÆ÷Ë÷ÒýºÅ<span
|
||
lang=EN-US>0x1f</span>¼Ä´æÆ÷µÄÄÚÈÝÀ´³¢ÊÔ½ûÖ¹À©Õ¹</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¹¦ÄÜ¡£¸Ã¼Ä´æÆ÷±»³ÆÎªÓ¥±ê£¨<span
|
||
lang=EN-US>Eagle ID</span>£©¼Ä´æÆ÷£¬½«ÆäÖµ¸ßµÍ°ë×Ö½Ú½»»»Ò»ÏºóдÈë¶Ë¿Ú<span lang=EN-US>0x3c4</span>Ë÷</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÒýµÄ<span lang=EN-US>6</span>ºÅ£¨¶¨Ðò<span
|
||
lang=EN-US>/</span>À©Õ¹£©¼Ä´æÆ÷Ó¦¸Ã»á½ûÖ¹<span lang=EN-US>Cirrus</span>ÏÔʾ¿¨µÄÀ©Õ¹¹¦ÄÜ¡£Èç¹û²»»áÔò˵Ã÷²»ÊÇ<span
|
||
lang=EN-US>Cirrus</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÔʾ¿¨¡£ÒòΪ´Ó¶Ë¿Ú<span
|
||
lang=EN-US>0x3d4</span>Ë÷ÒýµÄ<span lang=EN-US>0x1f</span>Ó¥±ê¼Ä´æÆ÷ÖжÁÈ¡µÄÄÚÈÝÊÇÓ¥±êÖµÓë<span
|
||
lang=EN-US>0x0c</span>Ë÷ÒýºÅ¶ÔÓ¦µÄÏÔ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÄÚÈÝÒì»ò²Ù×÷Ö®ºóµÄÖµ£¬Òò´ËÔÚ¶Á<span
|
||
lang=EN-US>0x1f</span>ÖÐÄÚÈÝ֮ǰÎÒÃÇÐèÒªÏȰÑÏÔ´æÆðʼ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¸ß×ֽڼĴæÆ÷ÄÚÈݱ£´æºóÇåÁ㣬²¢ÔÚ¼ì²éºó»Ö¸´Ö®¡£ÁíÍ⣬½«Ã»Óн»»»¹ýµÄ<span
|
||
lang=EN-US>Eagle ID</span>ֵдµ½<span lang=EN-US>0x3c4</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¶Ë¿ÚË÷ÒýµÄ<span lang=EN-US>6</span>ºÅ¶¨Ðò<span
|
||
lang=EN-US>/</span>À©Õ¹¼Ä´æÆ÷»áÖØÐ¿ªÆôÀ©Õ¹¹¦ÄÜ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L273">273</a>
|
||
nocant: mov
|
||
dx,#0x3d4 ! Check Cirrus 'clues'</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L274">274</a>
|
||
mov al,#0x0c ! </span>Ê×ÏÈÏò<span lang=EN-US>CRT</span>¿ØÖƼĴæÆ÷µÄË÷Òý¼Ä´æÆ÷¶Ë¿Ú<span lang=EN-US>0x3d4</span>дÈëÒª·ÃÎÊ</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L275">275</a>
|
||
out dx,al
|
||
! </span>µÄ¼Ä´æÆ÷Ë÷ÒýºÅ<span lang=EN-US>0x0c</span>£¨¶ÔÓ¦ÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷£©£¬</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L276">276</a>
|
||
inc dx
|
||
! </span>È»ºó´Ó<span lang=EN-US>0x3d5</span>¶Ë¿Ú¶ÁÈëÏÔ´æÆðʼµØÖ·¸ß×Ö½Ú²¢ÔÝ´æÔÚ<span lang=EN-US>bl</span>ÖУ¬</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L277">277</a>
|
||
in al,dx
|
||
! </span>ÔÙ°ÑÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÇåÁã¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L278">278</a>
|
||
mov bl,al</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L279">279</a>
|
||
xor al,al</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L280">280</a>
|
||
out dx,al</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L281">281</a>
|
||
dec dx
|
||
! </span>½Ó×ÅÏò<span lang=EN-US>0x3d4</span>¶Ë¿ÚÊä³öË÷Òý<span lang=EN-US>0x1f</span>£¬Ö¸³öÎÒÃÇÒªÔÚ<span
|
||
lang=EN-US>0x3d5</span>¶Ë¿Ú</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L282">282</a>
|
||
mov al,#0x1f ! </span>·ÃÎʶÁÈ¡¡°<span lang=EN-US>Eagle ID</span>¡±¼Ä´æÆ÷ÄÚÈÝ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L283">283</a>
|
||
out dx,al</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L284">284</a>
|
||
inc dx</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L285">285</a>
|
||
in al,dx
|
||
! </span>´Ó<span lang=EN-US>0x3d5</span>¶Ë¿Ú¶ÁÈ¡¡°<span lang=EN-US>Eagle ID</span>¡±¼Ä´æÆ÷Öµ£¬²¢ÔÝ´æÔÚ<span
|
||
lang=EN-US>bh</span>ÖС£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L286">286</a>
|
||
mov bh,al
|
||
! </span>È»ºó°Ñ¸ÃÖµ¸ßµÍ<span lang=EN-US>4</span>±ÈÌØ»¥»»Î»Öôæ·Åµ½<span lang=EN-US>cl</span>ÖС£ÔÙ×óÒÆ<span
|
||
lang=EN-US>8</span>λ</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L287">287</a>
|
||
xor ah,ah
|
||
! </span>ºó·ÅÈë<span lang=EN-US>ch</span>ÖУ¬¶ø<span lang=EN-US>cl</span>ÖзÅÈëÊýÖµ<span
|
||
lang=EN-US>6</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L288">288</a>
|
||
shl al,#4</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L289">289</a>
|
||
mov cx,ax</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L290">290</a>
|
||
mov al,bh</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L291">291</a>
|
||
shr al,#4</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L292">292</a>
|
||
add cx,ax</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L293">293</a>
|
||
shl cx,#8</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L294">294</a>
|
||
add cx,#6
|
||
! </span>×îºó°Ñ<span lang=EN-US>cx</span>Öµ´æ·ÅÈë<span lang=EN-US>ax</span>ÖС£´Ëʱ<span
|
||
lang=EN-US>ah</span>ÖÐÊÇ»»Î»ºóµÄ¡°<span lang=EN-US>Eagle</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L295">295</a>
|
||
mov ax,cx !
|
||
ID</span>¡±Öµ£¬<span lang=EN-US>al</span>ÖÐÊÇË÷ÒýºÅ<span lang=EN-US>6</span>£¬¶ÔÓ¦¶¨Ðò<span
|
||
lang=EN-US>/</span>À©Õ¹¼Ä´æÆ÷¡£°Ñ<span lang=EN-US>ah</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L296">296</a>
|
||
mov dx,#0x3c4 ! </span>дµ½<span lang=EN-US>0x3c4</span>¶Ë¿ÚË÷ÒýµÄ¶¨Ðò<span
|
||
lang=EN-US>/</span>À©Õ¹¼Ä´æÆ÷Ó¦¸Ã»áµ¼ÖÂ<span lang=EN-US>Cirrus</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L297">297</a>
|
||
out dx,ax !
|
||
</span>ÏÔʾ¿¨½ûÖ¹À©Õ¹¹¦ÄÜ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L298">298</a>
|
||
inc dx</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L299">299</a>
|
||
in al,dx
|
||
! </span>Èç¹ûÀ©Õ¹¹¦ÄÜÕæµÄ±»½ûÖ¹£¬ÄÇô´Ëʱ¶ÁÈëµÄÖµÓ¦¸ÃΪ<span lang=EN-US>0</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L300">300</a>
|
||
and al,al
|
||
! </span>Èç¹û²»Îª<span lang=EN-US>0</span>Ôò±íʾ²»ÊÇ<span lang=EN-US>Cirrus</span>ÏÔʾ¿¨£¬Ìø×ª¼ÌÐø¼ì²éÆäËû¿¨¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L301">301</a>
|
||
jnz nocirr</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L302">302</a>
|
||
mov al,bh
|
||
! </span>ÊÇ<span lang=EN-US>Cirrus</span>ÏÔʾ¿¨£¬ÔòÀûÓõÚ<span lang=EN-US>286</span>Ðб£´æÔÚ<span
|
||
lang=EN-US>bh</span>Öеġ°<span lang=EN-US>Eagle</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L303">303</a>
|
||
out dx,al
|
||
! ID</span>¡±ÔÖµÔÙÖØÐ¿ªÆô<span lang=EN-US>Cirrus</span>¿¨À©Õ¹¹¦ÄÜ¡£´Ëʱ¶ÁÈ¡µÄ·µ»Ø</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L304">304</a>
|
||
in al,dx
|
||
! </span>ÖµÓ¦¸ÃΪ<span lang=EN-US>1</span>¡£Èô²»ÊÇ£¬ÔòÈÔȻ˵Ã÷²»ÊÇ<span lang=EN-US>Cirrus</span>ÏÔʾ¿¨¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L305">305</a>
|
||
cmp al,#0x01</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L306">306</a>
|
||
jne nocirr</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L307">307</a>
|
||
call rst3d4 !
|
||
</span>»Ö¸´<span lang=EN-US>CRT</span>¿ØÖÆÆ÷µÄÏÔʾÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÄÚÈÝ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L308">308</a>
|
||
lea si,dsccirrus ! si</span>Ö¸Ïò<span
|
||
lang=EN-US>Cirrus</span>ÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµ£¬<span lang=EN-US>di</span>Ö¸ÏòÀ©Õ¹Ä£Ê½¸öÊý</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L309">309</a>
|
||
lea di,mocirrus ! </span>ºÍ¶ÔӦģʽºÅ¡£È»ºóÌø×ªµ½<span
|
||
lang=EN-US>selmod</span>´¦È¥Ñ¡ÔñÏÔʾģʽ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L310">310</a>
|
||
lea cx,selmod</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L311">311</a>
|
||
jmp cx</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¸Ã×Ó³ÌÐòÀûÓñ£´æÔÚ<span
|
||
lang=EN-US>bl</span>ÖеÄÖµ£¨µÚ<span lang=EN-US>278</span>ÐУ©»Ö¸´<span lang=EN-US>CRT</span>¿ØÖÆÆ÷µÄÏÔʾÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÄÚÈÝ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L312">312</a>
|
||
rst3d4: mov dx,#0x3d4</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L313">313</a>
|
||
mov al,bl</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L314">314</a>
|
||
xor ah,ah</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L315">315</a>
|
||
shl ax,#8</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L316">316</a>
|
||
add ax,#0x0c</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L317">317</a>
|
||
out dx,ax
|
||
! </span>×¢Ò⣬ÕâÊÇ<span lang=EN-US>word</span>Êä³ö£¡£¡ <span lang=EN-US>al </span><span
|
||
lang=EN-US style='font-family:Wingdings'>¨¨</span><span lang=EN-US>0x3d4</span>£¬<span
|
||
lang=EN-US>ah </span><span lang=EN-US style='font-family:Wingdings'>¨¨</span><span
|
||
lang=EN-US>0x3d5</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L318">318</a>
|
||
ret </span></p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÖÔÚ¼ì²éϵͳÖÐÊDz»ÊÇ<span
|
||
lang=EN-US>Everex</span>ÏÔʾ¿¨¡£·½·¨ÊÇÀûÓÃÖжÏ<span lang=EN-US>int 0x10</span>¹¦ÄÜ<span
|
||
lang=EN-US>0x70</span>£¨<span lang=EN-US>ax =0x7000</span>£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! bx=0x0000</span>£©µ÷ÓÃ<span
|
||
lang=EN-US>Everex</span>µÄÀ©Õ¹ÊÓÆµ<span lang=EN-US>BIOS</span>¹¦ÄÜ¡£¶ÔÓÚ<span lang=EN-US>Everes</span>ÀàÐÍÏÔʾ¿¨£¬¸ÃÖжϵ÷ÓÃÓ¦¸Ã</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>»á·µ»ØÄ£Äâ״̬£¬¼´ÓÐÒÔÏ·µ»ØÐÅÏ¢£º</p>
|
||
|
||
<p class=a><span lang=EN-US> ! al = 0x70</span>£¬ÈôÊÇ»ùÓÚ<span
|
||
lang=EN-US>Trident</span>µÄ<span lang=EN-US>Everex</span>ÏÔʾ¿¨£»</p>
|
||
|
||
<p class=a><span lang=EN-US> ! cl = </span>ÏÔʾÆ÷ÀàÐÍ£º<span
|
||
lang=EN-US>00-</span>µ¥É«£»<span lang=EN-US>01-CGA</span>£»<span lang=EN-US>02-EGA</span>£»<span
|
||
lang=EN-US>03-</span>Êý×Ö¶àÆµ£»<span lang=EN-US>04-PS/2</span>£»<span lang=EN-US>05-IBM
|
||
8514</span>£»<span lang=EN-US>06-SVGA</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! ch = </span>ÊôÐÔ£ºÎ»<span
|
||
lang=EN-US>7-6</span>£º<span lang=EN-US>00-256K</span>£¬<span lang=EN-US>01-512K</span>£¬<span
|
||
lang=EN-US>10-1MB</span>£¬<span lang=EN-US>11-2MB</span>£»Î»<span lang=EN-US>4-</span>¿ªÆô<span
|
||
lang=EN-US>VGA</span>±£»¤£»Î»<span lang=EN-US>0-6845</span>Ä£Äâ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! dx = </span>°å¿¨ÐͺţºÎ»<span
|
||
lang=EN-US>15-4</span>£º°åÀàÐͱêʶºÅ£»Î»<span lang=EN-US>3-0</span>£º°åÐÞÕý±êʶºÅ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> !
|
||
0x2360-Ultragraphics II</span>£»<span lang=EN-US>0x6200-Vision VGA</span>£»<span
|
||
lang=EN-US>0x6730-EVGA</span>£»<span lang=EN-US>0x6780-Viewpoint</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! di = </span>ÓÃ<span lang=EN-US>BCD</span>Âë±íʾµÄÊÓÆµ<span
|
||
lang=EN-US>BIOS</span>°æ±¾ºÅ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L319">319</a>
|
||
nocirr: call
|
||
rst3d4 ! Check
|
||
Everex 'clues'</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L320">320</a>
|
||
mov ax,#0x7000 ! </span>ÉèÖÃ<span
|
||
lang=EN-US>ax = 0x7000, bx=0x0000</span>£¬µ÷ÓÃ<span lang=EN-US>int 0x10</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L321">321</a>
|
||
xor bx,bx</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L322">322</a>
|
||
int 0x10</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L323">323</a>
|
||
cmp al,#0x70
|
||
! </span>¶ÔÓÚ<span lang=EN-US>Everes</span>ÏÔʾ¿¨£¬<span lang=EN-US>al</span>ÖÐÓ¦¸Ã·µ»ØÖµ<span
|
||
lang=EN-US>0x70</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L324">324</a>
|
||
jne noevrx</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L325">325</a>
|
||
shr dx,#4
|
||
! </span>ºöÂɰåÐÞÕýºÅ£¨Î»<span lang=EN-US>3-0</span>£©¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L326">326</a>
|
||
cmp dx,#0x678
|
||
! </span>°åÀàÐͺÅÊÇ<span lang=EN-US>0x678</span>±íʾÊÇÒ»¿é<span lang=EN-US>Trident</span>ÏÔʾ¿¨£¬ÔòÌø×ª¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L327">327</a>
|
||
je istrid</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L328">328</a>
|
||
cmp dx,#0x236
|
||
! </span>°åÀàÐͺÅÊÇ<span lang=EN-US>0x236</span>±íʾÊÇÒ»¿é<span lang=EN-US>Trident</span>ÏÔʾ¿¨£¬ÔòÌø×ª¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L329">329</a>
|
||
je istrid</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L330">330</a>
|
||
lea si,dsceverex ! </span>ÈÃ<span
|
||
lang=EN-US>si</span>Ö¸Ïò<span lang=EN-US>Everex</span>ÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµ±í£¬ÈÃ<span
|
||
lang=EN-US>di</span>Ö¸ÏòÀ©Õ¹</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L331">331</a>
|
||
lea di,moeverex ! </span>ģʽ¸öÊýºÍģʽºÅÁÐ±í¡£È»ºóÌø×ªµ½<span
|
||
lang=EN-US>selmod</span>È¥Ö´ÐÐÑ¡Ôñ</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L332">332</a>
|
||
lea cx,selmod !
|
||
</span>ÏÔʾģʽµÄ²Ù×÷¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L333">333</a>
|
||
jmp cx</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L334">334</a>
|
||
istrid: lea cx,ev2tri
|
||
! </span>ÊÇ<span lang=EN-US>Trident</span>ÀàÐ͵Ä<span lang=EN-US>Everex</span>ÏÔʾ¿¨£¬ÔòÌø×ªµ½<span
|
||
lang=EN-US>ev2tri</span>´¦Àí¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L335">335</a>
|
||
jmp cx</span></p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÖÔÚ¼ì²éÊDz»ÊÇ<span
|
||
lang=EN-US>Genoa</span>ÏÔʾ¿¨¡£·½Ê½ÊǼì²éÆäÊÓÆµ<span lang=EN-US>BIOS</span>ÖеÄÌØÕ÷Êý×Ö´®£¨<span
|
||
lang=EN-US>0x77</span>¡¢<span lang=EN-US>0x00</span>¡¢<span lang=EN-US>0x66</span>¡¢</p>
|
||
|
||
<p class=a><span lang=EN-US> ! 0x99</span>£©¡£×¢Ò⣬´Ëʱ<span
|
||
lang=EN-US>es</span>ÒѾÔÚµÚ<span lang=EN-US>220</span>Ðб»ÉèÖóÉÖ¸Ïò<span lang=EN-US>VGA</span>¿¨ÉÏ<span
|
||
lang=EN-US>ROM BIOS</span>ËùÔڵĶÎ<span lang=EN-US>0xc000</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L336">336</a>
|
||
noevrx: lea
|
||
si,idgenoa ! Check Genoa 'clues'</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L337">337</a>
|
||
xor ax,ax
|
||
! </span>ÈÃ<span lang=EN-US>ds:si</span>Ö¸ÏòµÚ<span lang=EN-US>597</span>ÐÐÉϵÄÌØÕ÷Êý×Ö´®¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L338">338</a>
|
||
seg es</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L339">339</a>
|
||
mov al,[0x37]
|
||
! </span>È¡<span lang=EN-US>VGA</span>¿¨ÉÏ<span lang=EN-US>BIOS</span>ÖÐ<span
|
||
lang=EN-US>0x37</span>´¦µÄÖ¸Õ루ËüÖ¸ÏòÌØÕ÷´®£©¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L340">340</a>
|
||
mov di,ax
|
||
! </span>Òò´Ë´Ëʱ<span lang=EN-US>es:di</span>Ö¸ÏòÌØÕ÷Êý×Ö´®¿ªÊ¼´¦¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L341">341</a>
|
||
mov cx,#0x04</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L342">342</a>
|
||
dec si</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L343">343</a>
|
||
dec di</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L344">344</a>
|
||
l1: inc si
|
||
! </span>È»ºóÑ»·±È½ÏÕâ<span lang=EN-US>4</span>¸ö×Ö½ÚµÄÌØÕ÷Êý×Ö´®¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L345">345</a>
|
||
inc di</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L346">346</a>
|
||
mov al,(si)</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L347">347</a>
|
||
seg es</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L348">348</a>
|
||
and al,(di)</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L349">349</a>
|
||
cmp al,(si)</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L350">350</a>
|
||
loope l1</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L351">351</a>
|
||
cmp cx,#0x00
|
||
! </span>Èç¹ûÌØÕ÷Êý×Ö´®ÍêÈ«Ïàͬ£¬Ôò±íʾÊÇ<span lang=EN-US>Genoa</span>ÏÔʾ¿¨£¬</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L352">352</a>
|
||
jne nogen
|
||
! </span>·ñÔòÌø×ªÈ¥¼ì²éÆäËûÀàÐ͵ÄÏÔʾ¿¨¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L353">353</a>
|
||
lea si,dscgenoa ! </span>ÈÃ<span
|
||
lang=EN-US>si</span>Ö¸Ïò<span lang=EN-US>Genoa</span>ÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµ±í£¬ÈÃ<span
|
||
lang=EN-US>di</span>Ö¸ÏòÀ©Õ¹</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L354">354</a>
|
||
lea di,mogenoa
|
||
! </span>ģʽ¸öÊýºÍģʽºÅÁÐ±í¡£È»ºóÌø×ªµ½<span lang=EN-US>selmod</span>È¥Ö´ÐÐÑ¡Ôñ</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L355">355</a>
|
||
lea cx,selmod
|
||
! </span>ÏÔʾģʽµÄ²Ù×÷¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L356">356</a>
|
||
jmp cx</span></p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÖÔÚ¼ì²éÊDz»ÊÇ<span
|
||
lang=EN-US>Paradise</span>ÏÔʾ¿¨¡£Í¬ÑùÊDzÉÓñȽÏÏÔʾ¿¨ÉÏ<span lang=EN-US>BIOS</span>ÖÐÌØÕ÷´®£¨¡°<span
|
||
lang=EN-US>VGA=</span>¡±£©µÄ·½Ê½¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L357">357</a>
|
||
nogen: lea si,idparadise !
|
||
Check Paradise 'clues'</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L358">358</a>
|
||
mov di,#0x7d
|
||
! es:di</span>Ö¸Ïò<span lang=EN-US>VGA ROM BIOS</span>µÄ<span lang=EN-US>0xc000:0x007d</span>´¦£¬¸Ã´¦Ó¦¸ÃÓÐ</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L359">359</a>
|
||
mov cx,#0x04
|
||
! 4</span>¸ö×Ö·û¡°<span lang=EN-US>VGA=</span>¡±¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L360">360</a>
|
||
repe</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L361">361</a>
|
||
cmpsb</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L362">362</a>
|
||
jne nopara
|
||
! </span>ÈôÓв»Í¬µÄ×Ö·û£¬±íʾ²»ÊÇ<span lang=EN-US>Paradise</span>ÏÔʾ¿¨£¬ÓÚÊÇÌø×ª¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L363">363</a>
|
||
lea si,dscparadise !
|
||
</span>·ñÔòÈÃ<span lang=EN-US>si</span>Ö¸Ïò<span lang=EN-US>Paradise</span>ÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµ±í£¬ÈÃ<span
|
||
lang=EN-US>di</span>Ö¸</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L364">364</a>
|
||
lea di,moparadise ! </span>ÏòÀ©Õ¹Ä£Ê½¸öÊýºÍģʽºÅÁÐ±í¡£È»ºóÌø×ªµ½<span
|
||
lang=EN-US>selmod</span>´¦È¥Ñ¡</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L365">365</a>
|
||
lea cx,selmod !
|
||
</span>ÔñÏëҪʹÓõÄÏÔʾģʽ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L366">366</a>
|
||
jmp cx</span></p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÖÔÚ¼ì²éÊDz»ÊÇ<span
|
||
lang=EN-US>Trident</span>£¨<span lang=EN-US>TVGA</span>£©ÏÔʾ¿¨¡£<span lang=EN-US>TVGA</span>ÏÔʾ¿¨À©³äµÄģʽ¿ØÖƼĴæÆ÷<span
|
||
lang=EN-US>1</span>£¨<span lang=EN-US>0x3c4</span>¶Ë¿ÚË÷Òý</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÄ<span lang=EN-US>0x0e</span>£©µÄλ<span
|
||
lang=EN-US>3--0</span>ÊÇ<span lang=EN-US>64K</span>ÄÚ´æÒ³Ãæ¸öÊýÖµ¡£Õâ¸ö×Ö¶ÎÖµÓÐÒ»¸öÌØÐÔ£ºµ±Ð´Èëʱ£¬ÎÒÃÇÐèÒªÊ×ÏȰÑ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÖµÓë<span lang=EN-US>0x02</span>½øÐÐÒì»ò²Ù×÷ºóÔÙдÈ룻µ±¶ÁÈ¡¸ÃֵʱÔò²»ÐèÒªÖ´ÐÐÒì»ò²Ù×÷£¬¼´Òì»òǰµÄÖµÓ¦¸ÃÓëд</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÈëºóÔÙ¶ÁÈ¡µÄÖµÏàͬ¡£ÏÂÃæ´úÂë¾ÍÀûÓÃÕâ¸öÌØÐÔÀ´¼ì²éÊDz»ÊÇ<span
|
||
lang=EN-US>Trident</span>ÏÔʾ¿¨¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L367">367</a>
|
||
nopara: mov dx,#0x3c4 ! Check Trident 'clues'</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L368">368</a>
|
||
mov al,#0x0e
|
||
! </span>Ê×ÏÈÔÚ¶Ë¿Ú<span lang=EN-US>0x3c4</span>Êä³öË÷ÒýºÅ<span
|
||
lang=EN-US>0x0e</span>£¬Ë÷Òýģʽ¿ØÖƼĴæÆ÷<span lang=EN-US>1</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L369">369</a>
|
||
out dx,al
|
||
! </span>È»ºó´Ó<span lang=EN-US>0x3c5</span>Êý¾Ý¶Ë¿Ú¶ÁÈë¸Ã¼Ä´æÆ÷ÔÖµ£¬²¢ÔÝ´æÔÚ<span lang=EN-US>ah</span>ÖС£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L370">370</a>
|
||
inc dx</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L371">371</a>
|
||
in al,dx</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L372">372</a>
|
||
xchg ah,al</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L373">373</a>
|
||
mov al,#0x00
|
||
! </span>È»ºóÎÒÃÇÏò¸Ã¼Ä´æÆ÷дÈë<span lang=EN-US>0x00</span>£¬ÔÙ¶ÁÈ¡ÆäÖµ<span lang=EN-US
|
||
style='font-family:Wingdings'>¨¨</span><span lang=EN-US>al</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L374">374</a>
|
||
out dx,al !
|
||
</span>дÈë<span lang=EN-US>0x00</span>¾ÍÏ൱ÓÚ¡°ÔÖµ¡±<span lang=EN-US>0x02</span>Òì»ò<span
|
||
lang=EN-US>0x02</span>ºóµÄдÈëÖµ£¬</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L375">375</a>
|
||
in al,dx
|
||
! </span>Òò´ËÈôÊÇ<span lang=EN-US>Trident</span>ÏÔʾ¿¨£¬Ôò´Ëºó¶ÁÈëµÄÖµÓ¦¸ÃÊÇ<span lang=EN-US>0x02</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L376">376</a>
|
||
xchg al,ah
|
||
! </span>½»»»ºó£¬<span lang=EN-US>al=</span>Ôģʽ¿ØÖƼĴæÆ÷<span lang=EN-US>1</span>µÄÖµ£¬<span
|
||
lang=EN-US>ah=</span>×îºó¶ÁÈ¡µÄÖµ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÓï¾äÓÒÔòÓ¢ÎÄ×¢ÊÍÊÇ¡°ÕæÆæ¹Ö<span
|
||
lang=EN-US>...</span>ÊéÖв¢Ã»ÓÐÒªÇóÕâÑù²Ù×÷£¬µ«ÊÇÕâ¶ÔÎÒµÄ<span lang=EN-US>Trident</span>ÏÔʾ¿¨</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Æð×÷Óá£Èç¹û²»ÕâÑù×ö£¬ÆÁÄ»¾Í»á±äÄ£ºý<span
|
||
lang=EN-US>...</span>¡±¡£Õ⼸Ðи½´øÓÐÓ¢ÎÄ×¢Ê͵ÄÓï¾äÖ´ÐÐÈçϲÙ×÷£º</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Èç¹û<span lang=EN-US>bl</span>ÖÐÔģʽ¿ØÖƼĴæÆ÷<span
|
||
lang=EN-US>1</span>µÄλ<span lang=EN-US>1</span>ÔÚÖÃλ״̬µÄ»°¾Í½«Æä¸´Î»£¬·ñÔò¾Í½«Î»<span
|
||
lang=EN-US>1</span>ÖÃλ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ʵ¼ÊÉÏÕ⼸ÌõÓï¾ä¾ÍÊǶÔÔģʽ¿ØÖƼĴæÆ÷<span
|
||
lang=EN-US>1</span>µÄÖµÖ´ÐÐÒì»ò<span lang=EN-US> 0x02</span>µÄ²Ù×÷£¬È»ºóÓýá¹ûֵȥÉèÖÃ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>£¨»Ö¸´£©Ô¼Ä´æÆ÷Öµ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L377">377</a>
|
||
mov
|
||
bl,al !
|
||
Strange thing ... in the book this wasn't</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L378">378</a>
|
||
and bl,#0x02 !
|
||
necessary but it worked on my card which</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L379">379</a>
|
||
jz
|
||
setb2 ! is a
|
||
trident. Without it the screen goes</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L380">380</a>
|
||
and al,#0xfd !
|
||
blurred ...</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L381">381</a>
|
||
jmp
|
||
clrb2 !</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L382">382</a>
|
||
setb2: or
|
||
al,#0x02 !</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L383">383</a>
|
||
clrb2: out dx,al</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L384">384</a>
|
||
and ah,#0x0f ! </span>È¡<span lang=EN-US>375</span>ÐÐ×îºó¶ÁÈëÖµµÄÒ³Ãæ¸öÊý×ֶΣ¨Î»<span lang=EN-US>3--0</span>£©£¬Èç¹û</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L385">385</a>
|
||
cmp ah,#0x02 !
|
||
</span>¸Ã×Ö¶ÎÖµµÈÓÚ<span lang=EN-US>0x02</span>£¬Ôò±íʾÊÇ<span lang=EN-US>Trident</span>ÏÔʾ¿¨¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L386">386</a>
|
||
jne notrid</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L387">387</a>
|
||
ev2tri: lea si,dsctrident ! </span>ÊÇ<span
|
||
lang=EN-US>Trident</span>ÏÔʾ¿¨£¬ÓÚÊÇÈÃ<span lang=EN-US>si</span>Ö¸Ïò¸ÃÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐ</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L388">388</a>
|
||
lea di,motrident ! </span>ÖµÁÐ±í£¬ÈÃ<span
|
||
lang=EN-US>di</span>Ö¸Ïò¶ÔÓ¦À©Õ¹Ä£Ê½¸öÊýºÍģʽºÅÁÐ±í£¬È»</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L389">389</a>
|
||
lea cx,selmod
|
||
! </span>ºóÌø×ªµ½<span lang=EN-US>selmod</span>È¥Ö´ÐÐģʽѡÔñ²Ù×÷¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L390">390</a>
|
||
jmp cx</span></p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÖÔÚ¼ì²éÊDz»ÊÇ<span
|
||
lang=EN-US>Tseng</span>ÏÔʾ¿¨£¨<span lang=EN-US>ET4000AX</span>»ò<span lang=EN-US>ET4000/W32</span>Àࣩ¡£·½·¨ÊǶÔ<span
|
||
lang=EN-US>0x3cd</span>¶Ë¿Ú¶ÔÓ¦µÄ¶Î</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ñ¡Ôñ£¨<span lang=EN-US>Segment
|
||
Select</span>£©¼Ä´æÆ÷Ö´ÐжÁд²Ù×÷¡£¸Ã¼Ä´æÆ÷¸ß<span lang=EN-US>4</span>λ£¨Î»<span lang=EN-US>7--4</span>£©ÊÇÒª½øÐжÁ²Ù×÷µÄ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! 64KB</span>¶ÎºÅ£¨<span
|
||
lang=EN-US>Bank number</span>£©£¬µÍ<span lang=EN-US>4</span>λ£¨Î»<span lang=EN-US>3--0</span>£©ÊÇÖ¸¶¨ÒªÐ´µÄ¶ÎºÅ¡£Èç¹ûÖ¸¶¨¶ÎÑ¡Ôñ¼Ä´æÆ÷µÄ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÄÖµÊÇ<span lang=EN-US>
|
||
0x55</span>£¨±íʾ¶Á¡¢Ð´µÚ<span lang=EN-US>6</span>¸ö<span lang=EN-US>64KB</span>¶Î£©£¬ÄÇô¶ÔÓÚ<span
|
||
lang=EN-US>Tseng</span>ÏÔʾ¿¨À´Ëµ£¬°Ñ¸ÃֵдÈë¼Ä´æÆ÷</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ºóÔÙ¶Á³öÓ¦¸Ã»¹ÊÇ<span
|
||
lang=EN-US>0x55</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L391">391</a>
|
||
notrid: mov
|
||
dx,#0x3cd ! Check Tseng 'clues'</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L392">392</a>
|
||
in
|
||
al,dx ! Could
|
||
things be this simple ! :-)</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L393">393</a>
|
||
mov bl,al
|
||
! </span>ÏÈ´Ó<span lang=EN-US>0x3cd</span>¶Ë¿Ú¶ÁÈ¡¶ÎÑ¡Ôñ¼Ä´æÆ÷ÔÖµ£¬²¢±£´æÔÚ<span lang=EN-US>bl</span>ÖС£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L394">394</a>
|
||
mov al,#0x55
|
||
! </span>È»ºóÎÒÃÇÏò¸Ã¼Ä´æÆ÷ÖÐдÈë<span lang=EN-US>0x55</span>¡£ÔÙ¶ÁÈë²¢·ÅÔÚ<span lang=EN-US>ah</span>ÖС£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L395">395</a>
|
||
out dx,al</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L396">396</a>
|
||
in al,dx</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L397">397</a>
|
||
mov ah,al</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L398">398</a>
|
||
mov al,bl
|
||
! </span>½Óׯָ´¸Ã¼Ä´æÆ÷µÄÔÖµ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L399">399</a>
|
||
out dx,al</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L400">400</a>
|
||
cmp ah,#0x55
|
||
! </span>Èç¹û¶ÁÈ¡µÄ¾ÍÊÇÎÒÃÇдÈëµÄÖµ£¬Ôò±íÃ÷ÊÇ<span lang=EN-US>Tseng</span>ÏÔʾ¿¨¡£</p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L401">401</a>
|
||
jne notsen</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L402">402</a>
|
||
lea si,dsctseng ! </span>ÓÚÊÇÈÃ<span
|
||
lang=EN-US>si</span>Ö¸Ïò<span lang=EN-US>Tseng</span>ÏÔʾ¿¨µÄ¿ÉÑ¡ÐÐÁÐÖµµÄÁÐ±í£¬ÈÃ<span
|
||
lang=EN-US>di</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L403">403</a>
|
||
lea di,motseng ! </span>Ö¸Ïò¶ÔÓ¦À©Õ¹Ä£Ê½¸öÊýºÍģʽºÅÁÐ±í£¬È»ºóÌø×ªµ½<span
|
||
lang=EN-US>selmod</span></p>
|
||
|
||
<p class=a><span lang=EN-US><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L404">404</a>
|
||
lea cx,selmod !
|
||
</span>È¥Ö´ÐÐģʽѡÔñ²Ù×÷¡£</p>
|
||
|
||
<p class=a><a name=L405></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L405"><span
|
||
lang=EN-US>405</span></a><span lang=EN-US>
|
||
jmp cx</span></p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæ¼ì²éÊDz»ÊÇ<span
|
||
lang=EN-US>Video7</span>ÏÔʾ¿¨¡£¶Ë¿Ú<span lang=EN-US>0x3c2</span>ÊÇ»ìºÏÊä³ö¼Ä´æÆ÷д¶Ë¿Ú£¬¶ø<span
|
||
lang=EN-US>0x3cc</span>ÊÇ»ìºÏÊä³ö¼Ä´æ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Æ÷¶Á¶Ë¿Ú¡£¸Ã¼Ä´æÆ÷µÄλ<span
|
||
lang=EN-US>0</span>Êǵ¥É«<span lang=EN-US>/</span>²ÊÉ«±êÖ¾¡£Èç¹ûΪ<span lang=EN-US>0</span>Ôò±íʾÊǵ¥É«£¬·ñÔòÊDzÊÉ«¡£ÅжÏÊDz»ÊÇ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! Video7</span>ÏÔʾ¿¨µÄ·½Ê½ÊÇÀûÓÃÕâÖÖÏÔʾ¿¨µÄ<span
|
||
lang=EN-US>CRT</span>¿ØÖÆÀ©Õ¹±êʶ¼Ä´æÆ÷£¨Ë÷ÒýºÅÊÇ<span lang=EN-US>0x1f</span>£©¡£¸Ã¼Ä´æÆ÷</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÄֵʵ¼ÊÉϾÍÊÇÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷£¨Ë÷ÒýºÅ<span
|
||
lang=EN-US>0x0c</span>£©µÄÄÚÈݺÍ<span
|
||
lang=EN-US>0xea</span>½øÐÐÒì»ò²Ù×÷ºóµÄÖµ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Òò´ËÎÒÃÇÖ»ÒªÏòÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÖÐдÈëÒ»¸öÌØ¶¨Öµ£¬È»ºó´Ó±êʶ¼Ä´æÆ÷ÖжÁÈ¡±êʶֵ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>½øÐÐÅжϼ´¿É¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ͨ¹ý¶ÔÒÔÉÏÏÔʾ¿¨ºÍÕâÀï<span
|
||
lang=EN-US>Video7</span>ÏÔʾ¿¨µÄ¼ì²é·ÖÎö£¬ÎÒÃÇ¿ÉÖª¼ì²é¹ý³Ìͨ³£·ÖΪÈý¸ö»ù±¾²½Öè¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ê×ÏȶÁÈ¡²¢±£´æ²âÊÔÐèÒªÓõ½µÄ¼Ä´æÆ÷ÔÖµ£¬È»ºóʹÓÃÌØ¶¨²âÊÔÖµ½øÐÐдÈëºÍ¶Á³ö²Ù×÷£¬×îºó»Ö</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¸´Ô¼Ä´æÆ÷Öµ²¢¶Ô¼ì²é½á¹û×÷³öÅжϡ£</p>
|
||
|
||
<p class=a><a name=L406></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L406"><span
|
||
lang=EN-US>406</span></a><span lang=EN-US> notsen: mov
|
||
dx,#0x3cc ! Check Video7 'clues'</span></p>
|
||
|
||
<p class=a><a name=L407></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L407"><span
|
||
lang=EN-US>407</span></a><span lang=EN-US>
|
||
in al,dx</span></p>
|
||
|
||
<p class=a><a name=L408></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L408"><span
|
||
lang=EN-US>408</span></a><span lang=EN-US>
|
||
mov dx,#0x3b4 !
|
||
</span>ÏÈÉèÖÃ<span lang=EN-US>dx</span>Ϊµ¥É«ÏÔʾ<span lang=EN-US>CRT</span>¿ØÖÆË÷Òý¼Ä´æÆ÷¶Ë¿ÚºÅ<span
|
||
lang=EN-US>0x3b4</span>¡£</p>
|
||
|
||
<p class=a><a name=L409></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L409"><span
|
||
lang=EN-US>409</span></a><span lang=EN-US> and
|
||
al,#0x01 ! </span>Èç¹û»ìºÏÊä³ö¼Ä´æÆ÷µÄλ<span
|
||
lang=EN-US>0</span>µÈÓÚ<span lang=EN-US>0</span>£¨µ¥É«£©ÔòÖ±½ÓÌø×ª£¬</p>
|
||
|
||
<p class=a><a name=L410></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L410"><span
|
||
lang=EN-US>410</span></a><span lang=EN-US>
|
||
jz even7
|
||
! </span>·ñÔò<span lang=EN-US>dx</span>ÉèÖÃΪ²ÊÉ«ÏÔʾ<span lang=EN-US>CRT</span>¿ØÖÆË÷Òý¼Ä´æÆ÷¶Ë¿ÚºÅ<span
|
||
lang=EN-US>0x3d4</span>¡£</p>
|
||
|
||
<p class=a><a name=L411></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L411"><span
|
||
lang=EN-US>411</span></a><span lang=EN-US>
|
||
mov dx,#0x3d4</span></p>
|
||
|
||
<p class=a><a name=L412></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L412"><span
|
||
lang=EN-US>412</span></a><span lang=EN-US> even7:
|
||
mov al,#0x0c ! </span>ÉèÖüĴæÆ÷Ë÷ÒýºÅΪ<span lang=EN-US>0x0c</span>£¬¶ÔÓ¦ÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷¡£</p>
|
||
|
||
<p class=a><a name=L413></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L413"><span
|
||
lang=EN-US>413</span></a><span lang=EN-US>
|
||
out dx,al</span></p>
|
||
|
||
<p class=a><a name=L414></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L414"><span
|
||
lang=EN-US>414</span></a><span lang=EN-US>
|
||
inc dx</span></p>
|
||
|
||
<p class=a><a name=L415></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L415"><span
|
||
lang=EN-US>415</span></a><span lang=EN-US> in
|
||
al,dx ! </span>¶ÁÈ¡ÏÔʾÄÚ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÄÚÈÝ£¬²¢±£´æÔÚ<span
|
||
lang=EN-US>bl</span>ÖС£</p>
|
||
|
||
<p class=a><a name=L416></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L416"><span
|
||
lang=EN-US>416</span></a><span lang=EN-US>
|
||
mov bl,al</span></p>
|
||
|
||
<p class=a><a name=L417></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L417"><span
|
||
lang=EN-US>417</span></a><span lang=EN-US>
|
||
mov al,#0x55
|
||
! </span>È»ºóÔÚÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷ÖÐдÈëÖµ<span lang=EN-US>0x55</span>£¬ÔÙ¶ÁÈ¡³öÀ´¡£</p>
|
||
|
||
<p class=a><a name=L418></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L418"><span
|
||
lang=EN-US>418</span></a><span lang=EN-US>
|
||
out dx,al</span></p>
|
||
|
||
<p class=a><a name=L419></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L419"><span
|
||
lang=EN-US>419</span></a><span lang=EN-US>
|
||
in al,dx</span></p>
|
||
|
||
<p class=a><a name=L420></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L420"><span
|
||
lang=EN-US>420</span></a><span lang=EN-US>
|
||
dec dx
|
||
! </span>È»ºóͨ¹ý<span lang=EN-US>CRTC</span>Ë÷Òý¼Ä´æÆ÷¶Ë¿Ú<span lang=EN-US>0x3b4</span>»ò<span
|
||
lang=EN-US>0x3d4</span>Ñ¡ÔñË÷ÒýºÅÊÇ</p>
|
||
|
||
<p class=a><a name=L421></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L421"><span
|
||
lang=EN-US>421</span></a><span lang=EN-US>
|
||
mov al,#0x1f ! 0x1f</span>µÄ<span
|
||
lang=EN-US>Video7</span>ÏÔʾ¿¨±êʶ¼Ä´æÆ÷¡£¸Ã¼Ä´æÆ÷ÄÚÈÝʵ¼ÊÉϾÍÊÇ</p>
|
||
|
||
<p class=a><a name=L422></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L422"><span
|
||
lang=EN-US>422</span></a><span lang=EN-US>
|
||
out dx,al
|
||
! </span>ÏÔ´æÆðʼµØÖ·¸ß×Ö½ÚºÍ<span lang=EN-US>0xea</span>½øÐÐÒì»ò²Ù×÷ºóµÄ½á¹ûÖµ¡£</p>
|
||
|
||
<p class=a><a name=L423></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L423"><span
|
||
lang=EN-US>423</span></a><span lang=EN-US>
|
||
inc dx</span></p>
|
||
|
||
<p class=a><a name=L424></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L424"><span
|
||
lang=EN-US>424</span></a><span lang=EN-US>
|
||
in al,dx
|
||
! </span>¶ÁÈ¡<span lang=EN-US>Video7</span>ÏÔʾ¿¨±êʶ¼Ä´æÆ÷Öµ£¬²¢±£´æÔÚ<span lang=EN-US>bh</span>ÖС£</p>
|
||
|
||
<p class=a><a name=L425></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L425"><span
|
||
lang=EN-US>425</span></a><span lang=EN-US>
|
||
mov bh,al</span></p>
|
||
|
||
<p class=a><a name=L426></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L426"><span
|
||
lang=EN-US>426</span></a><span lang=EN-US>
|
||
dec dx
|
||
! </span>È»ºóÔÙÑ¡ÔñÏÔ´æÆðʼµØÖ·¸ß×ֽڼĴæÆ÷£¬»Ö¸´ÆäÔÖµ¡£</p>
|
||
|
||
<p class=a><a name=L427></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L427"><span
|
||
lang=EN-US>427</span></a><span lang=EN-US>
|
||
mov al,#0x0c</span></p>
|
||
|
||
<p class=a><a name=L428></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L428"><span
|
||
lang=EN-US>428</span></a><span lang=EN-US>
|
||
out dx,al</span></p>
|
||
|
||
<p class=a><a name=L429></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L429"><span
|
||
lang=EN-US>429</span></a><span lang=EN-US>
|
||
inc dx</span></p>
|
||
|
||
<p class=a><a name=L430></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L430"><span
|
||
lang=EN-US>430</span></a><span lang=EN-US>
|
||
mov al,bl</span></p>
|
||
|
||
<p class=a><a name=L431></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L431"><span
|
||
lang=EN-US>431</span></a><span lang=EN-US>
|
||
out dx,al</span></p>
|
||
|
||
<p class=a><a name=L432></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L432"><span
|
||
lang=EN-US>432</span></a><span lang=EN-US>
|
||
mov al,#0x55
|
||
! </span>ËæºóÎÒÃÇÀ´ÑéÖ¤¡°<span lang=EN-US>Video7</span>ÏÔʾ¿¨±êʶ¼Ä´æÆ÷Öµ¾ÍÊÇÏÔ´æÆðʼ</p>
|
||
|
||
<p class=a><a name=L433></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L433"><span
|
||
lang=EN-US>433</span></a><span lang=EN-US>
|
||
xor al,#0xea
|
||
! </span>µØÖ·¸ß×Ö½ÚºÍ<span lang=EN-US>0xea</span>½øÐÐÒì»ò²Ù×÷ºóµÄ½á¹ûÖµ<span lang=EN-US>¡±</span>¡£Òò´Ë<span
|
||
lang=EN-US>0x55</span></p>
|
||
|
||
<p class=a><a name=L434></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L434"><span
|
||
lang=EN-US>434</span></a><span lang=EN-US>
|
||
cmp al,bh
|
||
! </span>ºÍ<span lang=EN-US>0xea</span>½øÐÐÒì»ò²Ù×÷µÄ½á¹û¾ÍÓ¦¸ÃµÈÓÚ±êʶ¼Ä´æÆ÷µÄ²âÊÔÖµ¡£</p>
|
||
|
||
<p class=a><a name=L435></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L435"><span
|
||
lang=EN-US>435</span></a><span lang=EN-US>
|
||
jne novid7
|
||
! </span>Èô²»ÊÇ<span lang=EN-US>Video7</span>ÏÔʾ¿¨£¬ÔòÉèÖÃĬÈÏÏÔʾÐÐÁÐÖµ£¨<span lang=EN-US>492</span>ÐУ©¡£</p>
|
||
|
||
<p class=a><a name=L436></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L436"><span
|
||
lang=EN-US>436</span></a><span lang=EN-US>
|
||
lea si,dscvideo7 ! </span>ÊÇ<span
|
||
lang=EN-US>Video7</span>ÏÔʾ¿¨£¬ÓÚÊÇÈÃ<span lang=EN-US>si</span>Ö¸Ïò¸ÃÏÔʾ¿¨ÐÐÁÐÖµ±í£¬ÈÃ<span
|
||
lang=EN-US>di</span></p>
|
||
|
||
<p class=a><a name=L437></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L437"><span
|
||
lang=EN-US>437</span></a><span lang=EN-US>
|
||
lea di,movideo7 ! </span>Ö¸ÏòÀ©Õ¹Ä£Ê½¸öÊýºÍģʽºÅÁÐ±í¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæ¸ù¾ÝÉÏÊö´úÂëÅжϳöµÄÏÔʾ¿¨ÀàÐÍÒÔ¼°È¡µÃµÄÏà¹ØÀ©Õ¹Ä£Ê½ÐÅÏ¢£¨<span
|
||
lang=EN-US>si</span>Ö¸ÏòµÄÐÐÁÐÖµÁÐ±í£»<span lang=EN-US>di</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Ö¸ÏòÀ©Õ¹Ä£Ê½¸öÊýºÍģʽºÅÁÐ±í£©£¬ÌáʾÓû§Ñ¡Ôñ¿ÉÓõÄÏÔʾģʽ£¬²¢ÉèÖóÉÏàÓ¦ÏÔʾģʽ¡£×îºó</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>×Ó³ÌÐò·µ»ØÏµÍ³µ±Ç°ÉèÖÃµÄÆÁÄ»ÐÐÁÐÖµ£¨<span
|
||
lang=EN-US>ah = </span>ÁÐÊý£»<span lang=EN-US>al=</span>ÐÐÊý£©¡£ÀýÈ磬Èç¹ûϵͳÖÐÊÇ<span
|
||
lang=EN-US>ATI</span>ÏÔʾ¿¨£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÄÇôÆÁÄ»ÉÏ»áÏÔʾÒÔÏÂÐÅÏ¢£º</p>
|
||
|
||
<p class=a><span lang=EN-US> ! Mode: COLSxROWS:</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! 0. 132
|
||
x 25</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! 1. 132
|
||
x 44</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! Choose mode by pressing the
|
||
corresponding number.</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Õâ¶Î³ÌÐòÊ×ÏÈÔÚÆÁÄ»ÉÏÏÔʾ<span
|
||
lang=EN-US>NULL</span>½áβµÄ×Ö·û´®ÐÅÏ¢¡°<span lang=EN-US>Mode: COLSxROWS:</span>¡±¡£</p>
|
||
|
||
<p class=a><a name=L438></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L438"><span
|
||
lang=EN-US>438</span></a><span lang=EN-US> selmod: push si</span></p>
|
||
|
||
<p class=a><a name=L439></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L439"><span
|
||
lang=EN-US>439</span></a><span lang=EN-US>
|
||
lea si,msg2</span></p>
|
||
|
||
<p class=a><a name=L440></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L440"><span
|
||
lang=EN-US>440</span></a><span lang=EN-US>
|
||
call prtstr</span></p>
|
||
|
||
<p class=a><a name=L441></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L441"><span
|
||
lang=EN-US>441</span></a><span lang=EN-US>
|
||
xor cx,cx</span></p>
|
||
|
||
<p class=a><a name=L442></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L442"><span
|
||
lang=EN-US>442</span></a><span lang=EN-US>
|
||
mov cl,(di)
|
||
! </span>´Ëʱ<span lang=EN-US>cl</span>ÖÐÊǼì²é³öµÄÏÔʾ¿¨µÄÀ©Õ¹Ä£Ê½¸öÊý¡£</p>
|
||
|
||
<p class=a><a name=L443></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L443"><span
|
||
lang=EN-US>443</span></a><span lang=EN-US>
|
||
pop si</span></p>
|
||
|
||
<p class=a><a name=L444></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L444"><span
|
||
lang=EN-US>444</span></a><span lang=EN-US>
|
||
push si</span></p>
|
||
|
||
<p class=a><a name=L445></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L445"><span
|
||
lang=EN-US>445</span></a><span lang=EN-US>
|
||
push cx</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>È»ºó²¢ÔÚÿһÐÐÉÏÏÔʾ³öµ±Ç°ÏÔʾ¿¨¿ÉÑ¡ÔñµÄÀ©Õ¹Ä£Ê½ÐÐÁÐÖµ£¬¹©Óû§Ñ¡Óá£</p>
|
||
|
||
<p class=a><a name=L446></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L446"><span
|
||
lang=EN-US>446</span></a><span lang=EN-US> tbl:
|
||
pop bx
|
||
! bx = </span>ÏÔʾ¿¨µÄÀ©Õ¹Ä£Ê½×ܸöÊý¡£</p>
|
||
|
||
<p class=a><a name=L447></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L447"><span
|
||
lang=EN-US>447</span></a><span lang=EN-US>
|
||
push bx</span></p>
|
||
|
||
<p class=a><a name=L448></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L448"><span
|
||
lang=EN-US>448</span></a><span lang=EN-US>
|
||
mov al,bl</span></p>
|
||
|
||
<p class=a><a name=L449></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L449"><span
|
||
lang=EN-US>449</span></a><span lang=EN-US>
|
||
sub al,cl</span></p>
|
||
|
||
<p class=a><a name=L450></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L450"><span
|
||
lang=EN-US>450</span></a><span lang=EN-US>
|
||
call dprnt
|
||
! </span>ÒÔÊ®½øÖƸñʽÏÔʾ<span lang=EN-US>al</span>ÖеÄÖµ¡£</p>
|
||
|
||
<p class=a><a name=L451></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L451"><span
|
||
lang=EN-US>451</span></a><span lang=EN-US>
|
||
call spcing
|
||
! </span>ÏÔʾһ¸öµãÔÙ¿Õ<span lang=EN-US>4</span>¸ö¿Õ¸ñ¡£</p>
|
||
|
||
<p class=a><a name=L452></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L452"><span
|
||
lang=EN-US>452</span></a><span lang=EN-US>
|
||
lodsw
|
||
! </span>ÔÚ<span lang=EN-US>ax</span>ÖмÓÔØ<span lang=EN-US>si</span>Ö¸ÏòµÄÐÐÁÐÖµ£¬Ëæºó<span
|
||
lang=EN-US>si</span>Ö¸ÏòÏÂÒ»¸ö<span lang=EN-US>word</span>Öµ¡£</p>
|
||
|
||
<p class=a><a name=L453></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L453"><span
|
||
lang=EN-US>453</span></a><span lang=EN-US>
|
||
xchg al,ah
|
||
! </span>½»»»Î»Öúó<span lang=EN-US>al = </span>ÁÐÊý¡£</p>
|
||
|
||
<p class=a><a name=L454></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L454"><span
|
||
lang=EN-US>454</span></a><span lang=EN-US>
|
||
call dprnt
|
||
! </span>ÏÔʾÁÐÊý£»</p>
|
||
|
||
<p class=a><a name=L455></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L455"><span
|
||
lang=EN-US>455</span></a><span lang=EN-US>
|
||
xchg ah,al
|
||
! </span>´Ëʱ<span lang=EN-US>al</span>ÖÐÊÇÐÐÊýÖµ¡£</p>
|
||
|
||
<p class=a><a name=L456></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L456"><span
|
||
lang=EN-US>456</span></a><span lang=EN-US>
|
||
push ax</span></p>
|
||
|
||
<p class=a><a name=L457></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L457"><span
|
||
lang=EN-US>457</span></a><span lang=EN-US>
|
||
mov al,#0x78
|
||
! </span>ÏÔʾһ¸öС¡°<span lang=EN-US>x¡±</span>£¬¼´³ËºÅ¡£</p>
|
||
|
||
<p class=a><a name=L458></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L458"><span
|
||
lang=EN-US>458</span></a><span lang=EN-US>
|
||
call prnt1</span></p>
|
||
|
||
<p class=a><a name=L459></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L459"><span
|
||
lang=EN-US>459</span></a><span lang=EN-US>
|
||
pop ax
|
||
! </span>´Ëʱ<span lang=EN-US>al</span>ÖÐÊÇÐÐÊýÖµ¡£</p>
|
||
|
||
<p class=a><a name=L460></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L460"><span
|
||
lang=EN-US>460</span></a><span lang=EN-US>
|
||
call dprnt
|
||
! </span>ÏÔʾÐÐÊý¡£</p>
|
||
|
||
<p class=a><a name=L461></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L461"><span
|
||
lang=EN-US>461</span></a><span lang=EN-US>
|
||
call docr
|
||
! </span>»Ø³µ»»ÐС£</p>
|
||
|
||
<p class=a><a name=L462></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L462"><span
|
||
lang=EN-US>462</span></a><span lang=EN-US>
|
||
loop tbl
|
||
! </span>ÔÙÏÔʾÏÂÒ»¸öÐÐÁÐÖµ¡£<span lang=EN-US>cx</span>ÖÐÀ©Õ¹Ä£Ê½¼ÆÊýÖµµÝ¼õ<span lang=EN-US>1</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÔÚÀ©Õ¹Ä£Ê½ÐÐÁÐÖµ¶¼ÏÔʾ֮ºó£¬ÏÔʾ¡°<span
|
||
lang=EN-US>Choose mode by pressing the corresponding number.</span>¡±£¬</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>È»ºó´Ó¼üÅ̿ڶÁÈ¡Óû§°´¼üµÄɨÃèÂ룬¸ù¾Ý¸ÃɨÃèÂëÈ·¶¨Óû§Ñ¡ÔñµÄÐÐÁÐֵģʽºÅ£¬²¢ÀûÓÃ<span
|
||
lang=EN-US>ROM </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! BIOS</span>µÄÏÔʾÖжÏ<span
|
||
lang=EN-US>int 0x10</span>¹¦ÄÜ<span lang=EN-US>0x00</span>À´ÉèÖÃÏàÓ¦µÄÏÔʾģʽ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÚ<span lang=EN-US>468</span>ÐеÄ<span
|
||
lang=EN-US>¡°</span>ģʽ¸öÊýÖµ<span lang=EN-US>+0x80¡±</span>ÊÇËù°´Êý×Ö¼ü<span
|
||
lang=EN-US>-1</span>µÄËÉ¿ªÉ¨ÃèÂë¡£¶ÔÓÚ<span lang=EN-US>0--9</span>Êý×Ö¼ü£¬ËüÃǵÄËÉ¿ª</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ɨÃèÂë·Ö±ðÊÇ£º<span
|
||
lang=EN-US>0 - 0x8B</span>£»<span lang=EN-US>1 - 0x82</span>£»<span lang=EN-US>2
|
||
- 0x83</span>£»<span lang=EN-US>3 - 0x84</span>£»<span lang=EN-US>4 - 0x85</span>£»</p>
|
||
|
||
<p class=a><span lang=EN-US> !
|
||
5 - 0x86</span>£»<span lang=EN-US>6 - 0x87</span>£»<span lang=EN-US>7 - 0x88</span>£»<span
|
||
lang=EN-US>8 - 0x89</span>£»<span lang=EN-US>9 - 0x8A</span>¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Òò´Ë£¬Èç¹û¶ÁÈ¡µÄ¼üÅÌËÉ¿ªÉ¨ÃèÂëСÓÚ<span
|
||
lang=EN-US>0x82</span>¾Í±íʾ²»ÊÇÊý×Ö¼ü£»Èç¹ûɨÃèÂëµÈÓÚ<span lang=EN-US>0x8B</span>Ôò±íʾÓû§</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>°´ÏÂÊý×Ö<span lang=EN-US>0</span>¼ü¡£</p>
|
||
|
||
<p class=a><a name=L463></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L463"><span
|
||
lang=EN-US>463</span></a><span lang=EN-US>
|
||
pop cx
|
||
! cl</span>ÖÐÊÇÏÔʾ¿¨À©Õ¹Ä£Ê½×ܸöÊýÖµ¡£</p>
|
||
|
||
<p class=a><a name=L464></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L464"><span
|
||
lang=EN-US>464</span></a><span lang=EN-US>
|
||
call docr</span></p>
|
||
|
||
<p class=a><a name=L465></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L465"><span
|
||
lang=EN-US>465</span></a><span lang=EN-US>
|
||
lea si,msg3
|
||
! </span>ÏÔʾ¡°Çë°´ÏàÓ¦Êý×Ö¼üÀ´Ñ¡Ôñģʽ¡£¡±</p>
|
||
|
||
<p class=a><a name=L466></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L466"><span
|
||
lang=EN-US>466</span></a><span lang=EN-US>
|
||
call prtstr</span></p>
|
||
|
||
<p class=a><a name=L467></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L467"><span
|
||
lang=EN-US>467</span></a><span lang=EN-US>
|
||
pop si
|
||
! </span>µ¯³öÔÐÐÁÐÖµÖ¸Õ루ָÏòÏÔʾ¿¨ÐÐÁÐÖµ±í¿ªÊ¼´¦£©¡£</p>
|
||
|
||
<p class=a><a name=L468></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L468"><span
|
||
lang=EN-US>468</span></a><span lang=EN-US>
|
||
add cl,#0x80
|
||
! cl + 0x80 = </span>¶ÔÓ¦¡°Êý×Ö¼ü<span
|
||
lang=EN-US>-1</span>¡±µÄËÉ¿ªÉ¨ÃèÂë¡£</p>
|
||
|
||
<p class=a><a name=L469></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L469"><span
|
||
lang=EN-US>469</span></a><span lang=EN-US> nonum:
|
||
in
|
||
al,#0x60 ! Quick and dirty...</span></p>
|
||
|
||
<p class=a><a name=L470></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L470"><span
|
||
lang=EN-US>470</span></a><span lang=EN-US>
|
||
cmp al,#0x82
|
||
! </span>Èô¼üÅÌËÉ¿ªÉ¨ÃèÂëСÓÚ<span lang=EN-US>0x82</span>Ôò±íʾ²»ÊÇÊý×Ö¼ü£¬ºöÂɸüü¡£</p>
|
||
|
||
<p class=a><a name=L471></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L471"><span
|
||
lang=EN-US>471</span></a><span lang=EN-US>
|
||
jb nonum</span></p>
|
||
|
||
<p class=a><a name=L472></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L472"><span
|
||
lang=EN-US>472</span></a><span lang=EN-US>
|
||
cmp al,#0x8b !
|
||
</span>Èô¼üÅÌËÉ¿ªÉ¨ÃèÂëµÈÓÚ<span lang=EN-US>0x8b</span>£¬±íʾ°´ÏÂÁËÊý×Ö¼ü<span lang=EN-US>0</span>¡£</p>
|
||
|
||
<p class=a><a name=L473></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L473"><span
|
||
lang=EN-US>473</span></a><span lang=EN-US>
|
||
je zero</span></p>
|
||
|
||
<p class=a><a name=L474></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L474"><span
|
||
lang=EN-US>474</span></a><span lang=EN-US>
|
||
cmp al,cl
|
||
! </span>ÈôɨÃèÂë´óÓÚÀ©Õ¹Ä£Ê½¸öÊýÖµ¶ÔÓ¦µÄ×î´óɨÃèÂëÖµ£¬±íʾ</p>
|
||
|
||
<p class=a><a name=L475></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L475"><span
|
||
lang=EN-US>475</span></a><span lang=EN-US>
|
||
ja nonum
|
||
! </span>¼üÈëµÄÖµ³¬¹ý·¶Î§»ò²»ÊÇÊý×Ö¼üµÄËÉ¿ªÉ¨ÃèÂë¡£·ñÔò±íʾ</p>
|
||
|
||
<p class=a><a name=L476></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L476"><span
|
||
lang=EN-US>476</span></a><span lang=EN-US>
|
||
jmp nozero
|
||
! </span>Óû§°´Ï²¢ËÉ¿ªÁËÒ»¸ö·Ç<span lang=EN-US>0</span>Êý×Ö°´¼ü¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæ°ÑËÉ¿ªÉ¨ÃèÂëת»»³É¶ÔÓ¦µÄÊý×Ö°´¼üÖµ£¬È»ºóÀûÓøÃÖµ´Óģʽ¸öÊýºÍģʽºÅÁбíÖÐÑ¡Ôñ¶ÔÓ¦µÄ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÄģʽºÅ¡£½Ó×ŵ÷ÓûúÆ÷<span
|
||
lang=EN-US>ROM BIOS</span>ÖжÏ<span lang=EN-US>int 0x10</span>¹¦ÄÜ<span lang=EN-US>0</span>°ÑÆÁÄ»ÉèÖóÉģʽºÅÖ¸¶¨µÄģʽ¡£×îºóÔÙ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÀûÓÃģʽºÅ´ÓÏÔʾ¿¨ÐÐÁÐÖµ±íÖÐÑ¡Ôñ²¢ÔÚ<span
|
||
lang=EN-US>ax</span>Öзµ»Ø¶ÔÓ¦µÄÐÐÁÐÖµ¡£</p>
|
||
|
||
<p class=a><a name=L477></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L477"><span
|
||
lang=EN-US>477</span></a><span lang=EN-US> zero:
|
||
sub al,#0x0a ! al = 0x8b - 0x0a = 0x81</span>¡£</p>
|
||
|
||
<p class=a><a name=L478></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L478"><span
|
||
lang=EN-US>478</span></a><span lang=EN-US> nozero: sub
|
||
al,#0x80 ! </span>ÔÙ¼õÈ¥<span
|
||
lang=EN-US>0x80</span>¾Í¿ÉÒԵõ½Óû§Ñ¡ÔñÁ˵ڼ¸¸öģʽ¡£</p>
|
||
|
||
<p class=a><a name=L479></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L479"><span
|
||
lang=EN-US>479</span></a><span lang=EN-US>
|
||
dec al
|
||
! </span>´Ó<span lang=EN-US>0</span>Æð¼ÆÊý¡£</p>
|
||
|
||
<p class=a><a name=L480></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L480"><span
|
||
lang=EN-US>480</span></a><span lang=EN-US>
|
||
xor ah,ah
|
||
! int 0x10</span>ÏÔʾ¹¦ÄܺÅ<span lang=EN-US>=0</span>£¨ÉèÖÃÏÔʾģʽ£©¡£</p>
|
||
|
||
<p class=a><a name=L481></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L481"><span
|
||
lang=EN-US>481</span></a><span lang=EN-US>
|
||
add di,ax</span></p>
|
||
|
||
<p class=a><a name=L482></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L482"><span
|
||
lang=EN-US>482</span></a><span lang=EN-US>
|
||
inc di
|
||
! di</span>Ö¸Ïò¶ÔÓ¦µÄģʽºÅ£¨Ìø¹ýµÚ<span lang=EN-US>1</span>¸öģʽ¸öÊý×Ö½ÚÖµ£©¡£</p>
|
||
|
||
<p class=a><a name=L483></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L483"><span
|
||
lang=EN-US>483</span></a><span lang=EN-US>
|
||
push ax</span></p>
|
||
|
||
<p class=a><a name=L484></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L484"><span
|
||
lang=EN-US>484</span></a><span lang=EN-US>
|
||
mov al,(di)
|
||
! </span>ȡģʽºÅ<span lang=EN-US style='font-family:Wingdings'>¨¨</span><span
|
||
lang=EN-US>al</span>ÖУ¬²¢µ÷ÓÃϵͳ<span lang=EN-US>BIOS</span>ÏÔʾÖжϹ¦ÄÜ<span lang=EN-US>0</span>¡£</p>
|
||
|
||
<p class=a><a name=L485></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L485"><span
|
||
lang=EN-US>485</span></a><span lang=EN-US>
|
||
int 0x10</span></p>
|
||
|
||
<p class=a><a name=L486></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L486"><span
|
||
lang=EN-US>486</span></a><span lang=EN-US>
|
||
pop ax</span></p>
|
||
|
||
<p class=a><a name=L487></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L487"><span
|
||
lang=EN-US>487</span></a><span lang=EN-US>
|
||
shl ax,#1
|
||
! </span>ģʽºÅ³Ë<span lang=EN-US>2</span>£¬×ª»»³ÉΪÐÐÁÐÖµ±íÖжÔÓ¦ÖµµÄÖ¸Õë¡£</p>
|
||
|
||
<p class=a><a name=L488></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L488"><span
|
||
lang=EN-US>488</span></a><span lang=EN-US>
|
||
add si,ax</span></p>
|
||
|
||
<p class=a><a name=L489></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L489"><span
|
||
lang=EN-US>489</span></a><span lang=EN-US>
|
||
lodsw
|
||
! </span>È¡¶ÔÓ¦ÐÐÁÐÖµµ½<span lang=EN-US>ax</span>ÖУ¨<span lang=EN-US>ah = </span>ÁÐÊý£¬<span
|
||
lang=EN-US>al = </span>ÐÐÊý£©¡£</p>
|
||
|
||
<p class=a><a name=L490></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L490"><span
|
||
lang=EN-US>490</span></a><span lang=EN-US>
|
||
pop ds
|
||
! </span>»Ö¸´µÚ<span lang=EN-US>216</span>Ðб£´æµÄ<span lang=EN-US>ds</span>ÔÖµ¡£ÔÚ<span
|
||
lang=EN-US>ax</span>Öзµ»Øµ±Ç°ÏÔʾÐÐÁÐÖµ¡£</p>
|
||
|
||
<p class=a><a name=L491></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L491"><span
|
||
lang=EN-US>491</span></a><span lang=EN-US>
|
||
ret</span></p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>Èô¶¼²»ÊÇÉÏÃæ¼ì²âµÄÏÔʾ¿¨£¬ÄÇôÎÒÃÇÖ»ºÃ²ÉÓÃĬÈϵÄ<span
|
||
lang=EN-US>80 x 25 </span>µÄ±ê×¼ÐÐÁÐÖµ¡£</p>
|
||
|
||
<p class=a><a name=L492></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L492"><span
|
||
lang=EN-US>492</span></a><span lang=EN-US> novid7: pop
|
||
ds !
|
||
Here could be code to support standard 80x50,80x30</span></p>
|
||
|
||
<p class=a><a name=L493></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L493"><span
|
||
lang=EN-US>493</span></a><span lang=EN-US>
|
||
mov ax,#0x5019 </span></p>
|
||
|
||
<p class=a><a name=L494></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L494"><span
|
||
lang=EN-US>494</span></a><span lang=EN-US>
|
||
ret</span></p>
|
||
|
||
<p class=a><a name=L495></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L495"><span
|
||
lang=EN-US>495</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L496></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L496"><span
|
||
lang=EN-US>496</span></a><span lang=EN-US> ! Routine that 'tabs' to next col.</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¹â±êÒÆ¶¯µ½ÏÂÒ»ÖÆ±íλµÄ×Ó³ÌÐò¡£</p>
|
||
|
||
<p class=a><a name=L497></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L497"><span
|
||
lang=EN-US>497</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÔʾһ¸öµã×Ö·û<span
|
||
lang=EN-US>'.'</span>ºÍ<span lang=EN-US>4</span>¸ö¿Õ¸ñ¡£</p>
|
||
|
||
<p class=a><a name=L498></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L498"><span
|
||
lang=EN-US>498</span></a><span lang=EN-US> spcing: mov
|
||
al,#0x2e ! </span>ÏÔʾһ¸öµã×Ö·û<span
|
||
lang=EN-US>'.'</span>¡£</p>
|
||
|
||
<p class=a><a name=L499></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L499"><span
|
||
lang=EN-US>499</span></a><span lang=EN-US>
|
||
call prnt1</span></p>
|
||
|
||
<p class=a><a name=L500></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L500"><span
|
||
lang=EN-US>500</span></a><span lang=EN-US>
|
||
mov al,#0x20</span></p>
|
||
|
||
<p class=a><a name=L501></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L501"><span
|
||
lang=EN-US>501</span></a><span lang=EN-US>
|
||
call prnt1 </span></p>
|
||
|
||
<p class=a><a name=L502></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L502"><span
|
||
lang=EN-US>502</span></a><span lang=EN-US>
|
||
mov al,#0x20</span></p>
|
||
|
||
<p class=a><a name=L503></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L503"><span
|
||
lang=EN-US>503</span></a><span lang=EN-US>
|
||
call prnt1 </span></p>
|
||
|
||
<p class=a><a name=L504></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L504"><span
|
||
lang=EN-US>504</span></a><span lang=EN-US>
|
||
mov al,#0x20</span></p>
|
||
|
||
<p class=a><a name=L505></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L505"><span
|
||
lang=EN-US>505</span></a><span lang=EN-US>
|
||
call prnt1 </span></p>
|
||
|
||
<p class=a><a name=L506></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L506"><span
|
||
lang=EN-US>506</span></a><span lang=EN-US>
|
||
mov al,#0x20</span></p>
|
||
|
||
<p class=a><a name=L507></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L507"><span
|
||
lang=EN-US>507</span></a><span lang=EN-US>
|
||
call prnt1</span></p>
|
||
|
||
<p class=a><a name=L508></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L508"><span
|
||
lang=EN-US>508</span></a><span lang=EN-US>
|
||
ret </span></p>
|
||
|
||
<p class=a><a name=L509></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L509"><span
|
||
lang=EN-US>509</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L510></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L510"><span
|
||
lang=EN-US>510</span></a><span lang=EN-US> ! Routine to print asciiz-string at
|
||
DS:SI</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÔʾλÓÚ<span lang=EN-US>DS:SI</span>´¦ÒÔ<span
|
||
lang=EN-US>NULL</span>£¨<span lang=EN-US>0x00</span>£©½áβµÄ×Ö·û´®¡£</p>
|
||
|
||
<p class=a><a name=L511></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L511"><span
|
||
lang=EN-US>511</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L512></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L512"><span
|
||
lang=EN-US>512</span></a><span lang=EN-US> prtstr: lodsb</span></p>
|
||
|
||
<p class=a><a name=L513></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L513"><span
|
||
lang=EN-US>513</span></a><span lang=EN-US>
|
||
and al,al</span></p>
|
||
|
||
<p class=a><a name=L514></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L514"><span
|
||
lang=EN-US>514</span></a><span lang=EN-US>
|
||
jz fin</span></p>
|
||
|
||
<p class=a><a name=L515></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L515"><span
|
||
lang=EN-US>515</span></a><span lang=EN-US>
|
||
call prnt1
|
||
! </span>ÏÔʾ<span lang=EN-US>al</span>ÖеÄÒ»¸ö×Ö·û¡£</p>
|
||
|
||
<p class=a><a name=L516></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L516"><span
|
||
lang=EN-US>516</span></a><span lang=EN-US>
|
||
jmp prtstr</span></p>
|
||
|
||
<p class=a><a name=L517></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L517"><span
|
||
lang=EN-US>517</span></a><span lang=EN-US> fin: ret</span></p>
|
||
|
||
<p class=a><a name=L518></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L518"><span
|
||
lang=EN-US>518</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L519></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L519"><span
|
||
lang=EN-US>519</span></a><span lang=EN-US> ! Routine to print a decimal value
|
||
on screen, the value to be</span></p>
|
||
|
||
<p class=a><a name=L520></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L520"><span
|
||
lang=EN-US>520</span></a><span lang=EN-US> ! printed is put in al (i.e 0-255). </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÔʾʮ½øÖÆÊý×ÖµÄ×Ó³ÌÐò¡£ÏÔʾֵ·ÅÔڼĴæÆ÷<span
|
||
lang=EN-US>al</span>ÖУ¨<span lang=EN-US>0--255</span>£©¡£</p>
|
||
|
||
<p class=a><a name=L521></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L521"><span
|
||
lang=EN-US>521</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L522></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L522"><span
|
||
lang=EN-US>522</span></a><span lang=EN-US> dprnt: push
|
||
ax</span></p>
|
||
|
||
<p class=a><a name=L523></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L523"><span
|
||
lang=EN-US>523</span></a><span lang=EN-US>
|
||
push cx</span></p>
|
||
|
||
<p class=a><a name=L524></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L524"><span
|
||
lang=EN-US>524</span></a><span lang=EN-US>
|
||
mov
|
||
ah,#0x00
|
||
</span></p>
|
||
|
||
<p class=a><a name=L525></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L525"><span
|
||
lang=EN-US>525</span></a><span lang=EN-US>
|
||
mov cl,#0x0a</span></p>
|
||
|
||
<p class=a><a name=L526></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L526"><span
|
||
lang=EN-US>526</span></a><span lang=EN-US>
|
||
idiv cl</span></p>
|
||
|
||
<p class=a><a name=L527></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L527"><span
|
||
lang=EN-US>527</span></a><span lang=EN-US>
|
||
cmp al,#0x09</span></p>
|
||
|
||
<p class=a><a name=L528></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L528"><span
|
||
lang=EN-US>528</span></a><span lang=EN-US>
|
||
jbe lt100</span></p>
|
||
|
||
<p class=a><a name=L529></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L529"><span
|
||
lang=EN-US>529</span></a><span lang=EN-US>
|
||
call dprnt</span></p>
|
||
|
||
<p class=a><a name=L530></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L530"><span
|
||
lang=EN-US>530</span></a><span lang=EN-US>
|
||
jmp skip10</span></p>
|
||
|
||
<p class=a><a name=L531></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L531"><span
|
||
lang=EN-US>531</span></a><span lang=EN-US> lt100:
|
||
add al,#0x30</span></p>
|
||
|
||
<p class=a><a name=L532></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L532"><span
|
||
lang=EN-US>532</span></a><span lang=EN-US>
|
||
call prnt1</span></p>
|
||
|
||
<p class=a><a name=L533></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L533"><span
|
||
lang=EN-US>533</span></a><span lang=EN-US> skip10: mov
|
||
al,ah</span></p>
|
||
|
||
<p class=a><a name=L534></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L534"><span
|
||
lang=EN-US>534</span></a><span lang=EN-US>
|
||
add al,#0x30</span></p>
|
||
|
||
<p class=a><a name=L535></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L535"><span
|
||
lang=EN-US>535</span></a><span lang=EN-US>
|
||
call prnt1 </span></p>
|
||
|
||
<p class=a><a name=L536></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L536"><span
|
||
lang=EN-US>536</span></a><span lang=EN-US>
|
||
pop cx</span></p>
|
||
|
||
<p class=a><a name=L537></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L537"><span
|
||
lang=EN-US>537</span></a><span lang=EN-US>
|
||
pop ax</span></p>
|
||
|
||
<p class=a><a name=L538></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L538"><span
|
||
lang=EN-US>538</span></a><span lang=EN-US> ret</span></p>
|
||
|
||
<p class=a><a name=L539></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L539"><span
|
||
lang=EN-US>539</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L540></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L540"><span
|
||
lang=EN-US>540</span></a><span lang=EN-US> ! Part of above routine, this one
|
||
just prints ascii al</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÉÏÃæ×Ó³ÌÐòµÄÒ»²¿·Ö¡£ÏÔʾ<span
|
||
lang=EN-US>al</span>ÖеÄÒ»¸ö×Ö·û¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>¸Ã×Ó³ÌÐòʹÓÃÖжÏ<span
|
||
lang=EN-US>0x10</span>µÄ<span lang=EN-US>0x0E</span>¹¦ÄÜ£¬ÒԵ紫·½Ê½ÔÚÆÁÄ»ÉÏдһ¸ö×Ö·û¡£¹â±ê»á×Ô¶¯ÒƵ½ÏÂÒ»¸ö</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>λÖô¦¡£Èç¹ûдÍêÒ»Ðйâ±ê¾Í»áÒÆ¶¯µ½ÏÂÒ»ÐпªÊ¼´¦¡£Èç¹ûÒѾдÍêÒ»ÆÁ×îºóÒ»ÐУ¬ÔòÕû¸öÆÁÄ»</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>»áÏòÉϹö¶¯Ò»ÐС£×Ö·û<span
|
||
lang=EN-US>0x07</span>£¨<span lang=EN-US>BEL</span>£©¡¢<span lang=EN-US>0x08</span>£¨<span
|
||
lang=EN-US>BS</span>£©¡¢<span lang=EN-US>0x0A(LF)</span>ºÍ<span
|
||
lang=EN-US>0x0D</span>£¨<span lang=EN-US>CR</span>£©±»×÷ΪÃüÁî²»»áÏÔʾ¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÊäÈ룺<span lang=EN-US>AL
|
||
-- </span>Óûд×Ö·û£»<span lang=EN-US>BH -- </span>ÏÔʾҳºÅ£»<span lang=EN-US>BL -- </span>ǰ¾°ÏÔʾɫ£¨Í¼Ðη½Ê½Ê±£©¡£</p>
|
||
|
||
<p class=a><a name=L541></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L541"><span
|
||
lang=EN-US>541</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L542></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L542"><span
|
||
lang=EN-US>542</span></a><span lang=EN-US> prnt1: push
|
||
ax</span></p>
|
||
|
||
<p class=a><a name=L543></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L543"><span
|
||
lang=EN-US>543</span></a><span lang=EN-US>
|
||
push cx</span></p>
|
||
|
||
<p class=a><a name=L544></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L544"><span
|
||
lang=EN-US>544</span></a><span lang=EN-US>
|
||
mov bh,#0x00
|
||
! </span>ÏÔÊ¾Ò³Ãæ¡£</p>
|
||
|
||
<p class=a><a name=L545></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L545"><span
|
||
lang=EN-US>545</span></a><span lang=EN-US>
|
||
mov cx,#0x01</span></p>
|
||
|
||
<p class=a><a name=L546></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L546"><span
|
||
lang=EN-US>546</span></a><span lang=EN-US>
|
||
mov ah,#0x0e</span></p>
|
||
|
||
<p class=a><a name=L547></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L547"><span
|
||
lang=EN-US>547</span></a><span lang=EN-US>
|
||
int 0x10</span></p>
|
||
|
||
<p class=a><a name=L548></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L548"><span
|
||
lang=EN-US>548</span></a><span lang=EN-US>
|
||
pop cx</span></p>
|
||
|
||
<p class=a><a name=L549></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L549"><span
|
||
lang=EN-US>549</span></a><span lang=EN-US>
|
||
pop ax</span></p>
|
||
|
||
<p class=a><a name=L550></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L550"><span
|
||
lang=EN-US>550</span></a><span lang=EN-US>
|
||
ret</span></p>
|
||
|
||
<p class=a><a name=L551></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L551"><span
|
||
lang=EN-US>551</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L552></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L552"><span
|
||
lang=EN-US>552</span></a><span lang=EN-US> ! Prints <CR> + <LF>
|
||
! </span>ÏÔʾ»Ø³µ<span lang=EN-US>+</span>»»ÐС£</p>
|
||
|
||
<p class=a><a name=L553></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L553"><span
|
||
lang=EN-US>553</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L554></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L554"><span
|
||
lang=EN-US>554</span></a><span lang=EN-US> docr:
|
||
push ax</span></p>
|
||
|
||
<p class=a><a name=L555></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L555"><span
|
||
lang=EN-US>555</span></a><span lang=EN-US>
|
||
push cx</span></p>
|
||
|
||
<p class=a><a name=L556></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L556"><span
|
||
lang=EN-US>556</span></a><span lang=EN-US>
|
||
mov bh,#0x00</span></p>
|
||
|
||
<p class=a><a name=L557></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L557"><span
|
||
lang=EN-US>557</span></a><span lang=EN-US>
|
||
mov ah,#0x0e</span></p>
|
||
|
||
<p class=a><a name=L558></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L558"><span
|
||
lang=EN-US>558</span></a><span lang=EN-US>
|
||
mov al,#0x0a</span></p>
|
||
|
||
<p class=a><a name=L559></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L559"><span
|
||
lang=EN-US>559</span></a><span lang=EN-US>
|
||
mov cx,#0x01</span></p>
|
||
|
||
<p class=a><a name=L560></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L560"><span
|
||
lang=EN-US>560</span></a><span lang=EN-US>
|
||
int 0x10</span></p>
|
||
|
||
<p class=a><a name=L561></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L561"><span
|
||
lang=EN-US>561</span></a><span lang=EN-US>
|
||
mov al,#0x0d</span></p>
|
||
|
||
<p class=a><a name=L562></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L562"><span
|
||
lang=EN-US>562</span></a><span lang=EN-US>
|
||
int 0x10</span></p>
|
||
|
||
<p class=a><a name=L563></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L563"><span
|
||
lang=EN-US>563</span></a><span lang=EN-US>
|
||
pop cx</span></p>
|
||
|
||
<p class=a><a name=L564></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L564"><span
|
||
lang=EN-US>564</span></a><span lang=EN-US>
|
||
pop ax</span></p>
|
||
|
||
<p class=a><a name=L565></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L565"><span
|
||
lang=EN-US>565</span></a><span lang=EN-US>
|
||
ret </span></p>
|
||
|
||
<p class=a><a name=L566></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L566"><span
|
||
lang=EN-US>566</span></a><span lang=EN-US>
|
||
</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>È«¾ÖÃèÊö·û±í¿ªÊ¼´¦¡£ÃèÊö·û±íÓɶà¸ö<span
|
||
lang=EN-US>8</span>×Ö½Ú³¤µÄÃèÊö·ûÏî×é³É¡£ÕâÀï¸ø³öÁË<span lang=EN-US>3</span>¸öÃèÊö·ûÏî¡£</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>µÚ<span lang=EN-US>1</span>ÏîÎÞÓã¨<span
|
||
lang=EN-US>568</span>ÐУ©£¬µ«Ðë´æÔÚ¡£µÚ<span lang=EN-US>2</span>ÏîÊÇϵͳ´úÂë¶ÎÃèÊö·û£¨<span
|
||
lang=EN-US>570-573</span>ÐУ©£¬µÚ<span lang=EN-US>3</span>ÏîÊÇϵ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ͳÊý¾Ý¶ÎÃèÊö·û<span
|
||
lang=EN-US>(575-578</span>ÐÐ<span lang=EN-US>)</span>¡£</p>
|
||
|
||
<p class=a><a name=L567></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L567"><span
|
||
lang=EN-US>567</span></a><span lang=EN-US> gdt:</span></p>
|
||
|
||
<p class=a><a name=L568></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L568"><span
|
||
lang=EN-US>568</span></a><span lang=EN-US>
|
||
.word 0,0,0,0 !
|
||
dummy ! </span>µÚ<span lang=EN-US>1</span>¸öÃèÊö·û£¬²»Óá£</p>
|
||
|
||
<p class=a><a name=L569></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L569"><span
|
||
lang=EN-US>569</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÔÚ<span lang=EN-US>GDT</span>±íÖÐÕâÀïµÄÆ«ÒÆÁ¿ÊÇ<span
|
||
lang=EN-US>0x08</span>¡£ËüÊÇÄں˴úÂë¶ÎÑ¡Ôñ·ûµÄÖµ¡£</p>
|
||
|
||
<p class=a><a name=L570></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L570"><span
|
||
lang=EN-US>570</span></a><span lang=EN-US>
|
||
.word 0x07FF
|
||
! 8Mb - limit=2047 (0--2047</span>£¬Òò´ËÊÇ<span lang=EN-US>2048*4096=8Mb)</span></p>
|
||
|
||
<p class=a><a name=L571></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L571"><span
|
||
lang=EN-US>571</span></a><span lang=EN-US>
|
||
.word 0x0000
|
||
! base address=0</span></p>
|
||
|
||
<p class=a><a name=L572></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L572"><span
|
||
lang=EN-US>572</span></a><span lang=EN-US>
|
||
.word 0x9A00 ! code read/exec ! </span>´úÂë¶ÎΪֻ¶Á¡¢¿ÉÖ´ÐС£</p>
|
||
|
||
<p class=a><a name=L573></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L573"><span
|
||
lang=EN-US>573</span></a><span lang=EN-US>
|
||
.word 0x00C0 ! granularity=4096, 386 ! </span>¿ÅÁ£¶ÈΪ<span lang=EN-US>4096</span>£¬<span
|
||
lang=EN-US>32</span>λģʽ¡£</p>
|
||
|
||
<p class=a><a name=L574></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L574"><span
|
||
lang=EN-US>574</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÔÚ<span lang=EN-US>GDT</span>±íÖÐÕâÀïµÄÆ«ÒÆÁ¿ÊÇ<span
|
||
lang=EN-US>0x10</span>¡£ËüÊÇÄÚºËÊý¾Ý¶ÎÑ¡Ôñ·ûµÄÖµ¡£</p>
|
||
|
||
<p class=a><a name=L575></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L575"><span
|
||
lang=EN-US>575</span></a><span lang=EN-US>
|
||
.word 0x07FF !
|
||
8Mb - limit=2047 (2048*4096=8Mb)</span></p>
|
||
|
||
<p class=a><a name=L576></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L576"><span
|
||
lang=EN-US>576</span></a><span lang=EN-US>
|
||
.word 0x0000
|
||
! base address=0</span></p>
|
||
|
||
<p class=a><a name=L577></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L577"><span
|
||
lang=EN-US>577</span></a><span lang=EN-US> .word
|
||
0x9200 ! data read/write !
|
||
</span>Êý¾Ý¶ÎΪ¿É¶Á¿Éд¡£</p>
|
||
|
||
<p class=a><a name=L578></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L578"><span
|
||
lang=EN-US>578</span></a><span lang=EN-US>
|
||
.word 0x00C0 ! granularity=4096, 386 ! </span>¿ÅÁ£¶ÈΪ<span lang=EN-US>4096</span>£¬<span
|
||
lang=EN-US>32</span>λģʽ¡£</p>
|
||
|
||
<p class=a><a name=L579></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L579"><span
|
||
lang=EN-US>579</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÊǼÓÔØÖжÏÃèÊö·û±í¼Ä´æÆ÷<span
|
||
lang=EN-US>idtr</span>µÄÖ¸Áî<span lang=EN-US>lidt</span>ÒªÇóµÄ<span lang=EN-US>6</span>×Ö½Ú²Ù×÷Êý¡£Ç°<span
|
||
lang=EN-US>2</span>×Ö½ÚÊÇ<span lang=EN-US>IDT</span>±íµÄ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÞ³¤£¬ºó<span lang=EN-US>4</span>×Ö½ÚÊÇ<span
|
||
lang=EN-US>idt</span>±íÔÚÏßÐÔµØÖ·¿Õ¼äÖеÄ<span lang=EN-US>32</span>λ»ùµØÖ·¡£<span lang=EN-US>CPU</span>ÒªÇóÔÚ½øÈë±£»¤Ä£Ê½Ö®Ç°ÐèÉè</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÖÃ<span lang=EN-US>IDT</span>±í£¬Òò´ËÕâÀïÏÈÉèÖÃÒ»¸ö³¤¶ÈΪ<span
|
||
lang=EN-US>0</span>µÄ¿Õ±í¡£</p>
|
||
|
||
<p class=a><a name=L580></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L580"><span
|
||
lang=EN-US>580</span></a><span lang=EN-US> idt_48:</span></p>
|
||
|
||
<p class=a><a name=L581></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L581"><span
|
||
lang=EN-US>581</span></a><span lang=EN-US>
|
||
.word
|
||
0
|
||
! idt limit=0</span></p>
|
||
|
||
<p class=a><a name=L582></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L582"><span
|
||
lang=EN-US>582</span></a><span lang=EN-US>
|
||
.word
|
||
0,0 !
|
||
idt base=0L</span></p>
|
||
|
||
<p class=a><a name=L583></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L583"><span
|
||
lang=EN-US>583</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÕâÊǼÓÔØÈ«¾ÖÃèÊö·û±í¼Ä´æÆ÷<span
|
||
lang=EN-US>gdtr</span>µÄÖ¸Áî<span lang=EN-US>lgdt</span>ÒªÇóµÄ<span lang=EN-US>6</span>×Ö½Ú²Ù×÷Êý¡£Ç°<span
|
||
lang=EN-US>2</span>×Ö½ÚÊÇ<span lang=EN-US>gdt</span>±íµÄÏÞ</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>³¤£¬ºó<span lang=EN-US>4</span>×Ö½ÚÊÇ
|
||
<span lang=EN-US>gdt</span>±íµÄÏßÐÔ»ùµØÖ·¡£ÕâÀïÈ«¾Ö±í³¤¶ÈÉèÖÃΪ<span lang=EN-US> 2KB</span>£¨<span
|
||
lang=EN-US>0x7ff</span>¼´¿É£©£¬ÒòΪÿ<span lang=EN-US>8</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>×Ö½Ú×é³ÉÒ»¸ö¶ÎÃèÊö·ûÏËùÒÔ±íÖй²¿ÉÓÐ<span
|
||
lang=EN-US> 256</span>Ïî¡£<span lang=EN-US>4</span>×Ö½ÚµÄÏßÐÔ»ùµØÖ·Îª<span lang=EN-US>
|
||
0x0009<<16 +</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! 0x0200 + gdt</span>£¬¼´<span
|
||
lang=EN-US>0x90200 + gdt</span>¡£<span lang=EN-US>(</span>·ûºÅ<span lang=EN-US>gdt</span>ÊÇÈ«¾Ö±íÔÚ±¾³ÌÐò¶ÎÖÐµÄÆ«ÒƵØÖ·£¬¼û<span
|
||
lang=EN-US>205</span>ÐÐ<span lang=EN-US>)</span></p>
|
||
|
||
<p class=a><a name=L584></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L584"><span
|
||
lang=EN-US>584</span></a><span lang=EN-US> gdt_48:</span></p>
|
||
|
||
<p class=a><a name=L585></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L585"><span
|
||
lang=EN-US>585</span></a><span lang=EN-US>
|
||
.word
|
||
0x800 ! gdt
|
||
limit=2048, 256 GDT entries</span></p>
|
||
|
||
<p class=a><a name=L586></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L586"><span
|
||
lang=EN-US>586</span></a><span lang=EN-US>
|
||
.word 512+gdt,0x9 ! gdt base = 0X9xxxx</span></p>
|
||
|
||
<p class=a><a name=L587></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L587"><span
|
||
lang=EN-US>587</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L588></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L588"><span
|
||
lang=EN-US>588</span></a><span lang=EN-US> msg1: .ascii
|
||
"Press <RETURN> to see SVGA-modes available or any other key to continue."</span></p>
|
||
|
||
<p class=a><a name=L589></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L589"><span
|
||
lang=EN-US>589</span></a><span lang=EN-US>
|
||
db 0x0d, 0x0a, 0x0a, 0x00</span></p>
|
||
|
||
<p class=a><a name=L590></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L590"><span
|
||
lang=EN-US>590</span></a><span lang=EN-US>
|
||
msg2: .ascii
|
||
"Mode: COLSxROWS:"</span></p>
|
||
|
||
<p class=a><a name=L591></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L591"><span
|
||
lang=EN-US>591</span></a><span lang=EN-US>
|
||
db 0x0d, 0x0a, 0x0a, 0x00</span></p>
|
||
|
||
<p class=a><a name=L592></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L592"><span
|
||
lang=EN-US>592</span></a><span lang=EN-US>
|
||
msg3: .ascii
|
||
"Choose mode by pressing the corresponding number."</span></p>
|
||
|
||
<p class=a><a name=L593></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L593"><span
|
||
lang=EN-US>593</span></a><span lang=EN-US>
|
||
db 0x0d, 0x0a, 0x00</span></p>
|
||
|
||
<p class=a><a name=L594></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L594"><span
|
||
lang=EN-US>594</span></a><span lang=EN-US>
|
||
</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÊÇ<span lang=EN-US>4</span>¸öÏÔʾ¿¨µÄÌØÕ÷Êý¾Ý´®¡£</p>
|
||
|
||
<p class=a><a name=L595></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L595"><span
|
||
lang=EN-US>595</span></a><span lang=EN-US>
|
||
idati: .ascii
|
||
"761295520"</span></p>
|
||
|
||
<p class=a><a name=L596></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L596"><span
|
||
lang=EN-US>596</span></a><span lang=EN-US> idcandt: .byte
|
||
0xa5
|
||
! </span>±êºÅ<span lang=EN-US>idcandt</span>Òâ˼ÊÇ<span lang=EN-US>ID of Chip AND
|
||
Tech.</span></p>
|
||
|
||
<p class=a><a name=L597></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L597"><span
|
||
lang=EN-US>597</span></a><span lang=EN-US>
|
||
idgenoa: .byte 0x77,
|
||
0x00, 0x66, 0x99</span></p>
|
||
|
||
<p class=a><a name=L598></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L598"><span
|
||
lang=EN-US>598</span></a><span lang=EN-US> idparadise:
|
||
.ascii "VGA="</span></p>
|
||
|
||
<p class=a><a name=L599></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L599"><span
|
||
lang=EN-US>599</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÊǸ÷ÖÖÏÔʾ¿¨¿ÉʹÓõÄÀ©Õ¹Ä£Ê½¸öÊýºÍ¶ÔÓ¦µÄģʽºÅÁÐ±í¡£ÆäÖÐÿһÐеÚ<span
|
||
lang=EN-US>1</span>¸ö×Ö½ÚÊÇģʽ¸ö</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÊýÖµ£¬ËæºóµÄһЩֵÊÇÖжÏ<span
|
||
lang=EN-US>0x10</span>¹¦ÄÜ<span lang=EN-US>0</span>£¨<span lang=EN-US>AH=0</span>£©¿ÉʹÓõÄģʽºÅ¡£ÀýÈç´Ó<span
|
||
lang=EN-US>602</span>ÐпÉÖª£¬¶ÔÓÚ<span lang=EN-US>ATI</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÅÆ×ÓµÄÏÔʾ¿¨£¬³ýÁ˱ê׼ģʽÒÔÍ⻹¿ÉʹÓÃÁ½ÖÖÀ©Õ¹Ä£Ê½£º<span
|
||
lang=EN-US>0x23</span>ºÍ<span lang=EN-US>0x33</span>¡£</p>
|
||
|
||
<p class=a><a name=L600></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L600"><span
|
||
lang=EN-US>600</span></a><span lang=EN-US> ! Manufacturer:
|
||
Numofmodes: Mode:</span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>³§¼Ò£º<span lang=EN-US>
|
||
</span>ģʽÊýÁ¿£º<span lang=EN-US> </span>ģʽÁÐ±í£º</p>
|
||
|
||
<p class=a><a name=L601></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L601"><span
|
||
lang=EN-US>601</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L602></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L602"><span
|
||
lang=EN-US>602</span></a><span lang=EN-US>
|
||
moati: .byte
|
||
0x02, 0x23, 0x33 </span></p>
|
||
|
||
<p class=a><a name=L603></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L603"><span
|
||
lang=EN-US>603</span></a><span lang=EN-US>
|
||
moahead: .byte
|
||
0x05, 0x22, 0x23, 0x24, 0x2f, 0x34</span></p>
|
||
|
||
<p class=a><a name=L604></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L604"><span
|
||
lang=EN-US>604</span></a><span lang=EN-US>
|
||
mocandt: .byte
|
||
0x02, 0x60, 0x61</span></p>
|
||
|
||
<p class=a><a name=L605></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L605"><span
|
||
lang=EN-US>605</span></a><span lang=EN-US>
|
||
mocirrus: .byte
|
||
0x04, 0x1f, 0x20, 0x22, 0x31</span></p>
|
||
|
||
<p class=a><a name=L606></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L606"><span
|
||
lang=EN-US>606</span></a><span lang=EN-US>
|
||
moeverex: .byte 0x0a, 0x03, 0x04, 0x07, 0x08, 0x0a, 0x0b, 0x16, 0x18, 0x21, 0x40</span></p>
|
||
|
||
<p class=a><a name=L607></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L607"><span
|
||
lang=EN-US>607</span></a><span lang=EN-US>
|
||
mogenoa: .byte 0x0a, 0x58, 0x5a, 0x60, 0x61, 0x62, 0x63, 0x64, 0x72, 0x74, 0x78</span></p>
|
||
|
||
<p class=a><a name=L608></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L608"><span
|
||
lang=EN-US>608</span></a><span lang=EN-US> moparadise:
|
||
.byte 0x02, 0x55, 0x54</span></p>
|
||
|
||
<p class=a><a name=L609></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L609"><span
|
||
lang=EN-US>609</span></a><span lang=EN-US>
|
||
motrident: .byte 0x07,
|
||
0x50, 0x51, 0x52, 0x57, 0x58, 0x59, 0x5a</span></p>
|
||
|
||
<p class=a><a name=L610></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L610"><span
|
||
lang=EN-US>610</span></a><span lang=EN-US>
|
||
motseng: .byte
|
||
0x05, 0x26, 0x2a, 0x23, 0x24, 0x22</span></p>
|
||
|
||
<p class=a><a name=L611></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L611"><span
|
||
lang=EN-US>611</span></a><span lang=EN-US>
|
||
movideo7: .byte
|
||
0x06, 0x40, 0x43, 0x44, 0x41, 0x42, 0x45</span></p>
|
||
|
||
<p class=a><a name=L612></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L612"><span
|
||
lang=EN-US>612</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÏÂÃæÊǸ÷ÖÖÅÆ×Ó<span
|
||
lang=EN-US>VGA</span>ÏÔʾ¿¨¿ÉʹÓõÄģʽ¶ÔÓ¦µÄÁС¢ÐÐÖµÁÐ±í¡£ÀýÈçµÚ<span lang=EN-US>615</span>Ðбíʾ<span
|
||
lang=EN-US>ATI</span>ÏÔʾ¿¨Á½</p>
|
||
|
||
<p class=a><span lang=EN-US> ! </span>ÖÖÀ©Õ¹Ä£Ê½µÄÁС¢ÐÐÖµ·Ö±ðÊÇ <span
|
||
lang=EN-US>132 x 25</span>¡¢ <span lang=EN-US>132 x 44</span>¡£</p>
|
||
|
||
<p class=a><a name=L613></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L613"><span
|
||
lang=EN-US>613</span></a><span lang=EN-US>
|
||
!
|
||
msb = Cols lsb = Rows:</span></p>
|
||
|
||
<p class=a><span lang=EN-US>
|
||
!
|
||
</span>¸ß×Ö½Ú<span lang=EN-US>=</span>ÁÐÊý<span lang=EN-US> </span>µÍ×Ö½Ú<span
|
||
lang=EN-US>=</span>ÐÐÊý£º</p>
|
||
|
||
<p class=a><a name=L614></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L614"><span
|
||
lang=EN-US>614</span></a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><a name=L615></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L615"><span
|
||
lang=EN-US>615</span></a><span lang=EN-US>
|
||
dscati: .word
|
||
0x8419, 0x842c !
|
||
ATI</span>¿¨¿ÉÉèÖÃÁС¢ÐÐÖµ¡£</p>
|
||
|
||
<p class=a><a name=L616></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L616"><span
|
||
lang=EN-US>616</span></a><span lang=EN-US> dscahead:
|
||
.word 0x842c, 0x8419, 0x841c, 0xa032, 0x5042 ! Ahead</span>¿¨¿ÉÉèÖÃÖµ¡£</p>
|
||
|
||
<p class=a><a name=L617></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L617"><span
|
||
lang=EN-US>617</span></a><span lang=EN-US>
|
||
dsccandt: .word 0x8419, 0x8432</span></p>
|
||
|
||
<p class=a><a name=L618></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L618"><span
|
||
lang=EN-US>618</span></a><span lang=EN-US>
|
||
dsccirrus: .word 0x8419, 0x842c, 0x841e, 0x6425</span></p>
|
||
|
||
<p class=a><a name=L619></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L619"><span
|
||
lang=EN-US>619</span></a><span lang=EN-US> dsceverex: .word
|
||
0x5022, 0x503c, 0x642b, 0x644b, 0x8419, 0x842c, 0x501e, 0x641b, 0xa040, 0x841e</span></p>
|
||
|
||
<p class=a><a name=L620></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L620"><span
|
||
lang=EN-US>620</span></a><span lang=EN-US>
|
||
dscgenoa: .word 0x5020, 0x642a, 0x8419, 0x841d, 0x8420, 0x842c, 0x843c, 0x503c, 0x5042, 0x644b</span></p>
|
||
|
||
<p class=a><a name=L621></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L621"><span
|
||
lang=EN-US>621</span></a><span lang=EN-US> dscparadise:
|
||
.word 0x8419, 0x842b</span></p>
|
||
|
||
<p class=a><a name=L622></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L622"><span
|
||
lang=EN-US>622</span></a><span lang=EN-US> dsctrident:
|
||
.word 0x501e, 0x502b, 0x503c, 0x8419, 0x841e, 0x842b, 0x843c</span></p>
|
||
|
||
<p class=a><a name=L623></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L623"><span
|
||
lang=EN-US>623</span></a><span lang=EN-US>
|
||
dsctseng: .word 0x503c, 0x6428, 0x8419, 0x841c, 0x842c</span></p>
|
||
|
||
<p class=a><a name=L624></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L624"><span
|
||
lang=EN-US>624</span></a><span lang=EN-US>
|
||
dscvideo7: .word 0x502b, 0x503c, 0x643c, 0x8419, 0x842c, 0x841c</span></p>
|
||
|
||
<p class=a><a name=L625></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L625"><span
|
||
lang=EN-US>625</span></a><span lang=EN-US>
|
||
</span></p>
|
||
|
||
<p class=a><a name=L626></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L626"><span
|
||
lang=EN-US>626</span></a><span lang=EN-US> .text</span></p>
|
||
|
||
<p class=a><a name=L627></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L627"><span
|
||
lang=EN-US>627</span></a><span lang=EN-US> endtext:</span></p>
|
||
|
||
<p class=a><a name=L628></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L628"><span
|
||
lang=EN-US>628</span></a><span lang=EN-US> .data</span></p>
|
||
|
||
<p class=a><a name=L629></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L629"><span
|
||
lang=EN-US>629</span></a><span lang=EN-US> enddata:</span></p>
|
||
|
||
<p class=a><a name=L630></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L630"><span
|
||
lang=EN-US>630</span></a><span lang=EN-US> .bss</span></p>
|
||
|
||
<p class=a><a name=L631></a><a
|
||
href="http://plinux.org/lxr/http/source/boot/setup.S?v=0.12#L631"><span
|
||
lang=EN-US>631</span></a><span lang=EN-US> endbss:</span></p>
|
||
|
||
<div class=a align=center style='text-align:center'><span lang=EN-US>
|
||
|
||
<hr size=4 width="100%" align=center>
|
||
|
||
</span></div>
|
||
|
||
<p class=MsoNormal><span lang=EN-US> </span></p>
|
||
|
||
</div>
|
||
|
||
</body>
|
||
|
||
</html>
|