]> git.sur5r.net Git - cc65/blobdiff - samples/geos/geosver.c
Improved GeOS version detection.
[cc65] / samples / geos / geosver.c
diff --git a/samples/geos/geosver.c b/samples/geos/geosver.c
new file mode 100644 (file)
index 0000000..673b7e1
--- /dev/null
@@ -0,0 +1,58 @@
+#include <geos.h>
+#include <conio.h>
+
+// Let's define the window we're operating
+struct window wholeScreen = {0, SC_PIX_HEIGHT-1, 0, SC_PIX_WIDTH-1};
+
+
+void main (void)
+{
+    unsigned char os = get_ostype();
+    unsigned char *machine = NULL;
+    unsigned char *version = NULL;
+    unsigned char good = 1;
+
+    SetPattern(0);
+    InitDrawWindow(&wholeScreen);
+    Rectangle();
+    gotoxy(0, 4);
+    if (os == GEOS4) {
+        machine = "plus4";
+        version = "GeOS v3.5";
+    } else {
+        if ((os & GEOS128) == GEOS128) {
+            machine = "c128";
+        } else {
+            machine = "c64";
+        }
+        os &= 0x7f;
+        if (os == GEOS_V10) {
+            version = "GeOS v1.0";
+        } else if (os == GEOS_V11) {
+            version = "GeOS v1.1";
+        } else if (os == GEOS_V12) {
+            version = "GeOS v1.2";
+        } else if (os == GEOS_V20) {
+            version = "GeOS v2.0";
+        } else if (os == MEGAPATCH3) {
+            version = "MegaPatch 3";
+        } else if (os == GATEWAY) {
+            version = "GateWay";
+        } else if ((os & WHEELS) == WHEELS) {
+            version = "Wheels";
+        } else {
+            version = "Unknown GeOS version";
+            good = 0;
+        }
+    }
+
+    if (good) {
+        cprintf("%s (%s)", version, machine);
+    } else {
+        cprintf("%s (%s) (%d)", version, machine, os);
+    }
+
+    Sleep(10*50);
+             
+    return;
+}