<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Programowanie%3A_Pe%C5%82ny_240-liniowy_hires</id>
	<title>Programowanie: Pełny 240-liniowy hires - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Programowanie%3A_Pe%C5%82ny_240-liniowy_hires"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Programowanie:_Pe%C5%82ny_240-liniowy_hires&amp;action=history"/>
	<updated>2026-10-03T04:05:02Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Programowanie:_Pe%C5%82ny_240-liniowy_hires&amp;diff=3301&amp;oldid=prev</id>
		<title>imported&gt;Atariki recovery: Reconstructed from archived HTML; see provenance manifest</title>
		<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Programowanie:_Pe%C5%82ny_240-liniowy_hires&amp;diff=3301&amp;oldid=prev"/>
		<updated>2026-10-01T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;Reconstructed from archived HTML; see provenance manifest&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[File:Vbxe lcd asus t1eh broken.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Vbxe lcd asus t1eh fixed.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Svideo lcd asus t1eh broken.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Svideo lcd asus t1eh fixed.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Svideo crt commodore 1084s-p1 broken.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:Svideo crt commodore 1084s-p1 fixed.png]]&lt;br /&gt;
&lt;br /&gt;
ANTIC potrafi [[Ramka|wyrysować na ekranie]] 240 linii skanningowych począwszy od 8 linii ekranowej do 247 włącznie. Robi to na podstawie [[ANTIC Display List|Display Listy]].&lt;br /&gt;
&lt;br /&gt;
O ile dla [[Tryby niskiej rozdzielczości|trybów niskiej rozdzielczości]] można wykorzystać pełne 240 linii, o tyle [[Tryby wysokiej rozdzielczości|tryby hires]] ([[Graphics 0|ANTIC 2]], [[ANTIC 3]] i [[Graphics 8|ANTIC F]]), ale również [[Tryby GTIA|tryby GTIA]] ([[Graphics 9]], [[Graphics 10]] i [[Graphics 11]]) bazowane właśnie na trybie [[Graphics 15|ANTIC F]] w takim przypadku powodują zerwanie synchronizacji pionowej, przez co prawidłowa lista wyświetlania może składać się z 239 linii i skoku JVB skutkującego wyświetlaniem jednej pustej linii na samym dole ekranu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dlist:&lt;br /&gt;
    .byte $0F | $40  ;LMS&lt;br /&gt;
    .word screen.?part1&lt;br /&gt;
:99 .byte $0F&lt;br /&gt;
&lt;br /&gt;
    .byte $0F | $40  ;LMS&lt;br /&gt;
    .word screen.?part2&lt;br /&gt;
:99 .byte $0F&lt;br /&gt;
&lt;br /&gt;
    .byte $0F | $40  ;LMS&lt;br /&gt;
    .word screen.?part3&lt;br /&gt;
