Merge branch 'develop' of github.com:mentos-team/MentOS into develop
This commit is contained in:
+2
-1
@@ -825,7 +825,8 @@ INPUT = @CMAKE_SOURCE_DIR@/README.md \
|
||||
@CMAKE_SOURCE_DIR@/TODO.md \
|
||||
@CMAKE_SOURCE_DIR@/doc/signal.md \
|
||||
@CMAKE_SOURCE_DIR@/doc/syscall.md \
|
||||
@CMAKE_SOURCE_DIR@/mentos
|
||||
@CMAKE_SOURCE_DIR@/mentos \
|
||||
@CMAKE_SOURCE_DIR@/libc
|
||||
|
||||
# This tag can be used to specify the character encoding of the source files
|
||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
||||
|
||||
+202
-69
@@ -4,11 +4,18 @@
|
||||
.sm-dox {
|
||||
background: #4b5263; }
|
||||
|
||||
.sm-dox a, .sm-dox a:focus, .sm-dox a:active, .sm-dox a:hover, .sm-dox a.highlighted {
|
||||
.sm-dox a,
|
||||
.sm-dox a:focus,
|
||||
.sm-dox a:active,
|
||||
.sm-dox a:hover,
|
||||
.sm-dox a.highlighted {
|
||||
color: #A9B7C6;
|
||||
background: none; }
|
||||
|
||||
.sm-dox a, .sm-dox a:focus, .sm-dox a:hover, .sm-dox a:active {
|
||||
.sm-dox a,
|
||||
.sm-dox a:focus,
|
||||
.sm-dox a:hover,
|
||||
.sm-dox a:active {
|
||||
text-shadow: none;
|
||||
outline: none; }
|
||||
|
||||
@@ -16,7 +23,11 @@
|
||||
background-color: #333842; }
|
||||
|
||||
/* Stylesheet generated by Doxygen */
|
||||
body, table, div, p, dl {
|
||||
body,
|
||||
table,
|
||||
div,
|
||||
p,
|
||||
dl {
|
||||
font: 400 14px/22px Roboto, sans-serif;
|
||||
display: block;
|
||||
margin-block-start: 0em;
|
||||
@@ -33,7 +44,8 @@ ul {
|
||||
margin-inline-end: 0px;
|
||||
padding-inline-start: 30px; }
|
||||
|
||||
p.reference, p.definition {
|
||||
p.reference,
|
||||
p.definition {
|
||||
font: 400 14px/22px Roboto, sans-serif; }
|
||||
|
||||
/* @group Heading Levels */
|
||||
@@ -56,7 +68,12 @@ h2.groupheader {
|
||||
h3.groupheader {
|
||||
font-size: 100%; }
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin-right: 15px;
|
||||
display: block;
|
||||
margin-block-start: 0.25em;
|
||||
@@ -66,7 +83,12 @@ h1, h2, h3, h4, h5, h6 {
|
||||
font-weight: bold;
|
||||
color: #d7dee4; }
|
||||
|
||||
h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
|
||||
h1.glow,
|
||||
h2.glow,
|
||||
h3.glow,
|
||||
h4.glow,
|
||||
h5.glow,
|
||||
h6.glow {
|
||||
text-shadow: 0 0 15px cyan; }
|
||||
|
||||
dt {
|
||||
@@ -80,7 +102,8 @@ ul.multicol {
|
||||
-webkit-column-count: 3;
|
||||
column-count: 3; }
|
||||
|
||||
p.startli, p.startdd {
|
||||
p.startli,
|
||||
p.startdd {
|
||||
margin-top: 2px; }
|
||||
|
||||
p.starttd {
|
||||
@@ -103,15 +126,21 @@ span.legend {
|
||||
font-size: 70%;
|
||||
text-align: center; }
|
||||
|
||||
span.arrow {
|
||||
/* width: 32px; */
|
||||
padding-left: 0px; }
|
||||
|
||||
h3.version {
|
||||
font-size: 90%;
|
||||
text-align: center; }
|
||||
|
||||
div.qindex, div.navtab {
|
||||
div.qindex,
|
||||
div.navtab {
|
||||
background-color: #333842;
|
||||
text-align: center; }
|
||||
|
||||
div.qindex, div.navpath {
|
||||
div.qindex,
|
||||
div.navpath {
|
||||
width: 100%;
|
||||
line-height: 140%; }
|
||||
|
||||
@@ -146,10 +175,14 @@ a.qindexHL {
|
||||
a.el {
|
||||
font-weight: bold; }
|
||||
|
||||
a.line, a.line:visited {
|
||||
a.line,
|
||||
a.line:visited {
|
||||
color: #A9B7C6; }
|
||||
|
||||
a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
|
||||
a.codeRef,
|
||||
a.codeRef:visited,
|
||||
a.lineRef,
|
||||
a.lineRef:visited {
|
||||
color: #4665A2; }
|
||||
|
||||
/* @end */
|
||||
@@ -236,7 +269,8 @@ span.lineno a:hover {
|
||||
-ms-user-select: none;
|
||||
user-select: none; }
|
||||
|
||||
div.ah, span.ah {
|
||||
div.ah,
|
||||
span.ah {
|
||||
background-color: #16181d;
|
||||
font-weight: bold;
|
||||
color: #FFFFFF;
|
||||
@@ -287,7 +321,8 @@ tr.memlist {
|
||||
p.formulaDsp {
|
||||
text-align: center; }
|
||||
|
||||
img.formulaInl, img.inline {
|
||||
img.formulaInl,
|
||||
img.inline {
|
||||
vertical-align: middle; }
|
||||
|
||||
div.center {
|
||||
@@ -430,28 +465,36 @@ table.memberdecls {
|
||||
border-spacing: 0px;
|
||||
padding: 0px; }
|
||||
|
||||
.memberdecls td.glow, .fieldtable tr.glow {
|
||||
.memberdecls td.glow,
|
||||
.fieldtable tr.glow {
|
||||
background-color: cyan;
|
||||
box-shadow: 0 0 15px cyan; }
|
||||
|
||||
.memItemLeft, .memItemRight {
|
||||
.memItemLeft,
|
||||
.memItemRight {
|
||||
font-family: monaco, Consolas, "Lucida Console", monospace; }
|
||||
|
||||
.mdescLeft, .mdescRight,
|
||||
.memItemLeft, .memItemRight,
|
||||
.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
|
||||
.mdescLeft,
|
||||
.mdescRight,
|
||||
.memItemLeft,
|
||||
.memItemRight,
|
||||
.memTemplItemLeft,
|
||||
.memTemplItemRight,
|
||||
.memTemplParams {
|
||||
border: none;
|
||||
margin: 4px;
|
||||
padding: 1px 0 0 8px; }
|
||||
|
||||
.mdescLeft, .mdescRight {
|
||||
.mdescLeft,
|
||||
.mdescRight {
|
||||
padding: 0px 8px 4px 8px; }
|
||||
|
||||
.memSeparator {
|
||||
background-color: #282c34;
|
||||
line-height: 1px; }
|
||||
|
||||
.memItemLeft, .memTemplItemLeft {
|
||||
.memItemLeft,
|
||||
.memTemplItemLeft {
|
||||
white-space: nowrap; }
|
||||
|
||||
.memItemRight {
|
||||
@@ -519,14 +562,16 @@ table.memberdecls {
|
||||
.memname td {
|
||||
vertical-align: bottom; }
|
||||
|
||||
.memproto, dl.reflist dt {
|
||||
.memproto,
|
||||
dl.reflist dt {
|
||||
padding: 0.5em 0; }
|
||||
|
||||
.overload {
|
||||
font-family: "courier new", courier, monospace;
|
||||
font-size: 65%; }
|
||||
|
||||
.memdoc, dl.reflist dd {
|
||||
.memdoc,
|
||||
dl.reflist dd {
|
||||
padding: 1em; }
|
||||
|
||||
dl.reflist dt {
|
||||
@@ -553,19 +598,27 @@ dl.reflist dd {
|
||||
.paramname code {
|
||||
line-height: 14px; }
|
||||
|
||||
.params, .retval, .exception, .tparams {
|
||||
.params,
|
||||
.retval,
|
||||
.exception,
|
||||
.tparams {
|
||||
margin-left: 0px;
|
||||
padding-left: 0px; }
|
||||
|
||||
.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
|
||||
.params .paramname,
|
||||
.retval .paramname,
|
||||
.tparams .paramname,
|
||||
.exception .paramname {
|
||||
font-weight: bold;
|
||||
vertical-align: top; }
|
||||
|
||||
.params .paramtype, .tparams .paramtype {
|
||||
.params .paramtype,
|
||||
.tparams .paramtype {
|
||||
font-style: italic;
|
||||
vertical-align: top; }
|
||||
|
||||
.params .paramdir, .tparams .paramdir {
|
||||
.params .paramdir,
|
||||
.tparams .paramdir {
|
||||
font-family: "courier new", courier, monospace;
|
||||
vertical-align: top; }
|
||||
|
||||
@@ -730,7 +783,8 @@ table.doxtable {
|
||||
margin-top: 4px;
|
||||
margin-bottom: 4px; }
|
||||
|
||||
table.doxtable td, table.doxtable th {
|
||||
table.doxtable td,
|
||||
table.doxtable th {
|
||||
border: 1px solid #2D4068;
|
||||
padding: 3px 7px 2px; }
|
||||
|
||||
@@ -753,10 +807,12 @@ table.fieldtable {
|
||||
-webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
|
||||
box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); }
|
||||
|
||||
.fieldtable td, .fieldtable th {
|
||||
.fieldtable td,
|
||||
.fieldtable th {
|
||||
padding: 3px 7px 2px; }
|
||||
|
||||
.fieldtable td.fieldtype, .fieldtable td.fieldname {
|
||||
.fieldtable td.fieldtype,
|
||||
.fieldtable td.fieldname {
|
||||
white-space: nowrap;
|
||||
border-right: 1px solid #A8B8D9;
|
||||
border-bottom: 1px solid #A8B8D9;
|
||||
@@ -921,13 +977,15 @@ dl.note.DocNodeRTL {
|
||||
border-right: 4px solid;
|
||||
border-color: #D0C000; }
|
||||
|
||||
dl.warning, dl.attention {
|
||||
dl.warning,
|
||||
dl.attention {
|
||||
margin-left: -7px;
|
||||
padding-left: 3px;
|
||||
border-left: 4px solid;
|
||||
border-color: #FF0000; }
|
||||
|
||||
dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
|
||||
dl.warning.DocNodeRTL,
|
||||
dl.attention.DocNodeRTL {
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
border-left: 0;
|
||||
@@ -936,13 +994,17 @@ dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
|
||||
border-right: 4px solid;
|
||||
border-color: #FF0000; }
|
||||
|
||||
dl.pre, dl.post, dl.invariant {
|
||||
dl.pre,
|
||||
dl.post,
|
||||
dl.invariant {
|
||||
margin-left: -7px;
|
||||
padding-left: 3px;
|
||||
border-left: 4px solid;
|
||||
border-color: #00D000; }
|
||||
|
||||
dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
|
||||
dl.pre.DocNodeRTL,
|
||||
dl.post.DocNodeRTL,
|
||||
dl.invariant.DocNodeRTL {
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
border-left: 0;
|
||||
@@ -1047,7 +1109,8 @@ dl.section dd {
|
||||
margin: 0px;
|
||||
width: 100%;
|
||||
color: #A9B7C6;
|
||||
background-color: #282c34; }
|
||||
background-color: #282c34;
|
||||
border-bottom: 3px solid #A9B7C6; }
|
||||
|
||||
.image {
|
||||
text-align: center;
|
||||
@@ -1209,43 +1272,65 @@ div.toc li.level4 {
|
||||
padding: 0px;
|
||||
font: 12px/16px Roboto, sans-serif; }
|
||||
|
||||
#powerTip:before, #powerTip:after {
|
||||
#powerTip:before,
|
||||
#powerTip:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
margin: 0px; }
|
||||
|
||||
#powerTip.n:after, #powerTip.n:before,
|
||||
#powerTip.s:after, #powerTip.s:before,
|
||||
#powerTip.w:after, #powerTip.w:before,
|
||||
#powerTip.e:after, #powerTip.e:before,
|
||||
#powerTip.ne:after, #powerTip.ne:before,
|
||||
#powerTip.se:after, #powerTip.se:before,
|
||||
#powerTip.nw:after, #powerTip.nw:before,
|
||||
#powerTip.sw:after, #powerTip.sw:before {
|
||||
#powerTip.n:after,
|
||||
#powerTip.n:before,
|
||||
#powerTip.s:after,
|
||||
#powerTip.s:before,
|
||||
#powerTip.w:after,
|
||||
#powerTip.w:before,
|
||||
#powerTip.e:after,
|
||||
#powerTip.e:before,
|
||||
#powerTip.ne:after,
|
||||
#powerTip.ne:before,
|
||||
#powerTip.se:after,
|
||||
#powerTip.se:before,
|
||||
#powerTip.nw:after,
|
||||
#powerTip.nw:before,
|
||||
#powerTip.sw:after,
|
||||
#powerTip.sw:before {
|
||||
border: solid transparent;
|
||||
content: " ";
|
||||
height: 0;
|
||||
width: 0;
|
||||
position: absolute; }
|
||||
|
||||
#powerTip.n:after, #powerTip.s:after,
|
||||
#powerTip.w:after, #powerTip.e:after,
|
||||
#powerTip.nw:after, #powerTip.ne:after,
|
||||
#powerTip.sw:after, #powerTip.se:after {
|
||||
#powerTip.n:after,
|
||||
#powerTip.s:after,
|
||||
#powerTip.w:after,
|
||||
#powerTip.e:after,
|
||||
#powerTip.nw:after,
|
||||
#powerTip.ne:after,
|
||||
#powerTip.sw:after,
|
||||
#powerTip.se:after {
|
||||
border-color: rgba(255, 255, 255, 0); }
|
||||
|
||||
#powerTip.n:before, #powerTip.s:before,
|
||||
#powerTip.w:before, #powerTip.e:before,
|
||||
#powerTip.nw:before, #powerTip.ne:before,
|
||||
#powerTip.sw:before, #powerTip.se:before {
|
||||
#powerTip.n:before,
|
||||
#powerTip.s:before,
|
||||
#powerTip.w:before,
|
||||
#powerTip.e:before,
|
||||
#powerTip.nw:before,
|
||||
#powerTip.ne:before,
|
||||
#powerTip.sw:before,
|
||||
#powerTip.se:before {
|
||||
border-color: rgba(128, 128, 128, 0); }
|
||||
|
||||
#powerTip.n:after, #powerTip.n:before,
|
||||
#powerTip.ne:after, #powerTip.ne:before,
|
||||
#powerTip.nw:after, #powerTip.nw:before {
|
||||
#powerTip.n:after,
|
||||
#powerTip.n:before,
|
||||
#powerTip.ne:after,
|
||||
#powerTip.ne:before,
|
||||
#powerTip.nw:after,
|
||||
#powerTip.nw:before {
|
||||
top: 100%; }
|
||||
|
||||
#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
|
||||
#powerTip.n:after,
|
||||
#powerTip.ne:after,
|
||||
#powerTip.nw:after {
|
||||
border-top-color: #FFFFFF;
|
||||
border-width: 10px;
|
||||
margin: 0px -10px; }
|
||||
@@ -1255,40 +1340,54 @@ div.toc li.level4 {
|
||||
border-width: 11px;
|
||||
margin: 0px -11px; }
|
||||
|
||||
#powerTip.n:after, #powerTip.n:before {
|
||||
#powerTip.n:after,
|
||||
#powerTip.n:before {
|
||||
left: 50%; }
|
||||
|
||||
#powerTip.nw:after, #powerTip.nw:before {
|
||||
#powerTip.nw:after,
|
||||
#powerTip.nw:before {
|
||||
right: 14px; }
|
||||
|
||||
#powerTip.ne:after, #powerTip.ne:before {
|
||||
#powerTip.ne:after,
|
||||
#powerTip.ne:before {
|
||||
left: 14px; }
|
||||
|
||||
#powerTip.s:after, #powerTip.s:before,
|
||||
#powerTip.se:after, #powerTip.se:before,
|
||||
#powerTip.sw:after, #powerTip.sw:before {
|
||||
#powerTip.s:after,
|
||||
#powerTip.s:before,
|
||||
#powerTip.se:after,
|
||||
#powerTip.se:before,
|
||||
#powerTip.sw:after,
|
||||
#powerTip.sw:before {
|
||||
bottom: 100%; }
|
||||
|
||||
#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
|
||||
#powerTip.s:after,
|
||||
#powerTip.se:after,
|
||||
#powerTip.sw:after {
|
||||
border-bottom-color: #FFFFFF;
|
||||
border-width: 10px;
|
||||
margin: 0px -10px; }
|
||||
|
||||
#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
|
||||
#powerTip.s:before,
|
||||
#powerTip.se:before,
|
||||
#powerTip.sw:before {
|
||||
border-bottom-color: #808080;
|
||||
border-width: 11px;
|
||||
margin: 0px -11px; }
|
||||
|
||||
#powerTip.s:after, #powerTip.s:before {
|
||||
#powerTip.s:after,
|
||||
#powerTip.s:before {
|
||||
left: 50%; }
|
||||
|
||||
#powerTip.sw:after, #powerTip.sw:before {
|
||||
#powerTip.sw:after,
|
||||
#powerTip.sw:before {
|
||||
right: 14px; }
|
||||
|
||||
#powerTip.se:after, #powerTip.se:before {
|
||||
#powerTip.se:after,
|
||||
#powerTip.se:before {
|
||||
left: 14px; }
|
||||
|
||||
#powerTip.e:after, #powerTip.e:before {
|
||||
#powerTip.e:after,
|
||||
#powerTip.e:before {
|
||||
left: 100%; }
|
||||
|
||||
#powerTip.e:after {
|
||||
@@ -1303,7 +1402,8 @@ div.toc li.level4 {
|
||||
top: 50%;
|
||||
margin-top: -11px; }
|
||||
|
||||
#powerTip.w:after, #powerTip.w:before {
|
||||
#powerTip.w:after,
|
||||
#powerTip.w:before {
|
||||
right: 100%; }
|
||||
|
||||
#powerTip.w:after {
|
||||
@@ -1327,7 +1427,12 @@ div.toc li.level4 {
|
||||
display: none; }
|
||||
body {
|
||||
overflow: visible; }
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
page-break-after: avoid; }
|
||||
.summary {
|
||||
display: none; }
|
||||
@@ -1469,3 +1574,31 @@ direction:ltr;
|
||||
/* @end */
|
||||
u {
|
||||
text-decoration: underline; }
|
||||
|
||||
/*
|
||||
#nav-tree {
|
||||
padding: 0px 0px;
|
||||
font-size: 14px;
|
||||
overflow: auto;
|
||||
}
|
||||
*/
|
||||
/*
|
||||
.ui-resizable-e {
|
||||
background: $white-color;
|
||||
width: 3px;
|
||||
}
|
||||
|
||||
#nav-tree {
|
||||
padding: 0px 0px;
|
||||
background-color: $black-color;
|
||||
background-image: none;
|
||||
font-size: 14px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#nav-tree .selected {
|
||||
background-color: $code-bg-color;
|
||||
background-image: none;
|
||||
color: $white-color;
|
||||
}
|
||||
*/
|
||||
|
||||
+1095
-1203
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
/// Font 8x16.
|
||||
unsigned char arr_8x16_font[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x7E, 0x81, 0xA5, 0x81, 0x81, 0xBD, 0x99, 0x81, 0x81, 0x7E, 0x00, 0x00, 0x00, 0x00,
|
||||
@@ -265,6 +266,7 @@ unsigned char arr_8x16_font[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
/// Font 8x8.
|
||||
unsigned char arr_8x8_font[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E,
|
||||
@@ -524,8 +526,7 @@ unsigned char arr_8x8_font[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
// Constant: font8x8_basic
|
||||
// Contains an 8x8 font map for unicode points U+0000 - U+007F (basic latin)
|
||||
/// Contains an 8x8 font map for unicode points U+0000 - U+007F (basic latin)
|
||||
unsigned char arr_8x8_basic_font[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // U+0000 (nul)
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // U+0001
|
||||
@@ -657,7 +658,8 @@ unsigned char arr_8x8_basic_font[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // U+007F
|
||||
};
|
||||
|
||||
unsigned char vga_font[256 * 16] = {
|
||||
/// Font 16x16.
|
||||
unsigned char vga_font[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd, 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/// @brief
|
||||
/// Structure that holds the information about a VGA mode.
|
||||
typedef struct {
|
||||
unsigned char misc; ///< 00h --
|
||||
/// @brief The Sequencer Registers.
|
||||
@@ -9,6 +9,7 @@ typedef struct {
|
||||
unsigned char character_map_select; ///< 03h --
|
||||
unsigned char sequencer_memory_mode; ///< 04h --
|
||||
} sc;
|
||||
/// @brief CRT Controller (CRTC) Registers
|
||||
struct {
|
||||
unsigned char horizontal_total; ///< 00h --
|
||||
unsigned char end_horizontal_display; ///< 01h --
|
||||
|
||||
@@ -6,12 +6,14 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
/// Structure that simplifies defining a palette.
|
||||
typedef struct {
|
||||
unsigned char red;
|
||||
unsigned char green;
|
||||
unsigned char blue;
|
||||
unsigned char red; ///< Red value.
|
||||
unsigned char green; ///< Green value.
|
||||
unsigned char blue; ///< Blue value.
|
||||
} palette_entry_t;
|
||||
|
||||
/// 16 color palette.
|
||||
palette_entry_t ansi_16_palette[17] = {
|
||||
{ 0x00, 0x00, 0x00 }, // Black
|
||||
{ 0xAA, 0x00, 0x00 }, // Red
|
||||
@@ -31,6 +33,7 @@ palette_entry_t ansi_16_palette[17] = {
|
||||
{ 0xFF, 0xFF, 0xFF }, // White
|
||||
};
|
||||
|
||||
/// 256 color palette.
|
||||
palette_entry_t ansi_256_palette[256] = {
|
||||
{ 0, 0, 0 }, // Black
|
||||
{ 128, 0, 0 }, // Maroon
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
struct pt_regs;
|
||||
|
||||
#ifndef __DEBUG_LEVEL__
|
||||
/// Defines the debug level.
|
||||
#define __DEBUG_LEVEL__ LOGLEVEL_NOTICE
|
||||
#endif
|
||||
|
||||
|
||||
+12
-9
@@ -29,6 +29,7 @@
|
||||
#define CRTC_DATA 0x03D5
|
||||
#define INPUT_STATUS_READ 0x03DA
|
||||
|
||||
/// VGA pointers for drawing operations.
|
||||
typedef struct {
|
||||
/// Writes a pixel.
|
||||
void (*write_pixel)(unsigned int x, unsigned int y, unsigned char c);
|
||||
@@ -40,18 +41,20 @@ typedef struct {
|
||||
void (*fill_rect)(unsigned int x, unsigned int y, unsigned int wd, unsigned int ht, unsigned char c);
|
||||
} vga_ops_t;
|
||||
|
||||
/// VGA font details.
|
||||
typedef struct {
|
||||
unsigned char *font;
|
||||
unsigned width;
|
||||
unsigned height;
|
||||
unsigned char *font; ///< Pointer to the array holding the shape of each character.
|
||||
unsigned width; ///< Width of the font.
|
||||
unsigned height; ///< Height of the font.
|
||||
} vga_font_t;
|
||||
|
||||
/// VGA driver details.
|
||||
typedef struct {
|
||||
int width;
|
||||
int height;
|
||||
int bpp;
|
||||
char *address;
|
||||
vga_ops_t *ops;
|
||||
int width; ///< Screen's width.
|
||||
int height; ///< Screen's height.
|
||||
int bpp; ///< Bits per pixel (bpp).
|
||||
char *address; ///< Starting address of the screen.
|
||||
vga_ops_t *ops; ///< Writing operations.
|
||||
} vga_driver_t;
|
||||
|
||||
static bool_t vga_enable = false;
|
||||
@@ -177,7 +180,7 @@ static void __set_mode(vga_mode_t *vga_mode)
|
||||
outportb(CRTC_DATA, *ptr);
|
||||
++ptr;
|
||||
}
|
||||
|
||||
|
||||
// write GRAPHICS CONTROLLER regs.
|
||||
for (unsigned i = 0; i < MODE_NUM_GC_REGS; i++) {
|
||||
outportb(GC_INDEX, i);
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
/// @copyright (c) 2014-2021 This file is distributed under the MIT License.
|
||||
/// See LICENSE.md for details.
|
||||
|
||||
/// Set the debug level to 0.
|
||||
#define __DEBUG_LEVEL__ 0
|
||||
|
||||
#include "multiboot.h"
|
||||
|
||||
Reference in New Issue
Block a user