Merge pull request #592 from blackystardust/master
Improved GeOS version detection.
This commit is contained in:
commit
5d73f28a85
5 changed files with 88 additions and 3 deletions
|
@ -31,6 +31,8 @@ char get_ostype(void);
|
||||||
#define GEOS4 0x04 /* plus4 geos is not or'ed with version */
|
#define GEOS4 0x04 /* plus4 geos is not or'ed with version */
|
||||||
#define GEOS128 0x80
|
#define GEOS128 0x80
|
||||||
/* version flags */
|
/* version flags */
|
||||||
|
#define MEGAPATCH3 0x03
|
||||||
|
#define GATEWAY 0x08
|
||||||
#define GEOS_V10 0x10
|
#define GEOS_V10 0x10
|
||||||
#define GEOS_V11 0x11
|
#define GEOS_V11 0x11
|
||||||
#define GEOS_V12 0x12 /* ??? not sure */
|
#define GEOS_V12 0x12 /* ??? not sure */
|
||||||
|
|
|
@ -4,8 +4,11 @@
|
||||||
;4-2-99
|
;4-2-99
|
||||||
|
|
||||||
bootName = $c006
|
bootName = $c006
|
||||||
|
gatewayFlag = $c007
|
||||||
version = $c00f
|
version = $c00f
|
||||||
nationality = $c010
|
nationality = $c010
|
||||||
sysFlgCopy = $c012
|
sysFlgCopy = $c012
|
||||||
c128Flag = $c013
|
c128Flag = $c013
|
||||||
dateCopy = $c018
|
mp3Flag = $c014
|
||||||
|
dateCopy = $c018
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
;
|
;
|
||||||
; 10.09.2001
|
; 10.09.2001
|
||||||
;
|
;
|
||||||
; Plus4 and GEOS 1.1 detection by
|
; Plus4, Gateway, MP3 and GEOS 1.1 detection by
|
||||||
; Marco van den Heuvel, 2010-02-02
|
; Marco van den Heuvel, 2018-02-07
|
||||||
;
|
;
|
||||||
|
|
||||||
; unsigned char get_ostype (void);
|
; unsigned char get_ostype (void);
|
||||||
|
@ -26,6 +26,12 @@ _get_ostype:
|
||||||
and #%11110000
|
and #%11110000
|
||||||
cmp #$10
|
cmp #$10
|
||||||
beq geos10
|
beq geos10
|
||||||
|
lda gatewayFlag
|
||||||
|
cmp #$41
|
||||||
|
beq gateway
|
||||||
|
lda mp3Flag
|
||||||
|
cmp #$4d
|
||||||
|
beq megapatch3
|
||||||
lda c128Flag ; we're on at least 2.0
|
lda c128Flag ; we're on at least 2.0
|
||||||
cmp #$18
|
cmp #$18
|
||||||
beq geos_on_plus4
|
beq geos_on_plus4
|
||||||
|
@ -40,6 +46,14 @@ geos11:
|
||||||
geos_on_plus4:
|
geos_on_plus4:
|
||||||
lda #$04
|
lda #$04
|
||||||
rts
|
rts
|
||||||
|
gateway:
|
||||||
|
lda #$08
|
||||||
|
ora c128Flag
|
||||||
|
rts
|
||||||
|
megapatch3:
|
||||||
|
lda #$03
|
||||||
|
ora c128Flag
|
||||||
|
rts
|
||||||
|
|
||||||
_get_tv:
|
_get_tv:
|
||||||
jsr _get_ostype
|
jsr _get_ostype
|
||||||
|
|
58
samples/geos/geosver.c
Normal file
58
samples/geos/geosver.c
Normal file
|
@ -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;
|
||||||
|
}
|
8
samples/geos/geosverres.grc
Normal file
8
samples/geos/geosverres.grc
Normal file
|
@ -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."
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue