Przeglądarka plików LUM, część 2
W poprzednim odcinku wstępna wersja przeglądarki LUM wyświetlała tylko część obrazu. Po niewielkiej modyfikacji doczytamy też część odpowiedzialną za kolor: plik COL. Linie wyświetlane są naprzemiennie a główna pętla przełącza GTIA w kółko pomiędzy trybami 9 i 11. Dodatkowo dla ułatwienia przeglądarka odczytuje obydwa półobrazy niezależnie od tego który wywołamy. Aby mechanizm działał wystarczy dopisać w RUNEXT.CFG:
RUNEXT.CFG:
COL:LUM,A:\DOS\VIEWLUM.COM
;LUM @ COL VIEWER, AtariFan, 210516
Byte
DMACTLS=$022F,
KB =$02FC,
ICCMD =$0362,
PRIOR =$D01B,
WSYNC =$D40A,
VCOUNT =$D40B
Byte pointer
ADR =$6000
Card
X,Y,Z,
BUF =$000A,
DLPTR =$0230,
ICBUFA =$0364,
ICBUFL =$0368
Char array
P=0,F(15),COL=”COL”,LUM=”LUM”,
D1=[$4F$00$70$0],D2=[$4F$00$80$0],
D3=[$4F$00$90$0],D4=[$41$00$60$0]
PROC CIO=*()
[$AD X $0A$0A$0A$0A$AA$20$56$E4]
Return
Proc BLOCK(card A,B)
FOR Y=0 TO B STEP 80 DO ICBUFA=A+Y CIO() OD
Return
Proc LOAD(byte OFF)
X=2 CLOSE(X) OPEN(X,F,4,0) ICCMD=7
ICBUFL=6 ICBUFA=$600 CIO()
ICBUFL=40
BLOCK($7000+OFF,3840)
BLOCK($8000+OFF,3840)
BLOCK($9000+OFF,1840)
CLOSE(X)
Return
Proc START()
DMACTLS=0
; wiersz 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
; display list
DO ADR^=$F ADR==+1 UNTIL ADR=$60F0 OD
MOVEBLOCK($6000,D1,3)
MOVEBLOCK($6062,D2,3)
MOVEBLOCK($60C4,D3,3)
MOVEBLOCK($60F0,D4,3)
DLPTR=$6000
; typ pliku
Z=F(0)
IF F(Z)=’L THEN LOAD(0) MOVEBLOCK(F+Z-2,LUM+1,3) LOAD(40)
ELSE LOAD(40) MOVEBLOCK(F+Z-2,COL+1,3) LOAD(0)
FI
KB=255
DMACTLS=34
WHILE KB=255
DO
WHILE VCOUNT <>3 DO OD
WHILE VCOUNT <121
DO
WSYNC=0 PRIOR=$41
WSYNC=0 PRIOR=$C1
OD
WSYNC=0 PRIOR=$01
OD
DMACTLS=0
CLOSE(0) OPEN(0,”E:”,12,0)
KB=255
[$6C$0A$00] ;powrót do SDX