<?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=PIC_%28Paint_256%29</id>
	<title>PIC (Paint 256) - 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=PIC_%28Paint_256%29"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=PIC_(Paint_256)&amp;action=history"/>
	<updated>2026-10-03T13:10:26Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=PIC_(Paint_256)&amp;diff=3126&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=PIC_(Paint_256)&amp;diff=3126&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;Format pliku programu [[Paint 256]] zawierającego obraz o rozdzielczości 80x96 bez interlace wykorzystujący efekt &amp;quot;PAL Blending&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Obraz zawiera surowe dane dwóch obrazów 80x96 pikseli w trybie [[Graphics 9]] i [[Graphics 11]] umieszczonych kolejno po sobie. Każdy obraz stanowi 96 linii po 40 bajtów, czyli 3840 bajtów ($0F00), a więc łącznie 7680 bajtów ($1E00).&lt;br /&gt;
&lt;br /&gt;
Format pliku jest na tyle prosty że można go bez problemu obsłużyć z poziomu chociażby [[Turbo BASIC XL]], posiłkując się jedynie prostą wstawką (w kodzie maszynowym) służącą do przełączania pomiędzy trybami [[Graphics 9]]/[[Graphics 11]]. Przykładowy program ładujący i pokazujący obrazek w tym formacie może wyglądać tak:&lt;br /&gt;
&lt;br /&gt;
[[File:Paint256 example pic.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;10 DIM F$(32):GOSUB 30&lt;br /&gt;
11 GRAPHICS 0:?&lt;br /&gt;
12 INPUT &amp;quot;ENTER FILENAME &amp;quot;;F$&lt;br /&gt;
13 TRAP 25:OPEN #1,4,0,F$&lt;br /&gt;
14 GRAPHICS 9&lt;br /&gt;
15 SCR=DPEEK(88):GOSUB 20&lt;br /&gt;
16 SCR=DPEEK(88)+40:GOSUB 20&lt;br /&gt;
17 CLOSE #1&lt;br /&gt;
18 X=USR(1536):POKE 764,255&lt;br /&gt;
19 GOTO 11&lt;br /&gt;
20 ------------------------------&lt;br /&gt;
21 FOR I=0 TO 95&lt;br /&gt;
22   BGET #1,SCR,40:SCR=SCR+80&lt;br /&gt;
23 NEXT I&lt;br /&gt;
24 RETURN&lt;br /&gt;
25 ------------------------------&lt;br /&gt;
26 GRAPHICS 0:?&lt;br /&gt;
27 ? &amp;quot;Error #&amp;quot;;ERR;&amp;quot; at line #&amp;quot;;ERL&lt;br /&gt;
28 END&lt;br /&gt;
29 ------------------------------&lt;br /&gt;
30 DIM A$(128):RESTORE 35:READ A$&lt;br /&gt;
31 FOR I=0 TO $24&lt;br /&gt;
32   POKE $0600+I,DEC(A$(I*2+1,I*2+2))&lt;br /&gt;
33 NEXT I&lt;br /&gt;
34 RETURN&lt;br /&gt;
35 DATA A90FCD0BD4D0FBA2C2AD6F028D0AD48D1BD049808D6F02CAD0EFAD0FD22904D0DF68606860&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wykorzystując inny język programowania, np. [[Action!]] wcale nie trzeba się uciekać od używania wstawek w kodzie maszynowym czy tez zewnętrznych procedur napisanych w [[Asembler|asemblerze]], poniższy program odczytuje z dyskietki plik &amp;quot;EXAMPLE.PIC&amp;quot; i pokazuje go ekranie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;INCLUDE &amp;quot;D:IO.ACT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; Procedura wczytuje dany &amp;quot;pół-obraz&amp;quot; (dane o chrominancji lub luminancji) pod wskazany adres w pamięci&lt;br /&gt;
&lt;br /&gt;
PROC READ(CARD ADR)&lt;br /&gt;
BYTE Y&lt;br /&gt;
&lt;br /&gt;
FOR Y=0 TO 95&lt;br /&gt;
DO&lt;br /&gt;
 BGET(1,ADR,40)&lt;br /&gt;
 ADR==+80&lt;br /&gt;
OD&lt;br /&gt;
&lt;br /&gt;
RETURN&lt;br /&gt;
&lt;br /&gt;
; kod startuje od tego miejsca&lt;br /&gt;
&lt;br /&gt;
PROC MAIN()&lt;br /&gt;
CARD SCR&lt;br /&gt;
BYTE WSYNC=$D40A,VCOUNT=$D40B,PRIOR=$D01B&lt;br /&gt;
&lt;br /&gt;
CLOSE(1) ; zamknięcie kanału IOCB#1 (może być otwarty przez runtime Action! po wywołaniu INCLUDE)&lt;br /&gt;
OPEN(1,&amp;quot;D:EXAMPLE.PIC&amp;quot;,4,0) ; otwarcie pliku&lt;br /&gt;
&lt;br /&gt;
GRAPHICS(9) ; włączamy tryb graficzny nr 9 (16 odcieni jednego koloru)&lt;br /&gt;
&lt;br /&gt;
SCR=PEEKC(88)    READ(SCR) ; wczytujemy obraz zawierający dane chrominancji i umieszczamy go liniach parzystych&lt;br /&gt;
SCR=PEEKC(88)+40 READ(SCR) ; wczytujemy obraz zawierający dane luminancji i umieszczamy go liniach nieparzystych&lt;br /&gt;
&lt;br /&gt;
CLOSE(1) ; zamykamy kanał IOCB#1&lt;br /&gt;
&lt;br /&gt;
; poniższa procedura realizuje przełączanie co linię trybów GTIA (9/11)&lt;br /&gt;
DO&lt;br /&gt;
 WHILE VCOUNT#$0F DO OD ; czekamy na linie ekranową #30 (VCOUNT zawiera licznik linii podzielony przez dwa)&lt;br /&gt;
&lt;br /&gt;
 WHILE VCOUNT#112 ; wykonujemy pętlę do czasu aż VCOUNT nie osiągnie wartości 112&lt;br /&gt;
 DO&lt;br /&gt;
   WSYNC=0    ; czekamy do końca linii skaningowej&lt;br /&gt;
   PRIOR=$40  ; włączamy tryb 9 GTIA&lt;br /&gt;
   WSYNC=0    ; czekamy do końca linii skaningowej&lt;br /&gt;
   PRIOR=$C0  ; włączamy tryb 11 GTIA&lt;br /&gt;
 OD&lt;br /&gt;
OD&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Atari 8-bit]]&lt;br /&gt;
[[Kategoria:Formaty plików]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>