mirror of
https://github.com/cc65/cc65.git
synced 2025-01-25 11:30:06 +00:00
Patch by Marco van den Heuvel that adds detection of GEOS 1.1 and the plus4
GEOS to the get_ostype function. git-svn-id: svn://svn.cc65.org/cc65/trunk@4600 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
5e065391fd
commit
8b6a40c04e
@ -28,10 +28,12 @@ char get_ostype(void);
|
|||||||
be combined with OR */
|
be combined with OR */
|
||||||
/* machine flags */
|
/* machine flags */
|
||||||
#define GEOS64 0x00
|
#define GEOS64 0x00
|
||||||
|
#define GEOS4 0x04 /* plus4 geos is not or'ed with version */
|
||||||
#define GEOS128 0x80
|
#define GEOS128 0x80
|
||||||
/* version flags */
|
/* version flags */
|
||||||
#define GEOS_V10 0x10
|
#define GEOS_V10 0x10
|
||||||
#define GEOS_V12 0x12 /* ??? not sure */
|
#define GEOS_V11 0x11
|
||||||
|
#define GEOS_V12 0x12 /* ??? not sure */
|
||||||
#define GEOS_V20 0x20
|
#define GEOS_V20 0x20
|
||||||
#define WHEELS 0x40 /* only Wheels? */
|
#define WHEELS 0x40 /* only Wheels? */
|
||||||
|
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
|
|
||||||
;
|
;
|
||||||
; Maciej 'YTM/Elysium' Witkowiak
|
; Maciej 'YTM/Elysium' Witkowiak
|
||||||
;
|
;
|
||||||
; 10.09.2001
|
; 10.09.2001
|
||||||
|
;
|
||||||
|
; Plus4 and GEOS 1.1 detection by
|
||||||
|
; Marco van den Heuvel, 2010-02-02
|
||||||
|
;
|
||||||
|
|
||||||
; unsigned char get_ostype (void);
|
; unsigned char get_ostype (void);
|
||||||
; unsigned char get_tv (void);
|
; unsigned char get_tv (void);
|
||||||
@ -18,18 +22,30 @@
|
|||||||
_get_ostype:
|
_get_ostype:
|
||||||
ldx #0
|
ldx #0
|
||||||
lda version
|
lda version
|
||||||
|
cmp #$a9
|
||||||
|
beq geos11
|
||||||
and #%11110000
|
and #%11110000
|
||||||
cmp #$10
|
cmp #$10
|
||||||
beq geos10
|
beq geos10
|
||||||
lda c128Flag ; we're on at least 2.0
|
lda c128Flag ; we're on at least 2.0
|
||||||
|
cmp #$18
|
||||||
|
beq geos_on_plus4
|
||||||
ora version
|
ora version
|
||||||
rts
|
rts
|
||||||
geos10:
|
geos10:
|
||||||
lda version
|
lda version
|
||||||
rts
|
rts
|
||||||
|
geos11:
|
||||||
|
lda #$11
|
||||||
|
rts
|
||||||
|
geos_on_plus4:
|
||||||
|
lda #$04
|
||||||
|
rts
|
||||||
|
|
||||||
_get_tv:
|
_get_tv:
|
||||||
jsr _get_ostype
|
jsr _get_ostype
|
||||||
|
cmp #$04
|
||||||
|
beq plus4_get_tv
|
||||||
bpl only40 ; C64 with 40 columns only
|
bpl only40 ; C64 with 40 columns only
|
||||||
lda graphMode
|
lda graphMode
|
||||||
bpl only40 ; C128 but currently on 40 columns
|
bpl only40 ; C128 but currently on 40 columns
|
||||||
@ -43,18 +59,21 @@ tvmode: ; PAL/NTSC check here, result in A
|
|||||||
pha
|
pha
|
||||||
lda #IO_IN ; enable access to I/O
|
lda #IO_IN ; enable access to I/O
|
||||||
sta CPU_DATA
|
sta CPU_DATA
|
||||||
bit rasreg
|
bit rasreg
|
||||||
bpl tvmode ; wait for rasterline 127<x<256
|
bpl tvmode ; wait for rasterline 127<x<256
|
||||||
lda #24 ; (rasterline now >=256!)
|
lda #24 ; (rasterline now >=256!)
|
||||||
modelp: cmp rasreg ; wait for rasterline = 24 (or 280 on PAL)
|
modelp:
|
||||||
|
cmp rasreg ; wait for rasterline = 24 (or 280 on PAL)
|
||||||
bne modelp
|
bne modelp
|
||||||
lda grcntrl1 ; 24 or 280 ?
|
lda grcntrl1 ; 24 or 280 ?
|
||||||
bpl ntsc
|
bpl ntsc
|
||||||
lda #0 ; PAL
|
lda #0 ; PAL
|
||||||
beq modeend
|
beq modeend
|
||||||
ntsc: lda #$80 ; NTSC
|
ntsc:
|
||||||
|
lda #$80 ; NTSC
|
||||||
|
|
||||||
modeend: stx tmp1
|
modeend:
|
||||||
|
stx tmp1
|
||||||
ora tmp1
|
ora tmp1
|
||||||
sta tmp1
|
sta tmp1
|
||||||
ldx #0
|
ldx #0
|
||||||
@ -63,3 +82,12 @@ modeend: stx tmp1
|
|||||||
plp ; restore interrupt state
|
plp ; restore interrupt state
|
||||||
lda tmp1
|
lda tmp1
|
||||||
rts
|
rts
|
||||||
|
plus4_get_tv:
|
||||||
|
ldx #1 ; Assume PAL
|
||||||
|
bit $FF07 ; Test bit 6
|
||||||
|
bvc plus4pal
|
||||||
|
dex ; NTSC
|
||||||
|
plus4pal:
|
||||||
|
txa
|
||||||
|
ldx #0
|
||||||
|
rts
|
||||||
|
Loading…
x
Reference in New Issue
Block a user