40END

50 DEFPR0Cvariables

60 scale=0.6

70 xstart=300

80 ystart--200

90 xdoor=360

100 xdist=900

110 ydoor=500

120 ydist=300

130 xbump=300*scale

140 bump_rad=50*scale

150 xchim=100*scale

160 ychim=200*scale

170 chimstart=60*scale

180 xdoorstart=xstart+(xdist*scale)

190 xwind=xdoorstart-30*scale

200 ywind=ystart+(ydist-30)*scale

210 xwinddist=300*scale

220 ywinddist=200*scale

230 wheel_dist=130*scale

240 wheel_rad=100*scale

250 ENDPROC

260 DEFPROCengine

270 PROCrectangle(xstart,ystart,xdist*scale,ydist*scale,1)

280 PROCrectangle(xdoorstart ,ystart,-xdoor*scale ,ydoor*scale,1)

290 PROCrectangle(xwind,ywind,-xwinddist,ywinddist,6)

300 PROCrectangle(xstart+chimstart ,ystart+(ydist*scale) ,xchim,ychim,1)

310 PROCcirc(xstart+wheeldist,ystart,wheel_rad,4)

320 PROCcirc(xdoorstart-wheel_dist,ystart,wheel_rad,4)

330 PROCcirc(xstart+xbump ,ystart+(ydist*scale) ,bump_rad,1)

340 ENDPROC

350 DEFPROCrectangle(x,y,xmove,ymove,col)

360 GCOL 0,col

370 MOVE x,y

380 PLOT 97,xmove,ymove

390 ENDPROC

400 DEFPR0Ccirc(x,y,rad,col)

410 GCOL 0,col

420 MOVE x,y

430 PLOT 153,rad,0

440ENDPROC

The procedures to draw the engine use relative MOVE and DRAW commands.

PROCvariables sets the values of the variables used throughout the rest of the

C 32