|--| Are we at the end of a line?
|end of line?, x| x, ~end of line
|end of line?| end of line

|--| Are we at the end of the screen?
|end of screen?, y| y, ~end of screen
|end of screen?| end of screen

|--| Copy the pixel coordinates from `x/y` to `@pixel-x/@pixel-y`.
|pixel_x=x, x|*x, @pixel-x, pixel_x=x
|pixel_x=x|
|pixel_y=y, y|*y, @pixel-y, pixel_y=y
|pixel_y=y|

|--| Compute some pixel colors based on the `x/y` coordinates.
|--| r = x, g = y, b = x + y
|pixel_red=x, x| *x, @pixel-r, pixel_red=x
|pixel_red=x|

|pixel_green=y, y| *y, @pixel-g, pixel_green=y
|pixel_green=y|

|pixel_blue=x+y, x| *x, @pixel-b, pixel_blue=x+y
|pixel_blue=x+y, y| *y, @pixel-b, pixel_blue=x+y
|pixel_blue=x+y|

|--| Copy temporaries back to their respective variables.
|*x|x
|*y|y

|plot_pixel| pixel_x, pixel_y, pixel_red, pixel_green, pixel_blue, set pixel 
|pixel_x| pixel_x=x:399
|pixel_y| pixel_y=y:399
|pixel_red| pixel_red=x:399
|pixel_green| pixel_green=y:399
|pixel_blue| pixel_blue=x+y:399
|set pixel| @set-pixel

|--| Move the `x/y` coordinates.
|x-,x|
|x-|
|y-,y|
|y-|

|--| Main loop.
|draw, end of line, x| draw, end of line, draw
|draw, end of line| draw, end of screen?, plot_pixel, @display
|draw, ~end of line| plot_pixel, x-, draw
|draw, end of screen| plot_pixel, x:399, y:399, @display
|draw, ~end of screen, x| draw, ~end of screen
|draw, ~end of screen| y-,x:399, draw
|draw| end of line?, draw

|--| clean up remaining facts
|x|
|y|

|--| run the program
||x:399,y:399
||draw
