]> git.sur5r.net Git - cc65/commitdiff
Improved GeOS version detection.
authorMarco van den Heuvel <blackystardust68@yahoo.com>
Wed, 14 Feb 2018 03:19:40 +0000 (19:19 -0800)
committerMarco van den Heuvel <blackystardust68@yahoo.com>
Wed, 14 Feb 2018 03:19:40 +0000 (19:19 -0800)
include/geos/gsys.h
libsrc/geos-cbm/geossym2.inc
libsrc/geos-cbm/system/get_ostype.s
samples/geos/geosver.c [new file with mode: 0644]
samples/geos/geosverres.grc [new file with mode: 0644]

index 284c38b633a056bef687486c2d053fb1e4c76880..b60c9884b1fc2c1a6510862525a58480aba9d843 100644 (file)
@@ -31,6 +31,8 @@ char get_ostype(void);
 #define GEOS4           0x04    /* plus4 geos is not or'ed with version */
 #define GEOS128         0x80
   /* version flags */
+#define MEGAPATCH3      0x03
+#define GATEWAY         0x08
 #define GEOS_V10        0x10
 #define GEOS_V11        0x11
 #define GEOS_V12        0x12    /* ??? not sure */
index cdcbc24dc6faef1db5a1bcc360ba6f2354d940f7..c756280a94f166dfa486f08543de826461d4389c 100644 (file)
@@ -4,8 +4,10 @@
 ;4-2-99
 
 bootName                =       $c006
+gatewayFlag             =       $c007
 version                 =       $c00f
 nationality             =       $c010
 sysFlgCopy              =       $c012
 c128Flag                =       $c013
+mp3Flag                 =       $c014
 dateCopy                =       $c018
\ No newline at end of file
index 492ce132d47623f74a8c192da5ec51e91925afed..827630f0b21907ad8175c6aead84e9d8d437932b 100644 (file)
@@ -3,8 +3,8 @@
 ;
 ; 10.09.2001
 ;
-; Plus4 and GEOS 1.1 detection by
-; Marco van den Heuvel, 2010-02-02
+; Plus4, Gateway, MP3 and GEOS 1.1 detection by
+; Marco van den Heuvel, 2018-02-07
 ;
 
 ; unsigned char get_ostype (void);
@@ -26,6 +26,12 @@ _get_ostype:
         and #%11110000
         cmp #$10
         beq geos10
+        lda gatewayFlag
+        cmp #$41
+        beq gateway
+        lda mp3Flag
+        cmp #$4d
+        beq megapatch3
         lda c128Flag            ; we're on at least 2.0
         cmp #$18
         beq geos_on_plus4
@@ -40,6 +46,14 @@ geos11:
 geos_on_plus4:
         lda #$04
         rts
+gateway:
+        lda #$08
+        ora c128Flag
+        rts
+megapatch3:
+        lda #$03
+        ora c128Flag
+        rts
 
 _get_tv:
         jsr _get_ostype
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;
+}
diff --git a/samples/geos/geosverres.grc b/samples/geos/geosverres.grc
new file mode 100644 (file)
index 0000000..cac9ed6
--- /dev/null
@@ -0,0 +1,8 @@
+
+; this is the resource file for geosver.c, a GEOS application example
+
+HEADER APPLICATION "geosver" "GeOSver" "V1.0" {
+dostype USR
+author "Marco van den Heuvel"
+info "This is a C prog compiled with cc65 and GEOSLib."
+}