1 /* Project 16 Source Code~
\r
2 * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123
\r
4 * This file is part of Project 16.
\r
6 * Project 16 is free software; you can redistribute it and/or modify
\r
7 * it under the terms of the GNU General Public License as published by
\r
8 * the Free Software Foundation; either version 3 of the License, or
\r
9 * (at your option) any later version.
\r
11 * Project 16 is distributed in the hope that it will be useful,
\r
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
14 * GNU General Public License for more details.
\r
16 * You should have received a copy of the GNU General Public License
\r
17 * along with this program. If not, see <http://www.gnu.org/licenses/>, or
\r
18 * write to the Free Software Foundation, Inc., 51 Franklin Street,
\r
19 * Fifth Floor, Boston, MA 02110-1301 USA.
\r
26 #include "src/lib/types.h"
\r
28 /*static const word ModeX_256x224regs[75] =
\r
57 static const word ModeX_256x192regs[] = {
\r
58 0x3200, /* Horizontal total */
\r
59 0x2701, /* horizontal display enable end */
\r
60 0x2802, /* Start horizontal blanking */
\r
61 0x2003, /* End horizontal blanking */
\r
62 0x2b04, /* Start horizontal retrace */
\r
63 0x7005, /* End horizontal retrace */
\r
64 0x0d06, /* vertical total */
\r
65 0x3e07, /* overflow (bit 8 of vertical counts) */
\r
66 0x4309, /* cell height (2 to double-scan */
\r
67 0xea10, /* v sync start */
\r
68 0xac11, /* v sync end and protect cr0-cr7 */
\r
69 0xdf12, /* vertical displayed */
\r
70 0x1413, /* offset/logical width */
\r
71 0x0014, /* turn off dword mode */
\r
72 0xe715, /* v blank start */
\r
73 0x0616, /* v blank end */
\r
74 0xe317 /* turn on byte mode */
\r
79 voidtg::mode160x120(){
\r
80 int crtc11; outp(CRTC_INDEX, 0x11); // unlock crtc
\r
81 crtc11 = inp(CRTC_DATA) & 0x7f;
\r
82 outp(CRTC_INDEX, 0x11);
\r
83 outp(CRTC_DATA, crtc11);
\r
91 modeName = "160x120";
\r
92 outp(MISC_OUTPUT, 0xe3); // mor
\r
94 outp(CRTC_INDEX, 0x00); outp(CRTC_DATA, 0x32);
\r
95 outp(CRTC_INDEX, 0x01); outp(CRTC_DATA, 0x27);
\r
96 outp(CRTC_INDEX, 0x02); outp(CRTC_DATA, 0x28);
\r
97 outp(CRTC_INDEX, 0x03); outp(CRTC_DATA, 0x20);
\r
98 outp(CRTC_INDEX, 0x04); outp(CRTC_DATA, 0x2b);
\r
99 outp(CRTC_INDEX, 0x05); outp(CRTC_DATA, 0x70);
\r
100 outp(CRTC_INDEX, 0x06); outp(CRTC_DATA, 0x0d);
\r
101 outp(CRTC_INDEX, 0x07); outp(CRTC_DATA, 0x3e);
\r
102 outp(CRTC_INDEX, 0x08); outp(CRTC_DATA, 0x00);
\r
103 outp(CRTC_INDEX, 0x09); outp(CRTC_DATA, 0x43);
\r
104 outp(CRTC_INDEX, 0x10); outp(CRTC_DATA, 0xea);
\r
105 outp(CRTC_INDEX, 0x11); outp(CRTC_DATA, 0xac);
\r
106 outp(CRTC_INDEX, 0x12); outp(CRTC_DATA, 0xdf);
\r
107 outp(CRTC_INDEX, 0x13); outp(CRTC_DATA, 0x14);
\r
108 outp(CRTC_INDEX, 0x14); outp(CRTC_DATA, 0x00);
\r
109 outp(CRTC_INDEX, 0x15); outp(CRTC_DATA, 0xe7);
\r
110 outp(CRTC_INDEX, 0x16); outp(CRTC_DATA, 0x06);
\r
111 outp(CRTC_INDEX, 0x17); outp(CRTC_DATA, 0xe3);
\r
113 outp(0xSC_INDEX, 0x01); // seq
\r
114 outp(0xSC_DATA, 0x01);
\r
115 outp(0xSC_INDEX, 0x03); // seq
\r
116 outp(0xSC_DATA, 0x00);
\r
117 outp(0xSC_INDEX, 0x04); // seq
\r
118 outp(0xSC_DATA, 0x06);
\r
120 outp(GC_INDEX, 0x05); // gcr
\r
122 outp(GC_INDEX, 0x06); // gcr
\r
126 outp(0x3c0, 0x10 | 0x20);
\r
129 outp(0x3c0, 0x11 | 0x20);
\r
132 outp(0x3c0, 0x12 | 0x20);
\r
135 outp(0x3c0, 0x13 | 0x20);
\r
138 outp(0x3c0, 0x14 | 0x20);
\r
141 outp(CRTC_INDEX, 0x11); // lock crtc
\r
142 crtc11 = inp(CRTC_DATA) | 0x80;
\r
143 outp(CRTC_INDEX, 0x11);
\r
144 outp(CRTC_DATA, crtc11);
\r