> ArcScape v2.00  By David Lawrence  For Archimedes only ( (C) BAU September 1989 2! Menu and load/save added by < J.G.Harston, 28-Aug-1990 F: P,F$="":valid%=:land%=:mode%=13:A%=(-) Z err d n 13:menu x key%=1 :key%=1:getvars  key%=2 :key%=2:load  key%=3 save  key%=4 rand / key%=5 '8"Use bank switching?";:sw%=yn key%=6 mode%:makefaults  key%=7 mode%:landscape  key%=-6 os key%=0 Ș : menu , 13"Landscape"'9"By David Lawrence"''  8"1: Set up variables"  8"2: Load variables"  8"3: Save variables"  8"4: Set random seed" " 8"5: Set bank switching" ,'8"6: Create landscape" 6 8"7: Draw landscape" @'8"0: Exit" J valid% T"'8"Screen mode: ";mode% ^" 8"Landscape size: ";size% hM 8"xscale:";11;xscale%'8"yscale:";11;yscale%'8"zscale:";11;zscale% r3 8"Linear faults: ";"YesNo",linear*3+4,3) |5 8"Circular faults: ";"YesNo",circular*3+4,3) # 8"Number of faults: ";faults " 8"Random seed: ";rand%   '8"Variables not defined"  > land% 8"Landscape present" 8"No landscape present" '8"Press a key: "; .:key%=-48:(key%>-1 key%<10) key%=-6  key%>-1 ;key% '  : makefaults . valid% "Variables not set up.";:A%=:  rand% null=(-rand%)  colours &faults(faults) 0 levels :land%=:0,0);(width) D N: Xlandscape b" key%,step%,sc%:step%=1:sc%=0 l- land% "No landscape present.";:A%=: v-colours:: F$":valid%=:land%=:mode%=13:*. H'"Enter file to load: "F$ R8ch%=(F$): ch%=0 "File '";F$;"' not found";:A%=: \T#ch%,mode%,size%,xscale%,yscale%,zscale%,linear,circular,faults,sw%,rand%,delta f#ch%:ch%=0:init p z:  save - valid% "Variables not set up.":A%=: :*. '"Enter file to save: "F$ 5ch%=(F$): ch%=0 "Can't save '";F$;"'.";:A%=: T#ch%,mode%,size%,xscale%,yscale%,zscale%,linear,circular,faults,sw%,rand%,delta &#ch%:ch%=0:"SETTYPE "+F$+" DATA"  :  getvars %:valid%=:land%=:mode%=13:F$="" +13"Landscape"'9"By David Lawrence"'' '' 6 "Screen mode (13) ";:""mode%: mode%=0 mode%=13 ='"Size of landscape: (80) ";:""size%: size%<1 size%=80 ' size%<5 size%=4:"Size set to 4." $Txscale%=640/size%:"Scale factor in X: (";xscale%;") ";:""xs%: xs% xscale%=xs% .Tyscale%=xscale%/2:"Scale factor in Y: (";yscale%;") ";:""ys%: ys% yscale%=ys% 8Lzscale%=4:"Scale factor in Z: (";zscale%;") ";:""zs%: zs% zscale%=zs% B' L#"Linear faults? ";:linear=yn V%"Circular faults?";:circular=yn `Dfaults=100:"Number of faults: (";faults;") ";:""f: f faults=f j0'"Random number generator seed: ";:""rand% t delta=3 ~ init  : ݤyn *" (Y/N)";::G%= &DF: G%=89 G%=78 .5,8);: G%=89 "Yes ":= "No ":= :  init  land(size%,size%) ! s%(2),x%(2),y%(2),height(3)  gcol%(23),tint%(23)  ctrl% 20:sw%=  valid%=   :  colours  0,63: 69,0,0 (colours=0,0)+1 2 30,10,8:width=+1 < F: P colours=64 Z shades=23 dyellow=%001111 n i%=0 11 xcol=(i% 4)+1 tint%(i%)=(i% 4)<<6 gcol%(i%)=col<<2 tint%(i%+12)=tint%(i%) $gcol%(i%+12)=(col<<4)+(3<<2)+col   shades=12:  i%=0 15  r%,g%,b%  i%,r%,g%,b%  15   : faults(num%) " i%=1 num% ,)0,0);"Faults left:";num%-i%;" ";8; 6 circular circle @ linear line J T ^: h circle rx%=(size%)-1 |y%=(size%)-1 r%=((size%)-1)^2 add=*(1)*delta  X%=0 size% dx=(X%-x%)^2  dxsize% y2=size%-1  Y%=y1 y2 land(X%,Y%)+=add     &: 0 line : Ds%(1)=(4):s%(2)=(4) Ns%(1)<>s%(2) X b J%=1 2 lȎ s%(J%) v 1:  x%(J%)=0 y%(J%)=(size%)-1  2: x%(J%)=(size%)-1 y%(J%)=size%  3: x%(J%)=size% y%(J%)=(size%)-1  4: x%(J%)=(size%)-1  y%(J%)=0    x%(1)<>x%(2) y%(1)<>y%(2)  !M=(y%(2)-y%(1))/(x%(2)-x%(1)) C=y%(1)-M*x%(1)  add=*(1)*delta * X%=0 size% 4 Y%=M*X%+C > Y%<0 Y%=0 H Y%<= size% R y%=Y% size% \land(X%,y%)+=add f p z  :  levels  base=0  peak=0 +land(size%,size%)=land(size%-1,size%-1)  X%=0 size%-1 #land(X%,size%)=land(X%,size%-1) #land(size%,X%)=land(size%-1,X%)  Y%=0 size%-1 Bav=(land(X%,Y%)+land(X%,Y%+1)+land(X%+1,Y%)+land(X%+1,Y%+1))/4  avpeak peak=av   #water=(Ǝ land())/(size%*size%) $range=(peak-water)/shades .depth=(water-base)/12 8 B: L draw V I%=0 size%-1 ` J%=0 size%-1 jpatch(I%,J%) t I%=size%-1 side(col%) ~ edge(col%)  black 3d(4,size%,size%,water) 3d(5,size%,size%,base) 3dd(5,size%,size%)  : patch(X%,Y%)  range=0 range=1  depth=0 depth=1 height(0)=land(X%,Y%)-water !height(1)=land(X%+1,Y%)-water #height(2)=land(X%+1,Y%+1)-water !height(3)=land(X%,Y%+1)-water av%=(Ǝ height())/4 (col%=av%/range 2sea%=av%/depth < col%<0 col%=0 F sea%>0 sea%=0 P F$="FN" Z i%=0 3 d height(i%)<0 n F$+="b" x F$+="a"   sea(sea%+11) green(col%) null=(F$)  : edge(col%) blue(0) 3d(4,I%,size%,base) 3d(4,I%+1,size%,base) 3d(85,I%,size%,water) 3d(85,I%+1,size%,water)  black 3d(5,I%,size%,water) " green(0) ,3d(4,I%,size%,base) 63d(4,I%+1,size%,base) @3dd(85,I%,size%) J3dd(85,I%+1,size%) T black ^3dd(5,I%,size%) h r: |side(col%) blue(0) 3d(4,size%,J%,base) 3d(4,size%,J%+1,base) 3d(85,size%,J%,water) 3d(85,size%,J%+1,water) black 3d(5,size%,J%,water) green(0) 3d(4,size%,J%,base) 3d(4,size%,J%+1,base) 3dd(85,size%,J%) 3dd(85,size%,J%+1) black 3dd(5,size%,J%)  : &sea(col%) 0blue(col%) :3d(4,X%,Y%,water) D3d(4,X%+1,Y%,water) N3d(85,X%,Y%+1,water) X3d(85,X%+1,Y%+1,water) b l: v ݤaaaa 3dd(4,X%,Y%) 3dd(4,X%+1,Y%) 3dd(85,X%,Y%+1) 3dd(85,X%+1,Y%+1) =0 : ݤaaab 3dd(4,X%,Y%) 3dd(4,X%+1,Y%) 3dm(85,3) 3dd(85,X%+1,Y%+1) 3dm(85,2) yellow  3dm(5,3) =0 : ݤaaba *3dd(4,X%,Y%) 43dd(4,X%,Y%+1) >3dd(85,X%+1,Y%) H3dm(85,2) R3dm(85,1) \ yellow f 3dm(5,2) p=0 z: ݤaabb 3dd(4,X%,Y%) 3dd(4,X%+1,Y%) 3dm(85,3) 3dm(85,1) yellow 3dm(5,3) =0 : ݤabaa 3dd(4,X%,Y%+1) 3dd(4,X%+1,Y%+1) 3dd(85,X%,Y%) 3dm(85,1) 3dm(85,0)  yellow $ 3dm(5,1) .=0 8: B ݤabab L tri(0) Vgreen(col%) ` tri(2) j=0 t: ~ ݤabba 3dd(4,X%,Y%) 3dd(4,X%,Y%+1) 3dm(85,0) 3dm(85,2)  yellow  3dm(5,0) =0 :  ݤabbb  tri(0) =0 :  ݤbaaa  3dm(4,3)  3dm(4,0) 3dd(85,X%,Y%+1) (3dd(85,X%+1,Y%) 23dd(85,X%+1,Y%+1) <=0 F: P ݤbaab Z3dd(4,X%+1,Y%+1) d3dd(4,X%+1,Y%) n3dm(85,2) x3dm(85,0)  yellow 3dm(85,2) =0 :  ݤbaba  tri(1) green(col%)  tri(3) =0 :  ݤbabb  tri(1) =0 :  ݤbbaa 3dd(4,X%+1,Y%+1) "3dd(4,X%,Y%+1) ,3dm(85,1) 63dm(85,3) @ yellow J 3dm(5,1) T=0 ^: h ݤbbab r tri(2) |=0 :  ݤbbba  tri(3) =0 :  ݤbbbb =0 :  tri(t%)  Ȏ t%  0: tat(X%,Y%,3,0)  1: tat(X%+1,Y%,0,1)  2: tat(X%+1,Y%+1,1,2) & 3: 0tat(X%,Y%+1,2,3) : D N: Xtat(x%,y%,s1%,s2%) b3dd(4,x%,y%) l3dm(4,s1%) v3dm(85,s2%)  yellow 3dm(5,s1%)  : 3dm(o%,s%)  Ȏ s%  0: mid(o%,X%,Y%,1,0,0,1)  1: mid(o%,X%+1,Y%,0,1,1,2)  2: mid(o%,X%,Y%+1,1,0,3,2)  3: mid(o%,X%,Y%,0,1,0,3)     : *mid(o%,xs,ys,xa,ya,zs,ze) 4(d=height(zs)/(height(zs)-height(ze)) > xa H3d(o%,xs+d*xa,ys,water) R \3d(o%,xs,ys+d*ya,water) f p z: 3dd(o%,X,Y) 3d(o%,X,Y,land(X,Y))  : 3d(o%,X,Y,Z) 6 o%,640+(X-Y)*xscale%,850-(X+Y)*yscale%+Z*zscale%  :  black  0 Ȝ 0  : blue(level%)  colours=64 . ((level% 4)+1)<<4 Ȝ ((level% 3)<<6)  $ 1 . 8 B: L yellow V colours=64 ` yellow Ȝ 192 j t 2 ~  : green(level%)  colours=64 d gcol%((level%(level%<24))+(23 (level%>23))) Ȝ tint%((level%(level%<24))+(23 (level%>23)))   3+level%   : bank(x%,y%): X%,Y%,A% X%=ctrl%:Y%=X%256:A%=22 X%?0=x%:X%!1=y%:&FFF1:  : os :"*"F$:F$:F$="" ( 2: <ݤerr: =17 -1=0:= F$:ch%=ch%:ch%:A%=ch%:ch%=0:#A% P A%=:=-1 Z: d8 &00,&00,&00, &10,&20,&90, &F0,&E0,&10, &00,&30,&00 n8 &00,&40,&00, &00,&50,&00, &00,&60,&00, &00,&70,&00 x8 &00,&80,&00, &00,&90,&00, &20,&A0,&20, &40,&B0,&40 8 &60,&C0,&60, &90,&D0,&90, &D0,&E0,&D0, &F0,&F0,&F0