Przeglądarka plików LUM, część 1
Poniżej kod kolejnej przeglądarki plików graficznych. VIEWLUM docelowo będzie wyświetlać obrazy utworzone w programie Technicolor Dream. Obrazy utworzone w tym programie wykorzystują technikę, w której ekran tworzą naprzemiennie linie trybu Graphics 9 i Graphics 11 i umożliwiają zastosowanie 256 kolorów. Program zapisuje dane obrazu w dwóch odrębnych plikach z rozszerzeniem LUM i COL. Jak łatwo się domyśleć pierwszy z nich to dane dla linii Graphics 9 w odcieniach szarości (LUMA), drugi to dane dla linii trybu Graphics 11 z kolorami. Utworzenie takiego trybu powoduje wystąpienie zjawiska podkolorowania linii LUM wartością koloru z linii COL.
Wstępna wersja wyświetla zawartość tylko pliku LUM z przeplotem dla brakujących linii z pliku COL, otrzymamy więc obraz w odcieniach szarości.
RUNEXT.CFG:
LUM,A:\DOS\VIEWLUM.COM
;LUM VIEWER, ATARIFAN, 210428
byte
DMACTLS =$022F,
GTIACTLS=$026F,
KB=$02FC,
ICCMD=$0362
card
X,Y,
BUF =$000A,
DLPTR =$0230,
ICBUFA =$0364,
ICBUFL =$0368
byte pointer ADR
byte array P=0,F(15),
DL1=[$4F$00$70$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$4F$00$80$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$4F$00$90$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$F$F$F$F$F$F$F$F$F$F$F$F$F$F
$41$00$60]
Proc JMPCIO()
[$AD X $0A$0A$0A$0A$AA$20$56$E4]
Return
Proc BLOCK(card A, B)
FOR Y=40 TO B STEP 80 DO ICBUFA=A+Y JMPCIO() OD
Return
Proc START()
DMACTLS=0 ;wyłącz ekran
;obróbka wiersza poleceń
X=BUF+$3F DO X==+1 IF P(X)=$20 THEN EXIT FI OD
X==+1 Y=X DO Y==+1 IF P(Y)=$9B THEN EXIT FI OD
Y=Y-X F(0)=Y+2 MOVEBLOCK(F+3,X,Y) F(1)=$44 F(2)=$3A
;zeruj pamięć obrazu
ADR=$7000 DO ADR^=0 ADR==+1 UNTIL ADR=$9730 OD
;aktywacja displaylist
MOVEBLOCK($6000,DL1,254) DLPTR=$6000
GTIACTLS=$40
;odczyt pliku LUM
X=2 CLOSE(X) OPEN(X,F,4,0) ICCMD=7
ICBUFL=6 ICBUFA=$7000 JMPCIO()
ICBUFL=40
BLOCK($7000,3840)
BLOCK($8000,3840)
BLOCK($9000,1840)
CLOSE(X)
DMACTLS=34 ;włącz ekran
KB=255 WHILE KB=255 DO OD KB=255 ;czekaj na klawisz
CLOSE(0) OPEN(0,”E:”,12,0) ;przywróć ekran
Return
Biblioteka: