Files
cc65/libsrc/c64/get_tv.s
2018-03-08 16:06:33 -08:00

60 lines
1.3 KiB
ArmAsm

;
; Ullrich von Bassewitz, 2002-12-03
;
; unsigned char get_tv (void);
; /* Return the video mode the machine is using */
;
; Changed to actually detect the mode instead of using a flag
; Marco van den Heuvel, 2018-03-08
;
; The detection goes wrong on accelerated machines for now.
;
.include "c64.inc"
.include "get_tv.inc"
;--------------------------------------------------------------------------
; _get_tv
.proc _get_tv
php
sei
timing_loop_0:
lda VIC_HLINE
timing_loop_1:
cmp VIC_HLINE
beq timing_loop_1
bmi timing_loop_0
and #$03
cmp #$01
bne check_ntsc
lda #TV::NTSC_OLD ; NTSC OLD constant
bne detected
check_ntsc:
cmp #$03
bcc ntsc
; check for PAL and PAL-N
ldx #$00
lda #$10
timing_loop_2:
inx
cmp VIC_HLINE
bne timing_loop_2
lda #TV::PAL ; PAL constant
cpx #$70
bcc detected
lda #TV::PAL_N ; PAL-N constant
detected:
ldx #$00
plp
rts
ntsc:
lda #TV::NTSC ; NTSC constant
beq detected
.endproc