Przeglądarka plików Fun with Art
atari8.eu - czas na zabawę!
Opublikowano w przez Atari Fan
Edytor graficzny Fun with Art wyprzedzał w swoim czasie możliwości graficzne konkurencyjnych mikrokomputerów dzięki możliwości użycia w obrazie 128 kolorów. Instrukcja do programu zawiera opis zastosowania procedury wyświetlania obrazu w języku Basic. Ciekawostką jest, że procedura znajduje się w pliku FWA razem z danymi obrazka. Mamy wszystko co potrzebne – nic więc nie stoi na przeszkodzie podglądać pliki FWA w Action!
Poniżej kod przeglądarki plików FWA oparty na zasadach opisanych w instrukcji. Zebrane informacje o formacie FWA można także znaleźć w Atariki. Jak przy poprzednich przeglądarkach można zautomatyzować podgląd plików GRF dodając w pliku RUNEXT.CFG wpis w stylu:
RUNEXT.CFG:
FWA,A:\DOS\VIEWFWA.COM
;FWA Viewer, AtariFan, 230103
BYTE
DMACTLS=$22F, ICCMD0=$342, ICAX1_0=$34A, ICAX2_0=$34B,
ICCMD2 =$362, ICAX1_2=$36A, ICAX2_2=$36B
CARD
X, BUF=$A, DLPTRS=$230, ICBUFA0=$344, ICBUFL0=$348,
ICBUFA2=$364, ICBUFL2=$0368
CHAR ARRAY
DEVE=[’E’:$9B], P=0
PROC CIO=$E456(byte A,X)
PROC SETVBV=$E45C(byte A,X,Y)
PROC KBGET =$F302()
PROC FWA=*()
;wylaczenie ekranu
DMACTLS=0
;obrobka wiersza polecen
X=BUF+$3F
DO X==+1 IF P(X)=$20 THEN EXIT FI OD
P(X)=’: X==-1 P(X)=’D
;pobierz dane z pliku FWA
ICCMD2=$C CIO(0,$20)
ICCMD2=3 ICBUFA2=X ICAX1_2=4 ICAX2_2=0 CIO(0,$20)
ICCMD2=7
;naglowek FWA
ICBUFA2=$600 ICBUFL2=2 CIO(0,$20)
;kolor tla + 3 kolory
ICBUFA2=$2C8 ICBUFL2=1 CIO(0,$20)
ICBUFA2=$2C4 ICBUFL2=3 CIO(0,$20)
;display list
ICBUFA2=$600 ICBUFL2=$100 CIO(0,$20)
;dane obrazu
ICBUFA2=$5000 ICBUFL2=$1E10 CIO(0,$20)
;dlugosc kodu DLI
ICBUFA2=X ICBUFL2=2 CIO(0,$20)
;kod DLI – maks 2300 bajtow
ICBUFA2=$3000 ICBUFL2=X CIO(0,$20)
;zamknij kanal
ICCMD2=$C CIO(0,$20)
;ustawienie adresu DLI na $3000
P($06DE)=$00 P($06E3)=$30
;adres Display List
DLPTRS=$0600
;instalacja VBLKI
SETVBV($6,$06,$DD)
;wlacz ekran
DMACTLS=34
;czekaj na klawisz
KBGET()
;wylaczenie VBLKI
SETVBV($6,$E4,$5F)
;graphics(0)
ICCMD0=$C CIO(0,0) ;Close(0)
ICCMD0=3 ICBUFA0=DEVE ICAX1_0=12 ICAX2_0=0 CIO(0,0)
;powrot do SDX
[$6C$A$0]