Przeglądarka plików PGC
Poniżej kod kolejnej przeglądarki plików. Podobnie jak bliźniacza przeglądarka VIEWPGC również służy do podglądu plików graficznych z mikrokomputera Atari Portfolio. W odróżnieniu od plików PGF format PGC to plik danych poddany kompresji RLE.
RUNEXT.CFG:
PGC,A:\DOS\VIEWPGC.COM
;PGC Viewer, AtariFan 210530, http://atari8.eu
Byte
DMACTLS=$022F,
GTIACTLS=$026F, ;cien GTIACTL
COLPF1S=$02C5,
COLPF2S=$02C6 ,
COLBAKS=$02C8,
ICCMD =$0362,
HPOSP0 =$D000, ;pozycja Gracz0
HPOSP1 =$D001, ;pozycja Gracz1
PMCNTL =$D01D
Card
ID,X,Y,Z,
BUF =$000A ,
COLPM01=$02C0 ,
DLPTR =$0230 ,
ICBUFA =$0364 ,
ICBUFL =$0368 ,
SIZEP01=$D008 , ;szer Gracz0 Gracz1
GRAFP01=$D00D ;wzor Gracz0 Gracz1
Byte array
BU(1920),P=0,F(15),
DL=[$70$70$70$70$70$70$70$70$70$70
$4F$00$82
$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
$41$00$80]
Proc KEY=$F302()
Proc CIO=*()[$AD X $0A$0A$0A$0A$AA$20$56$E4$60]
Proc PGF()
;przygotowanie ekranu
DMACTLS=0
MOVEBLOCK($8000,DL,254) ;kopiuj DL
DLPTR=$8000 ;ustaw DL
COLPF1S=$80
COLPF2S=$8D
;zeruj miejsce pod duszkami
FOR X=$8200 TO $89FF STEP 32
DO P(X)=0 P(X+31)=0 OD
;duszki dwa maskują krawędzie obrazu
COLPM01=0
SIZEP01=0
GRAFP01=$F0F0
GTIACTLS=1
PMCNTL=1
HPOSP0=64
HPOSP1=188
;obróbka wiersza poleceń
X=BUF+$3F DO IF P(X)=$20 THEN EXIT FI X==+1 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
;odczyt pliku
X=2 CLOSE(X) Open(X,F,4,0)
ICCMD=7 ICBUFA=BU ICBUFL=3 CIO()
;dekompresja
ID=0
WHILE ID<1920
DO
Y=GETD(X)
IF Y<128 THEN ICBUFA=BU+ID ICBUFL=Y CIO()
ELSE Z=GETD(X) Y==-128 SETBLOCK(BU+ID,Y,Z)
FI
ID==+Y
OD
Close(X)
;z bufora na ekran
FOR X=0 TO 63
DO MOVEBLOCK($8201+X*32,BU+X*30,30) OD
DMACTLS=33
Key()
HPOSP0=0 HPOSP1=0
Close(0) Open(0,”E:”,12,0)
[$6C$0A$00] ;powrót do SDX
Biblioteka: