home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1985 June / Antic_Magazine_1985_06_Antic_Side_A.atr / gr78m.act < prev    next >
Text File  |  2023-02-26  |  2KB  |  1 lines

  1. ¢; GR78M (LISTING 1)¢¢MODULE:INT xnow=[80],ynow=[90]¢BYTE cnow=[1],key=764,ram=106,cur=752¢BYTE ARRAY mask7=[64 16 4 1],clor=708¢  ,mask8=[128 64 32 16 8 4 2 1],mask,row¢CARD dlist=560,sa=88¢CARD ARRAY adr(192):CARD POINTER mes¢¢PROC Kolor(BYTE c) RETURN¢PROC Dot(INT x,y) RETURN¢PROC Dit(INT x,y) RETURN¢¢PROC LineTo(INT x,y)¢INT dx,dy,xf,yf,a,b,t,i¢Dot(xnow,ynow)¢IF x=xnow AND y=ynow THEN RETURN FI¢IF x>xnow THEN dx=x-xnow:xf=1¢ELSE dx=xnow-x:xf=-1 FI¢IF y>ynow THEN dy=y-ynow:yf=1¢ELSE dy=ynow-y:yf=-1 FI¢x=xnow:y=ynow¢IF dx>dy THEN a=dy+dy:t=a-dx:b=t-dx¢  FOR i=1 TO dx DO x==+xf¢    IF t<0 THEN t==+a¢    ELSE t==+b:y==+yf¢    FI Dot(x,y)¢  OD¢ELSE a=dx+dx:t=a-dy:b=t-dy¢  FOR i=1 TO dy DO y==+yf¢    IF t<0 THEN t==+a¢    ELSE t==+b:x==+xf¢    FI Dot(x,y)¢  OD ¢FI xnow=x:ynow=y:RETURN¢¢PROC Gr78ON():BYTE i:BYTE ARRAY dl¢Graphics(8+16):adr(0)=sa:dl=dlist¢FOR i= 1 TO 191 DO adr(i)=adr(i-1)+40 OD¢dl==-4:dl(0)=112:dl(1)=80:dl(2)=16¢FOR i=3 TO 198 DO dl(i)=dl(i+4) OD¢dl(199)=16:dl(200)=66:mes=dl+201¢dl(204)==-4:dlist=dl:RETURN¢¢PROC Kolor7(BYTE c):BYTE i¢c==& 3:cnow=c¢FOR i=0 TO 3 DO mask(3-i)=c:c==LSH 2 OD¢RETURN¢¢PROC Dot7(INT x,y):BYTE xb,xr¢BYTE ARRAY pre=[63 207 243 252]¢IF x<0 OR x>159 THEN RETURN FI¢IF y<0 OR y>191 THEN RETURN FI¢xb=x RSH 2:xr=x AND 3:row=adr(y)¢row(xb)==& pre(xr) % mask(xr):RETURN¢¢PROC Dit7(INT x,y):BYTE xb,xr¢IF x<0 OR x>159 THEN RETURN FI¢IF y<0 OR y>191 THEN RETURN FI¢xb=x RSH 2:xr=x AND 3:row=adr(y)¢row(xb)==! mask(xr):RETURN¢¢PROC Gr7(BYTE ARRAY d):BYTE i¢mask=mask7:Kolor=Kolor7:Dot=Dot7¢Dit=Dit7:d(3)=78:d(99)=78¢FOR i=6 TO 98 DO d(i)=14 OD¢FOR i=102 TO 198 DO d(i)=14 OD:RETURN¢¢PROC Kolor8(BYTE c):BYTE i¢cnow=c & 3:IF c>1 THEN c=1 FI¢FOR i=0 TO 7 DO mask(7-i)=c:c==LSH 1 OD¢RETURN¢¢PROC Dot8(INT x,y):BYTE xb,xr¢BYTE ARRAY¢  pre=[127 191 223 239 247 251 253 254]¢IF x<0 OR x>319 THEN RETURN FI¢IF y<0 OR y>191 THEN RETURN FI¢xb=x RSH 3:xr=x AND 7:row=adr(y)¢row(xb)==& pre(xr) % mask(xr):RETURN¢¢PROC Dit8(INT x,y):BYTE xb,xr¢IF x<0 OR x>319 THEN RETURN FI¢IF y<0 OR y>191 THEN RETURN FI¢xb=x RSH 3:xr=x AND 7:row=adr(y)¢row(xb)==! mask(xr):RETURN¢¢PROC Gr8(BYTE ARRAY d):BYTE i¢mask=mask8:Kolor=Kolor8:Dot=Dot8¢Dit=Dit8:d(3)=79:d(99)=79¢FOR i=6 TO 98 DO d(i)=15 OD¢FOR i=102 TO 198 DO d(i)=15 OD:RETURN¢¢