Re: 6561 (PAL VIC-I) interlace mode bit

From: Marko Mäkelä <msmakela_at_gmail.com>
Date: Fri, 26 Aug 2011 23:26:37 +0300
Message-ID: <20110826202637.GC2729@x60s>
On Fri, Aug 26, 2011 at 04:11:38PM +0200, Segher Boessenkool wrote:
>Btw, the 6560 datasheets say it is 262.5 lines per field for interlace 
>mode (like NTSC should be), and 262 for non-interlace mode; your docs 
>(and everything else I googled) say it is 261.  Which is wrong?

Let's see the source code of my test program: 
http://zimmers.net/anonftp/pub/cbm/vic20/programming/interlace.tar.gz

It looks like the program aims to set the interrupt on the last line of 
the odd frame (263th line).

LINES_i = 525                   ; lines per interlaced frame
LINES_e = 262                   ; lines per even frame
LINES_o = 263                   ; lines per odd frame
...
	lda #LINES_i / 4        ; wait for last line
.last:  bit $9003
	beq .last
	cmp $9004
	bne .last

The program does not initialize the low bits of $9003, so I guess that 
there is a bug in it, because if the default value of $9003 is $2e or 
$ae, and that ANDed with $83 is never zero, but always $02 or $82.  The 
BEQ after the BIT should probably be BPL. Otherwise, the switch could 
occur on the wrong field, that is, it would always show the wrong half 
of the interlaced font. This should occur with about 50% probability.

Best regards,

	Marko

       Message was sent through the cbm-hackers mailing list
Received on 2011-08-26 21:00:10

Archive generated by hypermail 2.2.0.