Merge branch 'master' of git://git.ucc.asn.au/tpg/acess2
[tpg/acess2.git] / KernelLand / Modules / Display / VGA / vgaregs.c
diff --git a/KernelLand/Modules/Display/VGA/vgaregs.c b/KernelLand/Modules/Display/VGA/vgaregs.c
new file mode 100644 (file)
index 0000000..fa1bc84
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Acess2 VGA Driver
+ * - By John Hodge (thePowersGang)
+ */
+
+#define VGA_CRTC_IDX   0x3B4
+#define VGA_CRTC_DATA  0x3B5
+#define VGA_FEAT_IS1   0x3BA   // Features / Input Status 1 (B/W Chips)
+#define VGA_ATTR_WRITE 0x3C0
+#define VGA_ATTR_READ  0x3C1
+#define VGA_MISC_IS0   0x3C2   // Misc Output / Input Status 0
+#define VGA_MBSLEEP    0x3C3   // "Motherboard Sleep"
+#define VGA_SEQ_IDX    0x3C4
+#define VGA_SEQ_DATA   0x3C5
+#define VGA_DACMASK    0x3C6
+#define VGA_PADR_DACST 0x3C7
+#define VGA_PIXWRMODE  0x3C8
+#define VGA_PIXDATA    0x3C9
+#define VGA_FEATRD     0x3CA
+//                     0x3CB
+#define VGA_MISCOUT    0x3CC
+//                     0x3CD
+#define VGA_GRAPH_IDX  0x3CE
+#define VGA_GRAPH_DATA 0x3CF
+//                     0x3D0 -- 0x3D3
+#define VGA_CRTC_IDX   0x3D4
+#define VGA_CRTC_DATA  0x3D5
+//                     0x3D6 -- 0x3D9
+#define VGA_FEAT_IS1_C 0x3DA   // Features / Input Status 1 (Colour Chips)
+
+// === CODE ===
+void VGA_WriteAttr(Uint8 Index, Uint8 Data)
+{
+       Index &= 0x1F;
+       SHORTLOCK(&glVGA_Attr);
+       inb(0x3DA);
+       outb(VGA_ATTR_WRITE, Index);
+       outb(VGA_ATTR_WRITE, Data);
+       SHORTREL(&glVGA_Attr);
+}
+
+Uint8 VGA_ReadAttr(Uint8 Index)
+{
+       Uint8   ret;
+       SHORTLOCK(&glVGA_Attr);
+       inb(0x3DA);
+       outb(VGA_ATTR_WRITE, Index);
+       ret = inb(VGA_ATTR_READ);
+       SHORTREL(&glVGA_Attr);
+       return ret;
+}
+
+void VGA_WriteSeq(Uint8 Index, Uint8 Data)
+{
+       outb(VGA_SEQ_IDX, Index);
+       outb(VGA_SEQ_DATA, Data);
+}
+Uint8 VGA_ReadSeq(Uint8 Index)
+{
+       outb(VGA_SEQ_IDX, Index);
+       return inb(VGA_SEQ_DATA);
+}
+void VGA_WriteGraph(Uint8 Index, Uint8 Data)
+{
+       outb(VGA_GRAPH_IDX, Index);
+       outb(VGA_GRAPH_DATA, Data);
+}
+Uint8 VGA_ReadGraph(Uint8 Index)
+{
+       outb(VGA_GRAPH_IDX, Index);
+       return inb(VGA_GRAPH_DATA);
+}
+
+void VGA_WriteMiscOut(Uint8 Data)
+{
+       outb(VGA_MISC_IS0, Data);
+}
+Uint8 VGA_ReadMiscOut(void)
+{
+       return inb(VGA_MISCOUT);
+}

UCC git Repository :: git.ucc.asn.au