PIC (Paint 256): Różnice pomiędzy wersjami
+prosty "viewer" w TBXL dla tegoż formatu plików. |
+ viewver w Action! |
||
| Linia 31: | Linia 31: | ||
34 RETURN | 34 RETURN | ||
35 DATA A90FCD0BD4D0FBA2C2AD6F028D0AD48D1BD049808D6F02CAD0EFAD0FD22904D0DF68606860 | 35 DATA A90FCD0BD4D0FBA2C2AD6F028D0AD48D1BD049808D6F02CAD0EFAD0FD22904D0DF68606860 | ||
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 "EXAMPLE.PIC" i pokazuje go ekranie: | |||
INCLUDE "D:IO.ACT" | |||
; Procedura wczytuje dany "pół-obraz" (dane o chrominancji lub luminancji) pod wskazany adres w pamięci | |||
PROC READ(CARD ADR) | |||
BYTE Y | |||
FOR Y=0 TO 95 | |||
DO | |||
BGET(1,ADR,40) | |||
ADR==+80 | |||
OD | |||
RETURN | |||
; kod startuje od tego miejsca | |||
PROC MAIN() | |||
CARD SCR | |||
BYTE WSYNC=$D40A,VCOUNT=$D40B,PRIOR=$D01B | |||
CLOSE(1) OPEN(1,"D:EXAMPLE.PIC",4,0) | |||
GRAPHICS(9) | |||
SCR=PEEKC(88) READ(SCR) | |||
SCR=PEEKC(88)+40 READ(SCR) | |||
CLOSE(1) | |||
; poniższa procedura realizuje przełączanie co linię trybów GTIA (9/11) | |||
DO | |||
WHILE VCOUNT#$0F DO OD | |||
WHILE VCOUNT#112 | |||
DO | |||
WSYNC=0 | |||
PRIOR=$40 | |||
WSYNC=0 | |||
PRIOR=$C0 | |||
OD | |||
OD | |||
[[Kategoria:Atari 8-bit]] | [[Kategoria:Atari 8-bit]] | ||
[[Kategoria:Formaty plików]] | [[Kategoria:Formaty plików]] | ||
Wersja z 4 sie 2022, 15:57
Format pliku programu Paint 256 zawierającego obraz o rozdzielczości 80x96 bez interlace wykorzystujący efekt "PAL Blending".
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).
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:
10 DIM F$(32):GOSUB 30 11 GRAPHICS 0:? 12 INPUT "ENTER FILENAME ";F$ 13 TRAP 25:OPEN #1,4,0,F$ 14 GRAPHICS 9 15 SCR=DPEEK(88):GOSUB 20 16 SCR=DPEEK(88)+40:GOSUB 20 17 CLOSE #1 18 X=USR(1536):POKE 764,255 19 GOTO 11 20 ------------------------------ 21 FOR I=0 TO 95 22 BGET #1,SCR,40:SCR=SCR+80 23 NEXT I 24 RETURN 25 ------------------------------ 26 GRAPHICS 0:? 27 ? "Error #";ERR;" at line #";ERL 28 END 29 ------------------------------ 30 DIM A$(128):RESTORE 35:READ A$ 31 FOR I=0 TO $24 32 POKE $0600+I,DEC(A$(I*2+1,I*2+2)) 33 NEXT I 34 RETURN 35 DATA A90FCD0BD4D0FBA2C2AD6F028D0AD48D1BD049808D6F02CAD0EFAD0FD22904D0DF68606860
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 asemblerze, poniższy program odczytuje z dyskietki plik "EXAMPLE.PIC" i pokazuje go ekranie:
INCLUDE "D:IO.ACT" ; Procedura wczytuje dany "pół-obraz" (dane o chrominancji lub luminancji) pod wskazany adres w pamięci PROC READ(CARD ADR) BYTE Y FOR Y=0 TO 95 DO BGET(1,ADR,40) ADR==+80 OD RETURN ; kod startuje od tego miejsca PROC MAIN() CARD SCR BYTE WSYNC=$D40A,VCOUNT=$D40B,PRIOR=$D01B CLOSE(1) OPEN(1,"D:EXAMPLE.PIC",4,0) GRAPHICS(9) SCR=PEEKC(88) READ(SCR) SCR=PEEKC(88)+40 READ(SCR) CLOSE(1) ; poniższa procedura realizuje przełączanie co linię trybów GTIA (9/11) DO WHILE VCOUNT#$0F DO OD WHILE VCOUNT#112 DO WSYNC=0 PRIOR=$40 WSYNC=0 PRIOR=$C0 OD OD
