mirror of
https://github.com/cc65/cc65.git
synced 2024-08-17 03:29:15 +00:00
117 lines
2.6 KiB
ArmAsm
117 lines
2.6 KiB
ArmAsm
;
|
|
; Maciej 'YTM/Elysium' Witkowiak
|
|
;
|
|
; 10.09.2001
|
|
;
|
|
; Plus4, Gateway, MP3 and GEOS 1.1 detection by
|
|
; Marco van den Heuvel, 2018-02-07
|
|
;
|
|
|
|
; unsigned char get_ostype (void);
|
|
; unsigned char get_tv (void);
|
|
|
|
.export _get_ostype
|
|
.export _get_tv
|
|
.importzp tmp1
|
|
|
|
.include "const.inc"
|
|
.include "geossym.inc"
|
|
.include "geossym2.inc"
|
|
|
|
_get_ostype:
|
|
ldx #0
|
|
lda version
|
|
cmp #$a9
|
|
beq geos11
|
|
and #%11110000
|
|
cmp #$10
|
|
beq geos10
|
|
cmp #$13 ; either 1.3 or 1.5
|
|
beq geos13check
|
|
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
|
|
ora version
|
|
rts
|
|
geos13:
|
|
geos10:
|
|
lda version
|
|
rts
|
|
geos11:
|
|
lda #$11
|
|
rts
|
|
geos_on_plus4:
|
|
lda #$04
|
|
rts
|
|
gateway:
|
|
lda #$08
|
|
ora c128Flag
|
|
rts
|
|
megapatch3:
|
|
lda #$03
|
|
ora c128Flag
|
|
rts
|
|
geos13check:
|
|
lda mp3Flag
|
|
cmp #$03
|
|
bne geos13
|
|
geos15:
|
|
lda #$15
|
|
rts
|
|
|
|
_get_tv:
|
|
jsr _get_ostype
|
|
cmp #$04
|
|
beq plus4_get_tv
|
|
bpl only40 ; C64 with 40 columns only
|
|
lda graphMode
|
|
bpl only40 ; C128 but currently on 40 columns
|
|
ldx #1 ; COLUMNS80
|
|
bne tvmode
|
|
only40: ldx #0 ; COLUMNS40
|
|
tvmode: ; PAL/NTSC check here, result in A
|
|
php
|
|
sei ; disable interrupts
|
|
lda CPU_DATA ; this is for C64
|
|
pha
|
|
lda #IO_IN ; enable access to I/O
|
|
sta CPU_DATA
|
|
bit rasreg
|
|
bpl tvmode ; wait for rasterline 127<x<256
|
|
lda #24 ; (rasterline now >=256!)
|
|
modelp:
|
|
cmp rasreg ; wait for rasterline = 24 (or 280 on PAL)
|
|
bne modelp
|
|
lda grcntrl1 ; 24 or 280 ?
|
|
bpl ntsc
|
|
lda #0 ; PAL
|
|
beq modeend
|
|
ntsc:
|
|
lda #$80 ; NTSC
|
|
|
|
modeend:
|
|
stx tmp1
|
|
ora tmp1
|
|
sta tmp1
|
|
ldx #0
|
|
pla
|
|
sta CPU_DATA ; restore memory config
|
|
plp ; restore interrupt state
|
|
lda tmp1
|
|
rts
|
|
plus4_get_tv:
|
|
ldx #1 ; Assume PAL
|
|
bit $FF07 ; Test bit 6
|
|
bvc plus4pal
|
|
dex ; NTSC
|
|
plus4pal:
|
|
txa
|
|
ldx #0
|
|
rts
|