60 lines
1.3 KiB
ArmAsm
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
|