begin
library A6;
integer GP0;
procedure claim plotter buffer (plotter);
integer plotter;
kdf9 2/0/0/0;
SET 16; SET 5; OUT; ={plotter}; exit
algol
procedure free plotter buffer (GP0);
value GP0; integer GP0;
kdf9 2/0/0/0;
{GP0}; SET6; OUT; exit
algol
procedure next (direction, GP0);
value direction, GP0; integer direction, GP0;
kdf9 2/1/0/1;
{direction}; =V0;
{GP0}; =C15;
SETAV0; DUP; =I15; =M15;
POCQ15;
exit
algol
procedure move (steps, direction);
value steps, direction; integer steps, direction;
begin
integer length;
for length := 1 step 1 until steps do
begin
next(direction, GP0);
end
end move;
integer stop drawing, start drawing;
integer up, down, left, right, up left, up right, down left, down right;
start drawing := 16;
stop drawing := 32;
up := 1;
down := 2;
right := 4;
left := 8;
down left := down + left;
down right := down + right;
up left := up + left;
up right := up + right;
claim plotter buffer(GP0);
next(stop drawing, GP0);
move(2000, up left);
next(start drawing, GP0);
move(1000, left);
move(1000, up);
move(1000, right);
move(1000, down);
move(1000, up left);
next(stop drawing, GP0);
move(1000, down);
next(start drawing, GP0);
move(1000, up right);
free plotter buffer (GP0);
end
|