; SPLASH4 ;------------------------------------ ; Gr7plus ; Paul Chabot ; MODULE BYTE ARRAY mask=[64 16 4 1] CARD ARRAY adrow(160) PROC Clor(BYTE c) mask(3)=c:mask(2)=c LSH 2 mask(1)=c LSH 4:mask(0)=c LSH 6 RETURN PROC Dot(BYTE x,y) BYTE xb,xr BYTE ARRAY row ,premask=[63 207 243 252] xb=x RSH 2:xr=x AND 3:row=adrow(y) row(xb)==& premask(xr) % mask(xr) RETURN PROC BLine(BYTE x1,y1,x2,y2) BYTE x,y,xf,yf,i INT a,b,t,dx,dy Dot(x1,y1):Dot(x2,y2) IF x2>x1 THEN dx=x2-x1:xf=0 ELSE dx=x1-x2:xf=1 FI IF y2>y1 THEN dy=y2-y1:yf=0 ELSE dy=y1-y2:yf=1 FI IF dx<2 AND dy<2 THEN RETURN FI x=x1:y=y1 IF dx>dy THEN a=dy+dy:t=a-dx:b=t-dx FOR i=2 TO dx DO IF xf=0 THEN x==+1 ELSE x==-1 FI IF t<0 THEN t==+a ELSE t==+b IF yf=0 THEN y==+1 ELSE y==-1 FI FI Dot(x,y) OD ELSE a=dx+dx:t=a-dy:b=t-dy FOR i=2 TO dy DO IF yf=0 THEN y==+1 ELSE y==-1 FI IF t<0 THEN t==+a ELSE t==+b IF xf=0 THEN x==+1 ELSE x==-1 FI FI Dot(x,y) OD FI RETURN PROC Gr7plus() BYTE i BYTE ARRAY dl CARD sa=88,dlist=560 Graphics(8):adrow(0)=sa FOR i=1 TO 159 DO adrow(i)=adrow(i-1)+40 OD dl=dlist:dl(3)=78:dl(99)=78 FOR i=6 TO 98 DO dl(i)=14 OD FOR i=102 TO 166 DO dl(i)=14 OD RETURN ;------------------------------------ ; COLOR SPLASH ; MODULE BYTE cur=752,key=764,trow=656,tcol=657 ,x,y,s,c,i,j BYTE ARRAY creg=708 ,dfault=[54 26 194 0 80] PROC Splash() FOR i=0 TO 159 STEP s DO BLine(x,y,i,0):BLine(x,y,i,159) BLine(x,y,0,i):BLine(x,y,159,i) OD RETURN PROC IncStep() s==+1:IF s>16 THEN s=1 FI trow=1:tcol=26:PrintB(s):Print(" ") RETURN PROC IncColor() i=c:c==+1 IF c>3 THEN c=0:i=4 FI Clor(c):i=creg(i) trow=1:tcol=37:PrintB(c):Print(" ") trow=2:tcol=36:PrintB(i RSH 4):Print(" ") trow=3:tcol=36:PrintB(i & 14):Print(" ") RETURN PROC IncHue() IF c=0 THEN i=4 ELSE i=c-1 FI j=creg(i) RSH 4:j==+1 IF j>15 THEN j=0 FI trow=2:tcol=36:PrintB(j):Print(" ") creg(i)=(j LSH 4)+(creg(i) & 14) RETURN PROC IncLum() IF c=0 THEN i=4 ELSE i=c-1 FI j=creg(i) & 14:j==+2 IF j>15 THEN j=0 FI trow=3:tcol=36:PrintB(j):Print(" ") creg(i)=(creg(i) & 240)+j RETURN PROC Joystick() BYTE st,k DO trow=1:tcol=9 PrintC(x):Print(" , "):PrintB(y):Print(" ") WHILE Stick(0)=15 DO IF Strig(0)=0 THEN Splash() FI IF key<255 THEN k=key:key=255 IF k=62 THEN IncStep() ;S ELSEIF k=18 THEN IncColor() ;C ELSEIF k=57 THEN IncHue() ;H ELSEIF k=0 THEN IncLum() ;L ELSEIF k=35 THEN RETURN ;N FI FI OD st=Stick(0) IF st=7 AND x<159 THEN x==+1 ELSEIF st=11 AND x>0 THEN x==-1 ELSEIF st=13 AND y<159 THEN y==+1 ELSEIF st=14 AND y>0 THEN y==-1 FI OD RETURN PROC Setup() Gr7plus():cur=1 FOR i=0 TO 4 DO creg(i)=dfault(i) OD PrintE("����������ӠР̠��ӠȠ��������") PrintE("CENTER 80 , 60 [S]tep 7 [C]OLOR") PrintE(" [joystick] [H]ue") Print("[trig]-SPLASH [N]ew Screen [L]um") x=80:y=60:s=7:c=0:IncColor() RETURN PROC OpenScene() Setup():x=20:y=20:s=9:Splash() IncColor():x=50:y=110:s=7:Splash() IncColor():x=120:y=60:s=9:Splash() IncColor():x=80:y=130:s=9:Splash() IncColor():x=140:y=130:s=7:Splash() RETURN PROC Main() OpenScene():Joystick() DO Setup():Joystick() OD RETURN
Back to previous page