:38 .byte $0F&lt;br /&gt;
&lt;br /&gt;
    .byte $41        ;JVB&lt;br /&gt;
    .word dlist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sposób na poradzenie sobie z problemem opisał [[Rybags]] w wątku [https://forums.atariage.com/topic/165509-overcoming-the-scanline-240-bug Overcoming the Scanline 240 lines &amp;quot;bug&amp;quot;]: sztuczka polega na wyłączeniu [[DMA|DMA dla ekranu]] przed końcem linii 247 - ostatniej kreślonej przez ANTIC, po czym przywróceniu go na początku linii 8 - pierwszej rysowanej przez ANTIC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
init:&lt;br /&gt;
    ...&lt;br /&gt;
    lda #%00100000&lt;br /&gt;
    ldx #&amp;amp;lt;dlist&lt;br /&gt;
    ldy #&amp;amp;gt;dlist&lt;br /&gt;
    sta DMACTLS   ;$22F&lt;br /&gt;
    stx DLPTRS    ;$230&lt;br /&gt;
    sty DLPTRS+1&lt;br /&gt;
&lt;br /&gt;
    ldy #&amp;amp;lt;vbint&lt;br /&gt;
    ldx #&amp;amp;gt;vbint&lt;br /&gt;
    lda #VBLKD    ;7&lt;br /&gt;
    jsr JSETVBV   ;$E45C&lt;br /&gt;
&lt;br /&gt;
    ldy #&amp;amp;lt;dlint&lt;br /&gt;
    ldx #&amp;amp;gt;dlint&lt;br /&gt;
    lda #%11000000&lt;br /&gt;
    sty VDSLST    ;$200&lt;br /&gt;
    stx VDSLST+1&lt;br /&gt;
    sta NMIEN     ;$D40E&lt;br /&gt;
    ...&lt;br /&gt;
&lt;br /&gt;
vbint:&lt;br /&gt;
    lda #8/2&lt;br /&gt;
?w  cmp VCOUNT    ;$D40B&lt;br /&gt;
    bne ?w&lt;br /&gt;
&lt;br /&gt;
    lda #%00100010&lt;br /&gt;
    sta DMACTL    ;$D400&lt;br /&gt;
    jmp JEXITVB   ;$E462&lt;br /&gt;
&lt;br /&gt;
dlint:&lt;br /&gt;
    pha&lt;br /&gt;
    lda #%00100000&lt;br /&gt;
    sta WSYNC     ;$D40A&lt;br /&gt;
    sta DMACTL    ;$D400&lt;br /&gt;
    pla&lt;br /&gt;
    rti&lt;br /&gt;
&lt;br /&gt;
dlist:&lt;br /&gt;
    .byte $02 | $40  ;LMS&lt;br /&gt;
    .word screen&lt;br /&gt;
:28 .byte $02&lt;br /&gt;
    .byte $02 | $80  ;DLI&lt;br /&gt;
;    .byte $41        ;JVB&lt;br /&gt;
;    .word dlist&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W powyższym przykładzie:&lt;br /&gt;
&lt;br /&gt;
* do uzyskania 240 lini hires wykorzystano 30 wierszy trybu [[Graphics 0|ANTIC 2]] (30*8=240), ale równie dobrze można użyć też 240 linii [[Graphics 0|ANTIC F]], jak i 24 wierszy [[ANTIC 3]] (24*10=240),&lt;br /&gt;
* do wyłączenia DMA ekranu używane jest przerwanie DLI w ostatnim wierszu ekranu (zajmującego linie 240-247, a zgłaszającego DLI w linii 247),&lt;br /&gt;
* a do przywrócenia DMA ekranu przerwanie [[VBL]] (a konkretnie opóźniona faza procedury obsługi przerwania [[SYSVBL|VBLK]]).&lt;br /&gt;
&lt;br /&gt;
Warto zwrócić uwagę na to, że w DMACTLS (czyli cieniu [[Rejestry ANTIC-a#DMACTL|DMACTL]]) DMA dla ekranu jest wyłączone (bity 0 i 1 równe %00) a to z tego powodu, że przed wykonaniem opóźnionej fazy VBLK rejestry ANTIC-a (między innymi DMACTL i DLPTR) są ustawiane na podstawie rejestrów-cieni, zaś włączenie DMA ekranu przed linią 8 spowoduje zerwanie synchronizacji (VBLK zgłaszane jest przez ANTIC w 248 linii skanningowej).&lt;br /&gt;
&lt;br /&gt;
Ostatni skok JVB w Display List jest zbędny ponieważ w międzyczasie na przerwaniu [[SYSVBL|VBLK]] zostaje ustawiona nowa wartość [[Rejestry ANTIC-a#DLPTR|DLPTR]] i ANTIC tego rozkazu już nie czyta.&lt;br /&gt;
&lt;br /&gt;
== Linki ==&lt;br /&gt;
&lt;br /&gt;
* [[ANTIC Display List|Display List]]&lt;br /&gt;
* [[Ramka]]&lt;br /&gt;
* [[NTSC vs PAL]]&lt;br /&gt;
* [[DMA]]&lt;br /&gt;
* [[VBL|Przerwanie VBLK]]&lt;br /&gt;
* [[Tryby wysokiej rozdzielczości]]&lt;br /&gt;
* [[Tryby niskiej rozdzielczości]]&lt;br /&gt;
* [[Tryby GTIA]]&lt;br /&gt;
* [[Generator znaków]]&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Niezbędnik kodera]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>