DIM Code% &10000

REM shape of the data:
REM .Vertices is a table of the vertices:
REM DCD x :DCD y :DCD z         (x left-right; y up-down; z in-out)
REM
REM .Faces is a table of faces:
REM = control := v0 := v1 := v2 :....
REM where v0,v1,v2,.... are the vertices to this face and
REM control is specifier:
REM top bit means always plot the next face after this one in the same colour
REM Next to top bits means 'be a bit darker'
REM bottom 6 bits mean number of edges to this face.
REM If control is 0, then that's the end of the table


FOR Shape = 0 TO 34

FOR Pass = 8 TO 10 STEP 2

P%=Code%
L%=Code%+&10000

 [ OPT Pass
 DCD Vertices-Code%
 DCD EndVertices-Vertices
 DCD Faces-Code%
 ]

CASE Shape OF
WHEN 0
  [ OPT Pass                            ; House.

  .Vertices
    DCD -100 :DCD - 75 :DCD -120
    DCD -100 :DCD - 75 :DCD +120
    DCD -100 :DCD + 50 :DCD -120
    DCD -100 :DCD + 50 :DCD +120
    DCD +100 :DCD - 75 :DCD -120
    DCD +100 :DCD - 75 :DCD +120
    DCD +100 :DCD + 50 :DCD -120
    DCD +100 :DCD + 50 :DCD +120
    DCD    0 :DCD +100 :DCD -120
    DCD    0 :DCD +100 :DCD +120
    DCD +105 :DCD - 75 :DCD -100 ; Slightly out from the wall so that it doesn't get covered
    DCD +105 :DCD + 25 :DCD -100
    DCD +105 :DCD + 25 :DCD - 40
    DCD +105 :DCD - 75 :DCD - 40
    DCD +105 :DCD - 35 :DCD - 20
    DCD +105 :DCD + 25 :DCD - 20
    DCD +105 :DCD + 25 :DCD +100
    DCD +105 :DCD - 35 :DCD +100
  .EndVertices

  .Faces
    = &05  :=   4 :=  0 :=  2 :=  8 :=  6
    = &05  :=   1 :=  5 :=  7 :=  9 :=  3
    = &04  :=   4 :=  6 :=  7 :=  5
    = &04  :=   1 :=  3 :=  2 :=  0
    = &04  :=   2 :=  3 :=  9 :=  8
    = &04  :=   8 :=  9 :=  7 :=  6
    = &04  :=   0 :=  4 :=  5 :=  1
    = &C4  :=  10 := 11 := 12 := 13
    = &04  :=  14 := 15 := 16 := 17
    = 0
    ALIGN
  ]
WHEN 1
  [ OPT Pass                            ; Open dodecahedron.

  .Vertices
    DCD   43 :DCD  108 :DCD  -26
    DCD   69 :DCD   83 :DCD   51
    DCD    0 :DCD   68 :DCD   98
    DCD  -69 :DCD   83 :DCD   51
    DCD  -43 :DCD  108 :DCD  -26
    DCD   -0 :DCD  -68 :DCD  -98
    DCD   69 :DCD  -83 :DCD  -51
    DCD   43 :DCD -108 :DCD   26
    DCD  -43 :DCD -108 :DCD   26
    DCD  -69 :DCD  -83 :DCD  -51
    DCD  -69 :DCD   51 :DCD  -83
    DCD   69 :DCD   51 :DCD  -83
    DCD  111 :DCD   10 :DCD   41
    DCD    0 :DCD  -15 :DCD  118
    DCD -111 :DCD   10 :DCD   41
    DCD   -0 :DCD   15 :DCD -118
    DCD  111 :DCD  -10 :DCD  -41
    DCD   69 :DCD  -51 :DCD   83
    DCD  -69 :DCD  -51 :DCD   83
    DCD -111 :DCD  -10 :DCD  -41
  .EndVertices

  .Faces
    = &45  :=   0 :=  4 := 10 := 15 := 11
    = &45  :=   1 :=  0 := 11 := 16 := 12
    = &45  :=   2 :=  1 := 12 := 17 := 13
    = &45  :=   3 :=  2 := 13 := 18 := 14
    = &45  :=   4 :=  3 := 14 := 19 := 10
    = &45  :=  15 := 10 := 19 :=  9 :=  5
    = &45  :=  19 := 14 := 18 :=  8 :=  9
    = &45  :=  18 := 13 := 17 :=  7 :=  8
    = &45  :=  17 := 12 := 16 :=  6 :=  7
    = &45  :=  16 := 11 := 15 :=  5 :=  6

    = &05  :=  11 := 15 := 10 :=  4 :=  0
    = &05  :=  12 := 16 := 11 :=  0 :=  1
    = &05  :=  13 := 17 := 12 :=  1 :=  2
    = &05  :=  14 := 18 := 13 :=  2 :=  3
    = &05  :=  10 := 19 := 14 :=  3 :=  4
    = &05  :=   5 :=  9 := 19 := 10 := 15
    = &05  :=   9 :=  8 := 18 := 14 := 19
    = &05  :=   8 :=  7 := 17 := 13 := 18
    = &05  :=   7 :=  6 := 16 := 12 := 17
    = &05  :=   6 :=  5 := 15 := 11 := 16
    = 0
    ALIGN
  ]
WHEN 2
  [ OPT Pass                            ; Thin walled open cube.

  .Vertices
    DCD - 90 :DCD - 90 :DCD - 90   ; 0
    DCD + 90 :DCD - 90 :DCD - 90   ; 1
    DCD + 90 :DCD - 90 :DCD + 90   ; 2
    DCD - 90 :DCD - 90 :DCD + 90   ; 3
    DCD - 90 :DCD + 90 :DCD - 90   ; 4
    DCD + 90 :DCD + 90 :DCD - 90   ; 5
    DCD + 90 :DCD + 90 :DCD + 90   ; 6
    DCD - 90 :DCD + 90 :DCD + 90   ; 7
  .EndVertices

  .Faces
    = &44  :=   3 :=  2 :=  1 :=  0
    = &44  :=   1 :=  5 :=  4 :=  0
    = &44  :=   2 :=  6 :=  5 :=  1
    = &44  :=   3 :=  7 :=  6 :=  2
    = &44  :=   0 :=  4 :=  7 :=  3

    = &04  :=   0 :=  1 :=  2 :=  3
    = &04  :=   0 :=  4 :=  5 :=  1
    = &04  :=   1 :=  5 :=  6 :=  2
    = &04  :=   2 :=  6 :=  7 :=  3
    = &04  :=   3 :=  7 :=  4 :=  0
    = 0
    ALIGN
  ]
WHEN 3
  [ OPT Pass                            ; Thick walled open cube.

  .Vertices
    DCD - 90 :DCD - 90 :DCD - 90   ; 0
    DCD + 90 :DCD - 90 :DCD - 90   ; 1
    DCD + 90 :DCD - 90 :DCD + 90   ; 2
    DCD - 90 :DCD - 90 :DCD + 90   ; 3
    DCD - 90 :DCD + 90 :DCD - 90   ; 4
    DCD + 90 :DCD + 90 :DCD - 90   ; 5
    DCD + 90 :DCD + 90 :DCD + 90   ; 6
    DCD - 90 :DCD + 90 :DCD + 90   ; 7
    DCD - 70 :DCD - 70 :DCD - 70   ; 8
    DCD + 70 :DCD - 70 :DCD - 70   ; 9
    DCD + 70 :DCD - 70 :DCD + 70   ; 10
    DCD - 70 :DCD - 70 :DCD + 70   ; 11
    DCD - 70 :DCD + 90 :DCD - 70   ; 12
    DCD + 70 :DCD + 90 :DCD - 70   ; 13
    DCD + 70 :DCD + 90 :DCD + 70   ; 14
    DCD - 70 :DCD + 90 :DCD + 70   ; 15
  .EndVertices

  .Faces
    = &44  :=  11 := 10 :=  9 :=  8
    = &44  :=   9 := 13 := 12 :=  8
    = &44  :=  10 := 14 := 13 :=  9
    = &44  :=  11 := 15 := 14 := 10
    = &44  :=   8 := 12 := 15 := 11
    = &04  :=   0 :=  1 :=  2 :=  3
    = &04  :=   0 :=  4 :=  5 :=  1
    = &04  :=   1 :=  5 :=  6 :=  2
    = &04  :=   2 :=  6 :=  7 :=  3
    = &04  :=   3 :=  7 :=  4 :=  0
    = &84  :=   7 :=  6 :=  5 :=  4
    = &04  :=  12 := 13 := 14 := 15
    = 0
    ALIGN
  ]
WHEN 4
  [ OPT Pass                            ; Tube with post.

  .Vertices
    DCD - 90 :DCD - 90 :DCD - 90   ; 0
    DCD + 90 :DCD - 90 :DCD - 90   ; 1
    DCD + 90 :DCD - 90 :DCD + 90   ; 2
    DCD - 90 :DCD - 90 :DCD + 90   ; 3
    DCD - 90 :DCD + 90 :DCD - 90   ; 4
    DCD + 90 :DCD + 90 :DCD - 90   ; 5
    DCD + 90 :DCD + 90 :DCD + 90   ; 6
    DCD - 90 :DCD + 90 :DCD + 90   ; 7
    DCD - 70 :DCD - 90 :DCD - 70   ; 8
    DCD + 70 :DCD - 90 :DCD - 70   ; 9
    DCD + 70 :DCD - 90 :DCD + 70   ; 10
    DCD - 70 :DCD - 90 :DCD + 70   ; 11
    DCD - 70 :DCD + 90 :DCD - 70   ; 12
    DCD + 70 :DCD + 90 :DCD - 70   ; 13
    DCD + 70 :DCD + 90 :DCD + 70   ; 14
    DCD - 70 :DCD + 90 :DCD + 70   ; 15

    DCD - 25 :DCD - 90 :DCD - 25   ; 16
    DCD + 25 :DCD - 90 :DCD - 25   ; 17
    DCD + 25 :DCD - 90 :DCD + 25   ; 18
    DCD - 25 :DCD - 90 :DCD + 25   ; 19
    DCD - 25 :DCD + 90 :DCD - 25   ; 20
    DCD + 25 :DCD + 90 :DCD - 25   ; 21
    DCD + 25 :DCD + 90 :DCD + 25   ; 22
    DCD - 25 :DCD + 90 :DCD + 25   ; 23

  .EndVertices

  .Faces
    = &44  :=   9 := 13 := 12 :=  8
    = &44  :=  10 := 14 := 13 :=  9
    = &44  :=  11 := 15 := 14 := 10
    = &44  :=   8 := 12 := 15 := 11

    = &44  :=  16 := 20 := 21 := 17
    = &44  :=  17 := 21 := 22 := 18
    = &44  :=  18 := 22 := 23 := 19
    = &44  :=  19 := 23 := 20 := 16

    = &84  :=   7 :=  6 :=  5 :=  4
    = &84  :=  12 := 13 := 14 := 15
    = &04  :=  20 := 21 := 22 := 23
    = &84  :=   0 :=  1 :=  2 :=  3
    = &84  :=  11 := 10 :=  9 :=  8
    = &04  :=  16 := 17 := 18 := 19

    = &04  :=   0 :=  4 :=  5 :=  1
    = &04  :=   1 :=  5 :=  6 :=  2
    = &04  :=   2 :=  6 :=  7 :=  3
    = &04  :=   3 :=  7 :=  4 :=  0
    = 0
    ALIGN
  ]
WHEN 5
  [ OPT Pass                            ; Icosahedron.

  .Vertices
    DCD    0 :DCD  114 :DCD   37
    DCD    0 :DCD   84 :DCD  -85
    DCD  102 :DCD   61 :DCD  -15
    DCD   63 :DCD   24 :DCD   99
    DCD  -63 :DCD   24 :DCD   99
    DCD -102 :DCD   61 :DCD  -15
    DCD   -0 :DCD -114 :DCD  -37
    DCD   63 :DCD  -24 :DCD  -99
    DCD  102 :DCD  -61 :DCD   15
    DCD    0 :DCD  -84 :DCD   85
    DCD -102 :DCD  -61 :DCD   15
    DCD  -63 :DCD  -24 :DCD  -99
  .EndVertices

  .Faces
    = &03  :=   2 :=  1 :=  0
    = &03  :=   3 :=  2 :=  0
    = &03  :=   4 :=  3 :=  0
    = &03  :=   5 :=  4 :=  0
    = &03  :=   1 :=  5 :=  0
    = &03  :=  11 :=  7 :=  6
    = &03  :=   7 :=  8 :=  6
    = &03  :=   8 :=  9 :=  6
    = &03  :=   9 := 10 :=  6
    = &03  :=  10 := 11 :=  6
    = &03  :=  11 :=  5 :=  1
    = &03  :=   7 :=  1 :=  2
    = &03  :=   8 :=  2 :=  3
    = &03  :=   9 :=  3 :=  4
    = &03  :=  10 :=  4 :=  5
    = &03  :=   7 := 11 :=  1
    = &03  :=   8 :=  7 :=  2
    = &03  :=   9 :=  8 :=  3
    = &03  :=  10 :=  9 :=  4
    = &03  :=  11 := 10 :=  5
    = 0
    ALIGN
  ]
WHEN 6
  [ OPT Pass                            ; Two cubes.

  .Vertices
    DCD + 40 :DCD - 40 :DCD - 40   ; 0
    DCD +120 :DCD - 40 :DCD - 40   ; 1
    DCD +120 :DCD - 40 :DCD + 40   ; 2
    DCD + 40 :DCD - 40 :DCD + 40   ; 3
    DCD + 40 :DCD + 40 :DCD - 40   ; 4
    DCD +120 :DCD + 40 :DCD - 40   ; 5
    DCD +120 :DCD + 40 :DCD + 40   ; 6
    DCD + 40 :DCD + 40 :DCD + 40   ; 7

    DCD -120 :DCD - 40 :DCD - 40   ; 8
    DCD - 40 :DCD - 40 :DCD - 40   ; 9
    DCD - 40 :DCD - 40 :DCD + 40   ; 10
    DCD -120 :DCD - 40 :DCD + 40   ; 11
    DCD -120 :DCD + 40 :DCD - 40   ; 12
    DCD - 40 :DCD + 40 :DCD - 40   ; 13
    DCD - 40 :DCD + 40 :DCD + 40   ; 14
    DCD -120 :DCD + 40 :DCD + 40   ; 15
  .EndVertices

  .Faces
    = &04  :=   3 :=  7 :=  4 :=  0
    = &04  :=   9 := 13 := 14 := 10

    = &04  :=   0 :=  1 :=  2 :=  3
    = &04  :=   8 :=  9 := 10 := 11
    = &04  :=   7 :=  6 :=  5 :=  4
    = &04  :=  15 := 14 := 13 := 12
    = &04  :=   0 :=  4 :=  5 :=  1
    = &04  :=   8 := 12 := 13 :=  9
    = &04  :=   2 :=  6 :=  7 :=  3
    = &04  :=  10 := 14 := 15 := 11

    = &04  :=   1 :=  5 :=  6 :=  2
    = &04  :=  11 := 15 := 12 :=  8
    = 0
    ALIGN
  ]
WHEN 7
  [ OPT Pass                            ; Open cube.

  .Vertices
    DCD -100 :DCD -100 :DCD -100   ; 0
    DCD +100 :DCD -100 :DCD -100   ; 1
    DCD +100 :DCD -100 :DCD +100   ; 2
    DCD -100 :DCD -100 :DCD +100   ; 3
    DCD -100 :DCD +100 :DCD -100   ; 4
    DCD +100 :DCD +100 :DCD -100   ; 5
    DCD +100 :DCD +100 :DCD +100   ; 6
    DCD -100 :DCD +100 :DCD +100   ; 7

    DCD - 60 :DCD -100 :DCD - 60   ; 8
    DCD + 60 :DCD -100 :DCD - 60   ; 9
    DCD + 60 :DCD -100 :DCD + 60   ; 10
    DCD - 60 :DCD -100 :DCD + 60   ; 11

    DCD - 60 :DCD +100 :DCD + 60   ; 12
    DCD + 60 :DCD +100 :DCD + 60   ; 13
    DCD + 60 :DCD +100 :DCD - 60   ; 14
    DCD - 60 :DCD +100 :DCD - 60   ; 15

    DCD - 60 :DCD - 60 :DCD -100   ; 16
    DCD - 60 :DCD + 60 :DCD -100   ; 17
    DCD + 60 :DCD + 60 :DCD -100   ; 18
    DCD + 60 :DCD - 60 :DCD -100   ; 19

    DCD +100 :DCD - 60 :DCD - 60   ; 20
    DCD +100 :DCD + 60 :DCD - 60   ; 21
    DCD +100 :DCD + 60 :DCD + 60   ; 22
    DCD +100 :DCD - 60 :DCD + 60   ; 23

    DCD + 60 :DCD - 60 :DCD +100   ; 24
    DCD + 60 :DCD + 60 :DCD +100   ; 25
    DCD - 60 :DCD + 60 :DCD +100   ; 26
    DCD - 60 :DCD - 60 :DCD +100   ; 27

    DCD -100 :DCD - 60 :DCD + 60   ; 28
    DCD -100 :DCD + 60 :DCD + 60   ; 29
    DCD -100 :DCD + 60 :DCD - 60   ; 30
    DCD -100 :DCD - 60 :DCD - 60   ; 31

    DCD - 80 :DCD - 80 :DCD - 80   ; 32
    DCD + 80 :DCD - 80 :DCD - 80   ; 33
    DCD + 80 :DCD - 80 :DCD + 80   ; 34
    DCD - 80 :DCD - 80 :DCD + 80   ; 35
    DCD - 80 :DCD + 80 :DCD - 80   ; 36
    DCD + 80 :DCD + 80 :DCD - 80   ; 37
    DCD + 80 :DCD + 80 :DCD + 80   ; 38
    DCD - 80 :DCD + 80 :DCD + 80   ; 39
  .EndVertices

  .Faces
    = &46  :=   8 :=  9 := 33 := 19 := 16 :=32
    = &46  :=   9 := 10 := 34 := 23 := 20 :=33
    = &46  :=  10 := 11 := 35 := 27 := 24 :=34
    = &46  :=  11 :=  8 := 32 := 31 := 28 :=35
    = &46  :=  12 := 13 := 38 := 25 := 26 :=39
    = &46  :=  13 := 14 := 37 := 21 := 22 :=38
    = &46  :=  14 := 15 := 36 := 17 := 18 :=37
    = &46  :=  15 := 12 := 39 := 29 := 30 :=36
    = &46  :=  16 := 17 := 36 := 30 := 31 :=32
    = &46  :=  20 := 21 := 37 := 18 := 19 :=33
    = &46  :=  24 := 25 := 38 := 22 := 23 :=34
    = &46  :=  28 := 29 := 39 := 26 := 27 :=35
    = &84  :=   0 :=  1 :=  2 :=  3
    = &04  :=   8 :=  9 := 10 := 11
    = &84  :=   7 :=  6 :=  5 :=  4
    = &04  :=  12 := 13 := 14 := 15
    = &84  :=   0 :=  4 :=  5 :=  1
    = &04  :=  16 := 17 := 18 := 19
    = &84  :=   1 :=  5 :=  6 :=  2
    = &04  :=  20 := 21 := 22 := 23
    = &84  :=   2 :=  6 :=  7 :=  3
    = &04  :=  24 := 25 := 26 := 27
    = &84  :=   3 :=  7 :=  4 :=  0
    = &04  :=  28 := 29 := 30 := 31
    = 0
    ALIGN
  ]
WHEN 8
  [ OPT Pass                            ; Open tetrahedron

  .Vertices
    DCD -126 :DCD +63*SQR2 :DCD    0    ; 0
    DCD +126 :DCD +63*SQR2 :DCD    0    ; 1
    DCD    0 :DCD -63*SQR2 :DCD -126    ; 2
    DCD    0 :DCD -63*SQR2 :DCD +126    ; 3

    DCD - 84 :DCD +49*SQR2 :DCD - 14    ; 4
    DCD + 84 :DCD +49*SQR2 :DCD - 14    ; 5
    DCD    0 :DCD -35*SQR2 :DCD - 98    ; 6

    DCD - 84 :DCD +49*SQR2 :DCD + 14    ; 7
    DCD    0 :DCD -35*SQR2 :DCD + 98    ; 8
    DCD + 84 :DCD +49*SQR2 :DCD + 14    ; 9

    DCD - 98 :DCD +35*SQR2 :DCD    0    ; 10
    DCD - 14 :DCD -49*SQR2 :DCD - 84    ; 11
    DCD - 14 :DCD -49*SQR2 :DCD + 84    ; 12

    DCD + 98 :DCD +35*SQR2 :DCD    0    ; 13
    DCD + 14 :DCD -49*SQR2 :DCD + 84    ; 14
    DCD + 14 :DCD -49*SQR2 :DCD - 84    ; 15

    DCD - 98 :DCD +49*SQR2 :DCD    0    ; 16
    DCD + 98 :DCD +49*SQR2 :DCD    0    ; 17
    DCD    0 :DCD -49*SQR2 :DCD - 98    ; 18
    DCD    0 :DCD -49*SQR2 :DCD + 98    ; 19
  .EndVertices

  .Faces
    = &46  :=  16 :=  4 :=  5  := 17 :=  9 :=  7
    = &46  :=  16 := 10 := 11  := 18 :=  6 :=  4
    = &46  :=  16 :=  7 :=  8  := 19 := 12 := 10
    = &46  :=  17 :=  5 :=  6  := 18 := 15 := 13
    = &46  :=  17 := 13 := 14  := 19 :=  8 :=  9
    = &46  :=  18 := 11 := 12  := 19 := 14 := 15

    = &83  :=   0 :=  1 :=  2           ; Midpoint =    0 , +21*SQR2 , -42
    = &03  :=   4 :=  5 :=  6
    = &83  :=   0 :=  3 :=  1           ; Midpoint =    0 , +21*SQR2 , +42
    = &03  :=   7 :=  8 :=  9
    = &83  :=   0 :=  2 :=  3           ; Midpoint =  -42 , -21*SQR2 ,   0
    = &03  :=  10 := 11 := 12
    = &83  :=   1 :=  3 :=  2           ; Midpoint =  +42 , -21*SQR2 ,   0
    = &03  :=  13 := 14 := 15
    = 0
    ALIGN
  ]
WHEN 9
  [ OPT Pass                            ; Dodecahedron.

  .Vertices
    DCD   43 :DCD  108 :DCD  -26
    DCD   69 :DCD   83 :DCD   51
    DCD    0 :DCD   68 :DCD   98
    DCD  -69 :DCD   83 :DCD   51
    DCD  -43 :DCD  108 :DCD  -26
    DCD   -0 :DCD  -68 :DCD  -98
    DCD   69 :DCD  -83 :DCD  -51
    DCD   43 :DCD -108 :DCD   26
    DCD  -43 :DCD -108 :DCD   26
    DCD  -69 :DCD  -83 :DCD  -51
    DCD  -69 :DCD   51 :DCD  -83
    DCD   69 :DCD   51 :DCD  -83
    DCD  111 :DCD   10 :DCD   41
    DCD    0 :DCD  -15 :DCD  118
    DCD -111 :DCD   10 :DCD   41
    DCD   -0 :DCD   15 :DCD -118
    DCD  111 :DCD  -10 :DCD  -41
    DCD   69 :DCD  -51 :DCD   83
    DCD  -69 :DCD  -51 :DCD   83
    DCD -111 :DCD  -10 :DCD  -41
  .EndVertices

  .Faces
    = &05  :=   4 :=  3 :=  2 :=  1 :=  0
    = &05  :=  11 := 15 := 10 :=  4 :=  0
    = &05  :=  12 := 16 := 11 :=  0 :=  1
    = &05  :=  13 := 17 := 12 :=  1 :=  2
    = &05  :=  14 := 18 := 13 :=  2 :=  3
    = &05  :=  10 := 19 := 14 :=  3 :=  4
    = &05  :=   5 :=  6 :=  7 :=  8 :=  9
    = &05  :=   5 :=  9 := 19 := 10 := 15
    = &05  :=   9 :=  8 := 18 := 14 := 19
    = &05  :=   8 :=  7 := 17 := 13 := 18
    = &05  :=   7 :=  6 := 16 := 12 := 17
    = &05  :=   6 :=  5 := 15 := 11 := 16
    = 0
    ALIGN
  ]
WHEN 10,11
  [ OPT Pass                            ; Truncated icosahedron.

  .Vertices
    DCD    0 :DCD  130 :DCD   -0
    DCD   43 :DCD  120 :DCD   29
    DCD   26 :DCD  103 :DCD   76
    DCD  -26 :DCD  103 :DCD   76
    DCD  -43 :DCD  120 :DCD   29
    DCD    0 :DCD  120 :DCD  -52
    DCD  -43 :DCD   98 :DCD  -74
    DCD  -26 :DCD   64 :DCD -110
    DCD   26 :DCD   64 :DCD -110
    DCD   43 :DCD   98 :DCD  -74
    DCD   85 :DCD   98 :DCD    6
    DCD   85 :DCD   88 :DCD  -45
    DCD  111 :DCD   43 :DCD  -52
    DCD  128 :DCD   26 :DCD   -5
    DCD  111 :DCD   60 :DCD   31
    DCD   53 :DCD   64 :DCD  100
    DCD   95 :DCD   43 :DCD   78
    DCD   95 :DCD   -8 :DCD   89
    DCD   53 :DCD  -19 :DCD  118
    DCD   26 :DCD   26 :DCD  125
    DCD  -53 :DCD   64 :DCD  100
    DCD  -26 :DCD   26 :DCD  125
    DCD  -53 :DCD  -19 :DCD  118
    DCD  -95 :DCD   -8 :DCD   89
    DCD  -95 :DCD   43 :DCD   78
    DCD  -85 :DCD   98 :DCD    6
    DCD -111 :DCD   60 :DCD   31
    DCD -128 :DCD   26 :DCD   -5
    DCD -111 :DCD   43 :DCD  -52
    DCD  -85 :DCD   88 :DCD  -45
    DCD   26 :DCD -103 :DCD  -76
    DCD  -26 :DCD -103 :DCD  -76
    DCD  -43 :DCD -120 :DCD  -29
    DCD   -0 :DCD -130 :DCD    0
    DCD   43 :DCD -120 :DCD  -29
    DCD   53 :DCD   19 :DCD -118
    DCD   26 :DCD  -26 :DCD -125
    DCD   53 :DCD  -64 :DCD -100
    DCD   95 :DCD  -43 :DCD  -78
    DCD   95 :DCD    8 :DCD  -89
    DCD  128 :DCD  -26 :DCD    5
    DCD  111 :DCD  -60 :DCD  -31
    DCD   85 :DCD  -98 :DCD   -6
    DCD   85 :DCD  -88 :DCD   45
    DCD  111 :DCD  -43 :DCD   52
    DCD   26 :DCD  -64 :DCD  110
    DCD   43 :DCD  -98 :DCD   74
    DCD    0 :DCD -120 :DCD   52
    DCD  -43 :DCD  -98 :DCD   74
    DCD  -26 :DCD  -64 :DCD  110
    DCD -111 :DCD  -43 :DCD   52
    DCD  -85 :DCD  -88 :DCD   45
    DCD  -85 :DCD  -98 :DCD   -6
    DCD -111 :DCD  -60 :DCD  -31
    DCD -128 :DCD  -26 :DCD    5
    DCD  -95 :DCD    8 :DCD  -89
    DCD  -95 :DCD  -43 :DCD  -78
    DCD  -53 :DCD  -64 :DCD -100
    DCD  -26 :DCD  -26 :DCD -125
    DCD  -53 :DCD   19 :DCD -118
  .EndVertices
  ]
  CASE Shape OF
  WHEN 10
  [ OPT Pass                            ; Truncated icosahedron.
  .Faces
    = &05  :=   4 :=  3 :=  2 :=  1 :=  0
    = &05  :=   9 :=  8 :=  7 :=  6 :=  5
    = &05  :=  14 := 13 := 12 := 11 := 10
    = &05  :=  19 := 18 := 17 := 16 := 15
    = &05  :=  24 := 23 := 22 := 21 := 20
    = &05  :=  29 := 28 := 27 := 26 := 25
    = &05  :=  34 := 33 := 32 := 31 := 30
    = &05  :=  39 := 38 := 37 := 36 := 35
    = &05  :=  44 := 43 := 42 := 41 := 40
    = &05  :=  49 := 48 := 47 := 46 := 45
    = &05  :=  54 := 53 := 52 := 51 := 50
    = &05  :=  59 := 58 := 57 := 56 := 55

    = &06  :=   0 :=  1 := 10 := 11 :=  9 :=  5
    = &06  :=   1 :=  2 := 15 := 16 := 14 := 10
    = &06  :=   2 :=  3 := 20 := 21 := 19 := 15
    = &06  :=   3 :=  4 := 25 := 26 := 24 := 20
    = &06  :=   4 :=  0 :=  5 :=  6 := 29 := 25

    = &06  :=   8 :=  9 := 11 := 12 := 39 := 35
    = &06  :=  13 := 14 := 16 := 17 := 44 := 40
    = &06  :=  18 := 19 := 21 := 22 := 49 := 45
    = &06  :=  23 := 24 := 26 := 27 := 54 := 50
    = &06  :=  28 := 29 :=  6 :=  7 := 59 := 55

    = &06  :=   7 :=  8 := 35 := 36 := 58 := 59
    = &06  :=  12 := 13 := 40 := 41 := 38 := 39
    = &06  :=  17 := 18 := 45 := 46 := 43 := 44
    = &06  :=  22 := 23 := 50 := 51 := 48 := 49
    = &06  :=  27 := 28 := 55 := 56 := 53 := 54

    = &06  :=  37 := 38 := 41 := 42 := 34 := 30
    = &06  :=  42 := 43 := 46 := 47 := 33 := 34
    = &06  :=  47 := 48 := 51 := 52 := 32 := 33
    = &06  :=  52 := 53 := 56 := 57 := 31 := 32
    = &06  :=  57 := 58 := 36 := 37 := 30 := 31
    = 0
    ALIGN
  ]
  WHEN 11
  [ OPT Pass                            ; Open truncated icosahedron.
  .Faces
    = &46  :=   5 :=  9 := 11 := 10 :=  1 :=   0        ; Inside
    = &46  :=  10 := 14 := 16 := 15 :=  2 :=   1
    = &46  :=  15 := 19 := 21 := 20 :=  3 :=   2
    = &46  :=  20 := 24 := 26 := 25 :=  4 :=   3
    = &46  :=  25 := 29 :=  6 :=  5 :=  0 :=   4

    = &46  :=  35 := 39 := 12 := 11 :=  9 :=   8
    = &46  :=  40 := 44 := 17 := 16 := 14 :=  13
    = &46  :=  45 := 49 := 22 := 21 := 19 :=  18
    = &46  :=  50 := 54 := 27 := 26 := 24 :=  23
    = &46  :=  55 := 59 :=  7 :=  6 := 29 :=  28

    = &46  :=  59 := 58 := 36 := 35 :=  8 :=   7
    = &46  :=  39 := 38 := 41 := 40 := 13 :=  12
    = &46  :=  44 := 43 := 46 := 45 := 18 :=  17
    = &46  :=  49 := 48 := 51 := 50 := 23 :=  22
    = &46  :=  54 := 53 := 56 := 55 := 28 :=  27

    = &46  :=  30 := 34 := 42 := 41 := 38 :=  37
    = &46  :=  34 := 33 := 47 := 46 := 43 :=  42
    = &46  :=  33 := 32 := 52 := 51 := 48 :=  47
    = &46  :=  32 := 31 := 57 := 56 := 53 :=  52
    = &46  :=  31 := 30 := 37 := 36 := 58 :=  57

    = &06  :=   0 :=  1 := 10 := 11 :=  9 :=  5         ; Outside
    = &06  :=   1 :=  2 := 15 := 16 := 14 := 10
    = &06  :=   2 :=  3 := 20 := 21 := 19 := 15
    = &06  :=   3 :=  4 := 25 := 26 := 24 := 20
    = &06  :=   4 :=  0 :=  5 :=  6 := 29 := 25

    = &06  :=   8 :=  9 := 11 := 12 := 39 := 35
    = &06  :=  13 := 14 := 16 := 17 := 44 := 40
    = &06  :=  18 := 19 := 21 := 22 := 49 := 45
    = &06  :=  23 := 24 := 26 := 27 := 54 := 50
    = &06  :=  28 := 29 :=  6 :=  7 := 59 := 55

    = &06  :=   7 :=  8 := 35 := 36 := 58 := 59
    = &06  :=  12 := 13 := 40 := 41 := 38 := 39
    = &06  :=  17 := 18 := 45 := 46 := 43 := 44
    = &06  :=  22 := 23 := 50 := 51 := 48 := 49
    = &06  :=  27 := 28 := 55 := 56 := 53 := 54

    = &06  :=  37 := 38 := 41 := 42 := 34 := 30
    = &06  :=  42 := 43 := 46 := 47 := 33 := 34
    = &06  :=  47 := 48 := 51 := 52 := 32 := 33
    = &06  :=  52 := 53 := 56 := 57 := 31 := 32
    = &06  :=  57 := 58 := 36 := 37 := 30 := 31
    = 0
    ALIGN
  ]
  ENDCASE
WHEN 12
  [ OPT Pass                            ; Cylinder.

  .Vertices
    DCD 100*COSRAD  0 :DCD 100*SINRAD  0 :DCD +100    ; 0
    DCD 100*COSRAD 30 :DCD 100*SINRAD 30 :DCD +100
    DCD 100*COSRAD 60 :DCD 100*SINRAD 60 :DCD +100
    DCD 100*COSRAD 90 :DCD 100*SINRAD 90 :DCD +100    ; 3
    DCD 100*COSRAD120 :DCD 100*SINRAD120 :DCD +100
    DCD 100*COSRAD150 :DCD 100*SINRAD150 :DCD +100
    DCD 100*COSRAD180 :DCD 100*SINRAD180 :DCD +100    ; 6
    DCD 100*COSRAD210 :DCD 100*SINRAD210 :DCD +100
    DCD 100*COSRAD240 :DCD 100*SINRAD240 :DCD +100
    DCD 100*COSRAD270 :DCD 100*SINRAD270 :DCD +100    ; 9
    DCD 100*COSRAD300 :DCD 100*SINRAD300 :DCD +100
    DCD 100*COSRAD330 :DCD 100*SINRAD330 :DCD +100

    DCD 100*COSRAD  0 :DCD 100*SINRAD  0 :DCD -100    ; 12
    DCD 100*COSRAD 30 :DCD 100*SINRAD 30 :DCD -100
    DCD 100*COSRAD 60 :DCD 100*SINRAD 60 :DCD -100
    DCD 100*COSRAD 90 :DCD 100*SINRAD 90 :DCD -100    ; 15
    DCD 100*COSRAD120 :DCD 100*SINRAD120 :DCD -100
    DCD 100*COSRAD150 :DCD 100*SINRAD150 :DCD -100
    DCD 100*COSRAD180 :DCD 100*SINRAD180 :DCD -100    ; 18
    DCD 100*COSRAD210 :DCD 100*SINRAD210 :DCD -100
    DCD 100*COSRAD240 :DCD 100*SINRAD240 :DCD -100
    DCD 100*COSRAD270 :DCD 100*SINRAD270 :DCD -100    ; 21
    DCD 100*COSRAD300 :DCD 100*SINRAD300 :DCD -100
    DCD 100*COSRAD330 :DCD 100*SINRAD330 :DCD -100

  .EndVertices

  .Faces
    = &0C  :=   0 :=  1 :=  2 :=  3 :=  4 :=  5
           :=   6 :=  7 :=  8 :=  9 := 10 := 11
    = &0C  :=  23 := 22 := 21 := 20 := 19 := 18
           :=  17 := 16 := 15 := 14 := 13 := 12
    = &04  :=   1 :=  0 := 12 := 13
    = &04  :=   2 :=  1 := 13 := 14
    = &04  :=   3 :=  2 := 14 := 15
    = &04  :=   4 :=  3 := 15 := 16
    = &04  :=   5 :=  4 := 16 := 17
    = &04  :=   6 :=  5 := 17 := 18
    = &04  :=   7 :=  6 := 18 := 19
    = &04  :=   8 :=  7 := 19 := 20
    = &04  :=   9 :=  8 := 20 := 21
    = &04  :=  10 :=  9 := 21 := 22
    = &04  :=  11 := 10 := 22 := 23
    = &04  :=   0 := 11 := 23 := 12
    = 0
    ALIGN
  ]
WHEN 13
  [ OPT Pass                            ; Open cylinder.

  .Vertices
    DCD 100*COSRAD  0 :DCD 100*SINRAD  0 :DCD +100    ; 0
    DCD 100*COSRAD 30 :DCD 100*SINRAD 30 :DCD +100
    DCD 100*COSRAD 60 :DCD 100*SINRAD 60 :DCD +100
    DCD 100*COSRAD 90 :DCD 100*SINRAD 90 :DCD +100    ; 3
    DCD 100*COSRAD120 :DCD 100*SINRAD120 :DCD +100
    DCD 100*COSRAD150 :DCD 100*SINRAD150 :DCD +100
    DCD 100*COSRAD180 :DCD 100*SINRAD180 :DCD +100    ; 6
    DCD 100*COSRAD210 :DCD 100*SINRAD210 :DCD +100
    DCD 100*COSRAD240 :DCD 100*SINRAD240 :DCD +100
    DCD 100*COSRAD270 :DCD 100*SINRAD270 :DCD +100    ; 9
    DCD 100*COSRAD300 :DCD 100*SINRAD300 :DCD +100
    DCD 100*COSRAD330 :DCD 100*SINRAD330 :DCD +100

    DCD 100*COSRAD  0 :DCD 100*SINRAD  0 :DCD -100    ; 12
    DCD 100*COSRAD 30 :DCD 100*SINRAD 30 :DCD -100
    DCD 100*COSRAD 60 :DCD 100*SINRAD 60 :DCD -100
    DCD 100*COSRAD 90 :DCD 100*SINRAD 90 :DCD -100    ; 15
    DCD 100*COSRAD120 :DCD 100*SINRAD120 :DCD -100
    DCD 100*COSRAD150 :DCD 100*SINRAD150 :DCD -100
    DCD 100*COSRAD180 :DCD 100*SINRAD180 :DCD -100    ; 18
    DCD 100*COSRAD210 :DCD 100*SINRAD210 :DCD -100
    DCD 100*COSRAD240 :DCD 100*SINRAD240 :DCD -100
    DCD 100*COSRAD270 :DCD 100*SINRAD270 :DCD -100    ; 21
    DCD 100*COSRAD300 :DCD 100*SINRAD300 :DCD -100
    DCD 100*COSRAD330 :DCD 100*SINRAD330 :DCD -100

    DCD  75*COSRAD  0 :DCD  75*SINRAD  0 :DCD +100    ; 24
    DCD  75*COSRAD 30 :DCD  75*SINRAD 30 :DCD +100
    DCD  75*COSRAD 60 :DCD  75*SINRAD 60 :DCD +100
    DCD  75*COSRAD 90 :DCD  75*SINRAD 90 :DCD +100    ; 27
    DCD  75*COSRAD120 :DCD  75*SINRAD120 :DCD +100
    DCD  75*COSRAD150 :DCD  75*SINRAD150 :DCD +100
    DCD  75*COSRAD180 :DCD  75*SINRAD180 :DCD +100    ; 30
    DCD  75*COSRAD210 :DCD  75*SINRAD210 :DCD +100
    DCD  75*COSRAD240 :DCD  75*SINRAD240 :DCD +100
    DCD  75*COSRAD270 :DCD  75*SINRAD270 :DCD +100    ; 33
    DCD  75*COSRAD300 :DCD  75*SINRAD300 :DCD +100
    DCD  75*COSRAD330 :DCD  75*SINRAD330 :DCD +100

    DCD  75*COSRAD  0 :DCD  75*SINRAD  0 :DCD -100    ; 36
    DCD  75*COSRAD 30 :DCD  75*SINRAD 30 :DCD -100
    DCD  75*COSRAD 60 :DCD  75*SINRAD 60 :DCD -100
    DCD  75*COSRAD 90 :DCD  75*SINRAD 90 :DCD -100    ; 39
    DCD  75*COSRAD120 :DCD  75*SINRAD120 :DCD -100
    DCD  75*COSRAD150 :DCD  75*SINRAD150 :DCD -100
    DCD  75*COSRAD180 :DCD  75*SINRAD180 :DCD -100    ; 42
    DCD  75*COSRAD210 :DCD  75*SINRAD210 :DCD -100
    DCD  75*COSRAD240 :DCD  75*SINRAD240 :DCD -100
    DCD  75*COSRAD270 :DCD  75*SINRAD270 :DCD -100    ; 45
    DCD  75*COSRAD300 :DCD  75*SINRAD300 :DCD -100
    DCD  75*COSRAD330 :DCD  75*SINRAD330 :DCD -100

  .EndVertices

  .Faces
    = &44  :=  24 := 25 := 37 := 36
    = &44  :=  25 := 26 := 38 := 37
    = &44  :=  26 := 27 := 39 := 38
    = &44  :=  27 := 28 := 40 := 39
    = &44  :=  28 := 29 := 41 := 40
    = &44  :=  29 := 30 := 42 := 41
    = &44  :=  30 := 31 := 43 := 42
    = &44  :=  31 := 32 := 44 := 43
    = &44  :=  32 := 33 := 45 := 44
    = &44  :=  33 := 34 := 46 := 45
    = &44  :=  34 := 35 := 47 := 46
    = &44  :=  35 := 24 := 36 := 47
    = &8C  :=   0 :=  1 :=  2 :=  3 :=  4 :=  5
           :=   6 :=  7 :=  8 :=  9 := 10 := 11
    = &0C  :=  24 := 25 := 26 := 27 := 28 := 29
           :=  30 := 31 := 32 := 33 := 34 := 35
    = &8C  :=  23 := 22 := 21 := 20 := 19 := 18
           :=  17 := 16 := 15 := 14 := 13 := 12
    = &0C  :=  47 := 46 := 45 := 44 := 43 := 42
           :=  41 := 40 := 39 := 38 := 37 := 36
    = &04  :=   1 :=  0 := 12 := 13
    = &04  :=   2 :=  1 := 13 := 14
    = &04  :=   3 :=  2 := 14 := 15
    = &04  :=   4 :=  3 := 15 := 16
    = &04  :=   5 :=  4 := 16 := 17
    = &04  :=   6 :=  5 := 17 := 18
    = &04  :=   7 :=  6 := 18 := 19
    = &04  :=   8 :=  7 := 19 := 20
    = &04  :=   9 :=  8 := 20 := 21
    = &04  :=  10 :=  9 := 21 := 22
    = &04  :=  11 := 10 := 22 := 23
    = &04  :=   0 := 11 := 23 := 12
    = 0
    ALIGN
  ]
WHEN 14
  [ OPT Pass                            ; Sphere.

  .Vertices
  ]
  R%=140
  FOR Z%=15 TO 180-15 STEP 15
    RS=R%*SIN RAD Z%
    RC=R%*COS RAD Z%
    FOR X%=0 TO 360-30 STEP 30
      [ OPT Pass
        DCD RS*COS RAD X% :DCD RS*SIN RAD X% :DCD RC
      ]
    NEXT
  NEXT
  [ OPT Pass

    DCD 0 :DCD 0 :DCD +R%
    DCD 0 :DCD 0 :DCD -R%
  .EndVertices

  .Faces
  ]
  FOR X%=0 TO 12-1
    X1%=(X%+1) MOD 12
    [ OPT Pass
    = &03  :=  132     :=     X% := X1%
    = &03  :=  120+X1% := 120+X% := 133
    ]
    FOR Z%=0 TO 12*10-12 STEP 12
      [ OPT Pass
        = &04  := Z%+X1% := Z%+X% := (Z%+12)+X% := (Z%+12)+X1%
      ]
    NEXT
  NEXT
  [ OPT Pass
    = 0
    ALIGN
  ]
WHEN 15
  [ OPT Pass                            ; Cylinder.

  .Vertices
  ]
  D%=18
  N%=360 DIV D%
  FOR I%=0 TO N%-1
    [ OPT Pass
      DCD 100*COSRAD(I%*D%):DCD 100*SINRAD(I%*D%):DCD +80
    ]
  NEXT
  FOR I%=0 TO N%-1
    [ OPT Pass
      DCD 100*COSRAD(I%*D%):DCD 100*SINRAD(I%*D%):DCD -80
    ]
  NEXT
  [ OPT Pass
  .EndVertices

  .Faces
    = N%
  ]
  FOR I%=0 TO N%-1
    [ OPT Pass
      = I%
    ]
  NEXT
  [ OPT Pass
    = N%
  ]
  FOR I%=2*N%-1 TO N% STEP -1
    [ OPT Pass
      = I%
    ]
  NEXT
  FOR I%=0 TO N%-1
    [ OPT Pass
      = &04
         = (I%+1) MOD N%
         = I%
         = N%+I%
         = N%+(I%+1) MOD N%
    ]
  NEXT
  [ OPT Pass
    = 0
    ALIGN
  ]
WHEN 16
  [ OPT Pass                            ; Cone.

  .Vertices
  ]
  D%=18
  N%=360 DIV D%
  FOR I%=0 TO N%-1
    [ OPT Pass
      DCD 100*COSRAD(I%*D%):DCD 100*SINRAD(I%*D%):DCD -80
    ]
  NEXT
  [ OPT Pass
      DCD 0:DCD 0:DCD +80
  .EndVertices

  .Faces
    = N%
  ]
  FOR I%=N%-1 TO 0 STEP -1
    [ OPT Pass
      = I%
    ]
  NEXT
  FOR I%=0 TO N%-1
    [ OPT Pass
      = &03
         = I%
         = (I%+1) MOD N%
         = N%
    ]
  NEXT
  [ OPT Pass
    = 0
    ALIGN
  ]
WHEN 17
  [ OPT Pass                            ; Open cone.

  .Vertices
  ]
  D%=15
  N%=360 DIV D%
  FOR I%=0 TO N%-1
    [ OPT Pass
      DCD 100*COSRAD(I%*D%):DCD 100*SINRAD(I%*D%):DCD -80
    ]
  NEXT
  [ OPT Pass
      DCD 0:DCD 0:DCD +80
  .EndVertices

  .Faces
  ]
  FOR I%=0 TO N%-1
    [ OPT Pass
      = &43
         = (I%+1) MOD N%
         = I%
         = N%
    ]
  NEXT
  FOR I%=0 TO N%-1
    [ OPT Pass
      = &03
         = I%
         = (I%+1) MOD N%
         = N%
    ]
  NEXT
  [ OPT Pass
    = 0
    ALIGN
  ]
WHEN 18
  [ OPT Pass                            ; Open cone.

  .Vertices
  ]
  D%=9
  N%=360 DIV D%
  FOR I%=0 TO N%-1
    [ OPT Pass
      DCD 100*COSRAD(I%*D%):DCD 100*SINRAD(I%*D%):DCD -100
    ]
  NEXT
  [ OPT Pass
      DCD 0:DCD 0:DCD 0
  .EndVertices

  .Faces
  ]
  FOR I%=0 TO N%-1
    [ OPT Pass
      = &43
         = (I%+1) MOD N%
         = I%
         = N%
    ]
  NEXT
  FOR I%=0 TO N%-1
    [ OPT Pass
      = &03
         = I%
         = (I%+1) MOD N%
         = N%
    ]
  NEXT
  [ OPT Pass
    = 0
    ALIGN
  ]
WHEN 19
  [ OPT Pass                            ; Two cones.

  .Vertices
  ]
  D%=15
  N%=360 DIV D%
  FOR I%=0 TO N%-1
    [ OPT Pass
      DCD 100*COSRAD(I%*D%):DCD 100*SINRAD(I%*D%):DCD 0
    ]
  NEXT
  [ OPT Pass
      DCD 0:DCD 0:DCD +100
      DCD 0:DCD 0:DCD -100
  .EndVertices

  .Faces
  ]
  FOR I%=0 TO N%-1
    [ OPT Pass
      = &03
         = I%
         = (I%+1) MOD N%
         = N%
    ]
  NEXT
  FOR I%=0 TO N%-1
    [ OPT Pass
      = &03
         = (I%+1) MOD N%
         = I%
         = N%+1
    ]
  NEXT
  [ OPT Pass
    = 0
    ALIGN
  ]

REM ----------------------------------



WHEN 20
  [ OPT Pass                            ; Tube with post

  .Vertices
    DCD - 88 :DCD - 88 :DCD - 88   ; 0
    DCD + 88 :DCD - 88 :DCD - 88   ; 1
    DCD + 88 :DCD - 88 :DCD + 88   ; 2
    DCD - 88 :DCD - 88 :DCD + 88   ; 3
    DCD - 88 :DCD + 88 :DCD - 88   ; 4
    DCD + 88 :DCD + 88 :DCD - 88   ; 5
    DCD + 88 :DCD + 88 :DCD + 88   ; 6
    DCD - 88 :DCD + 88 :DCD + 88   ; 7
    DCD - 66 :DCD - 88 :DCD - 66   ; 8
    DCD + 66 :DCD - 88 :DCD - 66   ; 9
    DCD + 66 :DCD - 88 :DCD + 66   ; 10
    DCD - 66 :DCD - 88 :DCD + 66   ; 11
    DCD - 66 :DCD + 88 :DCD - 66   ; 12
    DCD + 66 :DCD + 88 :DCD - 66   ; 13
    DCD + 66 :DCD + 88 :DCD + 66   ; 14
    DCD - 66 :DCD + 88 :DCD + 66   ; 15

    DCD - 22 :DCD -132 :DCD - 22   ; 16
    DCD + 22 :DCD -132 :DCD - 22   ; 17
    DCD + 22 :DCD -132 :DCD + 22   ; 18
    DCD - 22 :DCD -132 :DCD + 22   ; 19
    DCD - 22 :DCD +132 :DCD - 22   ; 20
    DCD + 22 :DCD +132 :DCD - 22   ; 21
    DCD + 22 :DCD +132 :DCD + 22   ; 22
    DCD - 22 :DCD +132 :DCD + 22   ; 23
  .EndVertices

  .Faces
    = &04  :=   0 :=  4 :=  5 :=  1
    = &04  :=   1 :=  5 :=  6 :=  2
    = &04  :=   2 :=  6 :=  7 :=  3
    = &04  :=   3 :=  7 :=  4 :=  0

    = &04  :=   0 :=  1 :=  9 :=  8
    = &04  :=   1 :=  2 := 10 :=  9
    = &04  :=   2 :=  3 := 11 := 10
    = &04  :=   3 :=  0 :=  8 := 11

    = &04  :=   7 :=  6 := 14 := 15
    = &04  :=   6 :=  5 := 13 := 14
    = &04  :=   5 :=  4 := 12 := 13
    = &04  :=   4 :=  7 := 15 := 12

    = &44  :=  23 := 22 := 21 := 20
    = &44  :=  16 := 17 := 18 := 19

    = &44  :=  16 := 20 := 21 := 17
    = &44  :=  17 := 21 := 22 := 18
    = &44  :=  18 := 22 := 23 := 19
    = &44  :=  19 := 23 := 20 := 16

    = &04  :=   9 := 13 := 12 :=  8
    = &04  :=  10 := 14 := 13 :=  9
    = &04  :=  11 := 15 := 14 := 10
    = &04  :=   8 := 12 := 15 := 11

    = 0
    ALIGN
  ]
WHEN 21
  [ OPT Pass                            ; Four cubes

  .Vertices
    DCD + 35 :DCD + 35 :DCD - 35   ; 0
    DCD +105 :DCD + 35 :DCD - 35   ; 1
    DCD +105 :DCD + 35 :DCD + 35   ; 2
    DCD + 35 :DCD + 35 :DCD + 35   ; 3
    DCD + 35 :DCD +105 :DCD - 35   ; 4
    DCD +105 :DCD +105 :DCD - 35   ; 5
    DCD +105 :DCD +105 :DCD + 35   ; 6
    DCD + 35 :DCD +105 :DCD + 35   ; 7

    DCD -105 :DCD + 35 :DCD - 35   ; 8
    DCD - 35 :DCD + 35 :DCD - 35   ; 9
    DCD - 35 :DCD + 35 :DCD + 35   ; 10
    DCD -105 :DCD + 35 :DCD + 35   ; 11
    DCD -105 :DCD +105 :DCD - 35   ; 12
    DCD - 35 :DCD +105 :DCD - 35   ; 13
    DCD - 35 :DCD +105 :DCD + 35   ; 14
    DCD -105 :DCD +105 :DCD + 35   ; 15

    DCD + 35 :DCD -105 :DCD - 35   ; 0
    DCD +105 :DCD -105 :DCD - 35   ; 1
    DCD +105 :DCD -105 :DCD + 35   ; 2
    DCD + 35 :DCD -105 :DCD + 35   ; 3
    DCD + 35 :DCD - 35 :DCD - 35   ; 4
    DCD +105 :DCD - 35 :DCD - 35   ; 5
    DCD +105 :DCD - 35 :DCD + 35   ; 6
    DCD + 35 :DCD - 35 :DCD + 35   ; 7

    DCD -105 :DCD -105 :DCD - 35   ; 8
    DCD - 35 :DCD -105 :DCD - 35   ; 9
    DCD - 35 :DCD -105 :DCD + 35   ; 10
    DCD -105 :DCD -105 :DCD + 35   ; 11
    DCD -105 :DCD - 35 :DCD - 35   ; 12
    DCD - 35 :DCD - 35 :DCD - 35   ; 13
    DCD - 35 :DCD - 35 :DCD + 35   ; 14
    DCD -105 :DCD - 35 :DCD + 35   ; 15
  .EndVertices

  .Faces
    = &04  :=   0 :=  4 :=  5 :=  1
    = &04  :=   1 :=  5 :=  6 :=  2
    = &04  :=   2 :=  6 :=  7 :=  3
    = &04  :=   3 :=  7 :=  4 :=  0
    = &04  :=   0 :=  1 :=  2 :=  3
    = &04  :=   7 :=  6 :=  5 :=  4

    = &04  :=   8 := 12 := 13 :=  9
    = &04  :=   9 := 13 := 14 := 10
    = &04  :=  10 := 14 := 15 := 11
    = &04  :=  11 := 15 := 12 :=  8
    = &04  :=   8 :=  9 := 10 := 11
    = &04  :=  15 := 14 := 13 := 12

    = &04  :=  16 := 20 := 21 := 17
    = &04  :=  17 := 21 := 22 := 18
    = &04  :=  18 := 22 := 23 := 19
    = &04  :=  19 := 23 := 20 := 16
    = &04  :=  16 := 17 := 18 := 19
    = &04  :=  23 := 22 := 21 := 20

    = &04  :=  24 := 28 := 29 := 25
    = &04  :=  25 := 29 := 30 := 26
    = &04  :=  26 := 30 := 31 := 27
    = &04  :=  27 := 31 := 28 := 24
    = &04  :=  24 := 25 := 26 := 27
    = &04  :=  31 := 30 := 29 := 28

    = 0
    ALIGN
  ]
WHEN 22
  [ OPT Pass                            ; Open cube

  .Vertices
    DCD - 90 :DCD - 90 :DCD - 90   ; 0
    DCD + 90 :DCD - 90 :DCD - 90   ; 1
    DCD + 90 :DCD - 90 :DCD + 90   ; 2
    DCD - 90 :DCD - 90 :DCD + 90   ; 3
    DCD - 90 :DCD + 90 :DCD - 90   ; 4
    DCD + 90 :DCD + 90 :DCD - 90   ; 5
    DCD + 90 :DCD + 90 :DCD + 90   ; 6
    DCD - 90 :DCD + 90 :DCD + 90   ; 7

    DCD - 60 :DCD - 90 :DCD - 60   ; 8
    DCD + 60 :DCD - 90 :DCD - 60   ; 9
    DCD + 60 :DCD - 90 :DCD + 60   ; 10
    DCD - 60 :DCD - 90 :DCD + 60   ; 11

    DCD - 60 :DCD + 90 :DCD + 60   ; 12
    DCD + 60 :DCD + 90 :DCD + 60   ; 13
    DCD + 60 :DCD + 90 :DCD - 60   ; 14
    DCD - 60 :DCD + 90 :DCD - 60   ; 15

    DCD - 60 :DCD - 60 :DCD - 90   ; 16
    DCD - 60 :DCD + 60 :DCD - 90   ; 17
    DCD + 60 :DCD + 60 :DCD - 90   ; 18
    DCD + 60 :DCD - 60 :DCD - 90   ; 19

    DCD + 90 :DCD - 60 :DCD - 60   ; 20
    DCD + 90 :DCD + 60 :DCD - 60   ; 21
    DCD + 90 :DCD + 60 :DCD + 60   ; 22
    DCD + 90 :DCD - 60 :DCD + 60   ; 23

    DCD + 60 :DCD - 60 :DCD + 90   ; 24
    DCD + 60 :DCD + 60 :DCD + 90   ; 25
    DCD - 60 :DCD + 60 :DCD + 90   ; 26
    DCD - 60 :DCD - 60 :DCD + 90   ; 27

    DCD - 90 :DCD - 60 :DCD + 60   ; 28
    DCD - 90 :DCD + 60 :DCD + 60   ; 29
    DCD - 90 :DCD + 60 :DCD - 60   ; 30
    DCD - 90 :DCD - 60 :DCD - 60   ; 31

    DCD - 60 :DCD - 60 :DCD - 60   ; 32
    DCD + 60 :DCD - 60 :DCD - 60   ; 33
    DCD + 60 :DCD - 60 :DCD + 60   ; 34
    DCD - 60 :DCD - 60 :DCD + 60   ; 35
    DCD - 60 :DCD + 60 :DCD - 60   ; 36
    DCD + 60 :DCD + 60 :DCD - 60   ; 37
    DCD + 60 :DCD + 60 :DCD + 60   ; 38
    DCD - 60 :DCD + 60 :DCD + 60   ; 39
  .EndVertices

  .Faces
    = &84  :=   0 :=  1 :=  2 :=  3
    = &04  :=   8 :=  9 := 10 := 11
    = &84  :=   7 :=  6 :=  5 :=  4
    = &04  :=  12 := 13 := 14 := 15
    = &84  :=   0 :=  4 :=  5 :=  1
    = &04  :=  16 := 17 := 18 := 19
    = &84  :=   1 :=  5 :=  6 :=  2
    = &04  :=  20 := 21 := 22 := 23
    = &84  :=   2 :=  6 :=  7 :=  3
    = &04  :=  24 := 25 := 26 := 27
    = &84  :=   3 :=  7 :=  4 :=  0
    = &04  :=  28 := 29 := 30 := 31

    = &44  :=   8 :=  9 := 33 := 32
    = &44  :=   9 := 10 := 34 := 33
    = &44  :=  10 := 11 := 35 := 34
    = &44  :=  11 :=  8 := 32 := 35
    = &44  :=  12 := 13 := 38 := 39
    = &44  :=  13 := 14 := 37 := 38
    = &44  :=  14 := 15 := 36 := 37
    = &44  :=  15 := 12 := 39 := 36
    = &44  :=  16 := 17 := 36 := 32
    = &44  :=  20 := 21 := 37 := 33
    = &44  :=  24 := 25 := 38 := 34
    = &44  :=  28 := 29 := 39 := 35

    = &44  :=  33 := 19 := 16 := 32
    = &44  :=  34 := 23 := 20 := 33
    = &44  :=  35 := 27 := 24 := 34
    = &44  :=  32 := 31 := 28 := 35
    = &44  :=  38 := 25 := 26 := 39
    = &44  :=  37 := 21 := 22 := 38
    = &44  :=  36 := 17 := 18 := 37
    = &44  :=  39 := 29 := 30 := 36
    = &44  :=  36 := 30 := 31 := 32
    = &44  :=  37 := 18 := 19 := 33
    = &44  :=  38 := 22 := 23 := 34
    = &44  :=  39 := 26 := 27 := 35
    = 0
    ALIGN
  ]
WHEN 23
  [ OPT Pass                            ; Stellated rhombic dodecahedron

  .Vertices
    DCD +110 :DCD    0 :DCD -110   ; 0
    DCD    0 :DCD +110 :DCD -110   ; 1
    DCD -110 :DCD    0 :DCD -110   ; 2
    DCD    0 :DCD -110 :DCD -110   ; 3
    DCD    0 :DCD    0 :DCD -110   ; 4

    DCD + 55 :DCD + 55 :DCD - 55   ; 5
    DCD - 55 :DCD + 55 :DCD - 55   ; 6
    DCD - 55 :DCD - 55 :DCD - 55   ; 7
    DCD + 55 :DCD - 55 :DCD - 55   ; 8

    DCD +110 :DCD    0 :DCD    0   ; 9
    DCD    0 :DCD +110 :DCD    0   ; 10
    DCD -110 :DCD    0 :DCD    0   ; 11
    DCD    0 :DCD -110 :DCD    0   ; 12

    DCD +110 :DCD +110 :DCD    0   ; 13
    DCD -110 :DCD +110 :DCD    0   ; 14
    DCD -110 :DCD -110 :DCD    0   ; 15
    DCD +110 :DCD -110 :DCD    0   ; 16

    DCD + 55 :DCD + 55 :DCD + 55   ; 17
    DCD - 55 :DCD + 55 :DCD + 55   ; 18
    DCD - 55 :DCD - 55 :DCD + 55   ; 19
    DCD + 55 :DCD - 55 :DCD + 55   ; 20

    DCD +110 :DCD    0 :DCD +110   ; 21
    DCD    0 :DCD +110 :DCD +110   ; 22
    DCD -110 :DCD    0 :DCD +110   ; 23
    DCD    0 :DCD -110 :DCD +110   ; 24
    DCD    0 :DCD    0 :DCD +110   ; 25
  .EndVertices

  .Faces
    = &03  :=   0 :=  5 :=  9
    = &03  :=   0 :=  4 :=  5
    = &03  :=   0 :=  8 :=  4
    = &03  :=   0 :=  9 :=  8

    = &03  :=   1 :=  6 := 10
    = &03  :=   1 :=  4 :=  6
    = &03  :=   1 :=  5 :=  4
    = &03  :=   1 := 10 :=  5

    = &03  :=   2 :=  7 := 11
    = &03  :=   2 :=  4 :=  7
    = &03  :=   2 :=  6 :=  4
    = &03  :=   2 := 11 :=  6

    = &03  :=   3 :=  8 := 12
    = &03  :=   3 :=  4 :=  8
    = &03  :=   3 :=  7 :=  4
    = &03  :=   3 := 12 :=  7

    = &03  :=  13 := 10 := 17
    = &03  :=  13 :=  5 := 10
    = &03  :=  13 :=  9 :=  5
    = &03  :=  13 := 17 :=  9

    = &03  :=  14 := 11 := 18
    = &03  :=  14 :=  6 := 11
    = &03  :=  14 := 10 :=  6
    = &03  :=  14 := 18 := 10

    = &03  :=  15 := 12 := 19
    = &03  :=  15 :=  7 := 12
    = &03  :=  15 := 11 :=  7
    = &03  :=  15 := 19 := 11

    = &03  :=  16 :=  9 := 20
    = &03  :=  16 :=  8 :=  9
    = &03  :=  16 := 12 :=  8
    = &03  :=  16 := 20 := 12

    = &03  :=  21 := 17 := 25
    = &03  :=  21 :=  9 := 17
    = &03  :=  21 := 20 :=  9
    = &03  :=  21 := 25 := 20

    = &03  :=  22 := 18 := 25
    = &03  :=  22 := 10 := 18
    = &03  :=  22 := 17 := 10
    = &03  :=  22 := 25 := 17

    = &03  :=  23 := 19 := 25
    = &03  :=  23 := 11 := 19
    = &03  :=  23 := 18 := 11
    = &03  :=  23 := 25 := 18

    = &03  :=  24 := 20 := 25
    = &03  :=  24 := 12 := 20
    = &03  :=  24 := 19 := 12
    = &03  :=  24 := 25 := 19

    = 0
    ALIGN
  ]
WHEN 24
  [ OPT Pass                            ; Torus

  .Vertices
  ]
  R1%=100
  R2%=50
  R3%=50
  FOR Z%=0 TO 360-30 STEP 30
    RS=SIN RAD Z%
    RC=COS RAD Z%
    FOR X%=0 TO 360-45 STEP 45
      X=R1%+R2%*COS RAD X%:Y=R3%*SIN RAD X%
      [ OPT Pass
        DCD RC*X :DCD RS*X :DCD Y
      ]
    NEXT
  NEXT
  [ OPT Pass
  .EndVertices

  .Faces
  ]
  FOR X%=0 TO 8-1
    X1%=(X%+1) MOD 8
    FOR Z%=0 TO 12-1
      Z1%=(Z%+1) MOD 12
      [ OPT Pass
        = &04  := 8*Z%+X1% := 8*Z%+X% := 8*Z1%+X% := 8*Z1%+X1%
      ]
    NEXT
  NEXT
  [ OPT Pass
    = 0
    ALIGN
  ]
WHEN 25
  [ OPT Pass                            ; Open tetrahedron

  .Vertices
    DCD -126 :DCD +63*SQR2 :DCD    0    ; 0
    DCD +126 :DCD +63*SQR2 :DCD    0    ; 1
    DCD    0 :DCD -63*SQR2 :DCD -126    ; 2
    DCD    0 :DCD -63*SQR2 :DCD +126    ; 3

    DCD - 84 :DCD +49*SQR2 :DCD - 14    ; 4
    DCD + 84 :DCD +49*SQR2 :DCD - 14    ; 5
    DCD    0 :DCD -35*SQR2 :DCD - 98    ; 6

    DCD - 84 :DCD +49*SQR2 :DCD + 14    ; 7
    DCD    0 :DCD -35*SQR2 :DCD + 98    ; 8
    DCD + 84 :DCD +49*SQR2 :DCD + 14    ; 9

    DCD - 98 :DCD +35*SQR2 :DCD    0    ; 10
    DCD - 14 :DCD -49*SQR2 :DCD - 84    ; 11
    DCD - 14 :DCD -49*SQR2 :DCD + 84    ; 12

    DCD + 98 :DCD +35*SQR2 :DCD    0    ; 13
    DCD + 14 :DCD -49*SQR2 :DCD + 84    ; 14
    DCD + 14 :DCD -49*SQR2 :DCD - 84    ; 15

    DCD - 98 :DCD +49*SQR2 :DCD    0    ; 16
    DCD + 98 :DCD +49*SQR2 :DCD    0    ; 17
    DCD    0 :DCD -49*SQR2 :DCD - 98    ; 18
    DCD    0 :DCD -49*SQR2 :DCD + 98    ; 19
  .EndVertices

  .Faces
    = &46  :=  16 :=  4 :=  5  := 17 :=  9 :=  7
    = &46  :=  16 := 10 := 11  := 18 :=  6 :=  4
    = &46  :=  16 :=  7 :=  8  := 19 := 12 := 10
    = &46  :=  17 :=  5 :=  6  := 18 := 15 := 13
    = &46  :=  17 := 13 := 14  := 19 :=  8 :=  9
    = &46  :=  18 := 11 := 12  := 19 := 14 := 15

    = &83  :=   0 :=  1 :=  2           ; Midpoint =    0 , +21*SQR2 , -42
    = &03  :=   4 :=  5 :=  6
    = &83  :=   0 :=  3 :=  1           ; Midpoint =    0 , +21*SQR2 , +42
    = &03  :=   7 :=  8 :=  9
    = &83  :=   0 :=  2 :=  3           ; Midpoint =  -42 , -21*SQR2 ,   0
    = &03  :=  10 := 11 := 12
    = &83  :=   1 :=  3 :=  2           ; Midpoint =  +42 , -21*SQR2 ,   0
    = &03  :=  13 := 14 := 15
    = 0
    ALIGN
  ]
WHEN 26
  [ OPT Pass                            ; Stella octangula

  .Vertices
    DCD +126 :DCD    0 :DCD -63*SQR2    ; 0
    DCD    0 :DCD +126 :DCD -63*SQR2    ; 1
    DCD -126 :DCD    0 :DCD -63*SQR2    ; 2
    DCD    0 :DCD -126 :DCD -63*SQR2    ; 3
    DCD    0 :DCD    0 :DCD -63*SQR2    ; 4

    DCD + 63 :DCD + 63 :DCD        0    ; 5
    DCD - 63 :DCD + 63 :DCD        0    ; 6
    DCD - 63 :DCD - 63 :DCD        0    ; 7
    DCD + 63 :DCD - 63 :DCD        0    ; 8

    DCD +126 :DCD    0 :DCD +63*SQR2    ; 9
    DCD    0 :DCD +126 :DCD +63*SQR2    ; 10
    DCD -126 :DCD    0 :DCD +63*SQR2    ; 11
    DCD    0 :DCD -126 :DCD +63*SQR2    ; 12
    DCD    0 :DCD    0 :DCD +63*SQR2    ; 13
  .EndVertices

  .Faces
    = &03  :=   0 :=  4 :=  5
    = &03  :=   0 :=  5 :=  8
    = &03  :=   0 :=  8 :=  4

    = &03  :=   1 :=  4 :=  6
    = &03  :=   1 :=  6 :=  5
    = &03  :=   1 :=  5 :=  4

    = &03  :=   2 :=  4 :=  7
    = &03  :=   2 :=  7 :=  6
    = &03  :=   2 :=  6 :=  4

    = &03  :=   3 :=  4 :=  8
    = &03  :=   3 :=  8 :=  7
    = &03  :=   3 :=  7 :=  4

    = &03  :=   9 := 13 :=  8
    = &03  :=   9 :=  8 :=  5
    = &03  :=   9 :=  5 := 13

    = &03  :=  10 := 13 :=  5
    = &03  :=  10 :=  5 :=  6
    = &03  :=  10 :=  6 := 13

    = &03  :=  11 := 13 :=  6
    = &03  :=  11 :=  6 :=  7
    = &03  :=  11 :=  7 := 13

    = &03  :=  12 := 13 :=  7
    = &03  :=  12 :=  7 :=  8
    = &03  :=  12 :=  8 := 13

    = 0
    ALIGN
  ]
WHEN 27
  [ OPT Pass                            ; Small stellated dodecahedron

  .Vertices
    DCD    0 :DCD    0 :DCD +150
    DCD +134 :DCD    0 :DCD + 67
    DCD + 41 :DCD -128 :DCD + 67
    DCD -109 :DCD - 79 :DCD + 67
    DCD -109 :DCD + 79 :DCD + 67
    DCD + 41 :DCD +128 :DCD + 67
    DCD    0 :DCD    0 :DCD -150
    DCD +109 :DCD - 79 :DCD - 67
    DCD - 41 :DCD -128 :DCD - 67
    DCD -134 :DCD    0 :DCD - 67
    DCD - 41 :DCD +128 :DCD - 67
    DCD +109 :DCD + 79 :DCD - 67

    DCD + 41 :DCD - 30 :DCD + 67
    DCD - 16 :DCD - 49 :DCD + 67
    DCD - 51 :DCD    0 :DCD + 67
    DCD - 16 :DCD + 49 :DCD + 67
    DCD + 41 :DCD + 30 :DCD + 67
    DCD + 67 :DCD - 49 :DCD + 16
    DCD - 26 :DCD - 79 :DCD + 16
    DCD - 83 :DCD    0 :DCD + 16
    DCD - 26 :DCD + 79 :DCD + 16
    DCD + 67 :DCD + 49 :DCD + 16
    DCD + 83 :DCD    0 :DCD - 16
    DCD + 26 :DCD - 79 :DCD - 16
    DCD - 67 :DCD - 49 :DCD - 16
    DCD - 67 :DCD + 49 :DCD - 16
    DCD + 26 :DCD + 79 :DCD - 16
    DCD + 51 :DCD    0 :DCD - 67
    DCD + 16 :DCD - 49 :DCD - 67
    DCD - 41 :DCD - 30 :DCD - 67
    DCD - 41 :DCD + 30 :DCD - 67
    DCD + 16 :DCD + 49 :DCD - 67
  .EndVertices

  .Faces
    = &03  :=   0 := 12 := 16
    = &03  :=   0 := 13 := 12
    = &03  :=   0 := 14 := 13
    = &03  :=   0 := 15 := 14
    = &03  :=   0 := 16 := 15

    = &03  :=   1 := 16 := 12
    = &03  :=   1 := 12 := 17
    = &03  :=   1 := 17 := 22
    = &03  :=   1 := 22 := 21
    = &03  :=   1 := 21 := 16

    = &03  :=   2 := 12 := 13
    = &03  :=   2 := 13 := 18
    = &03  :=   2 := 18 := 23
    = &03  :=   2 := 23 := 17
    = &03  :=   2 := 17 := 12

    = &03  :=   3 := 13 := 14
    = &03  :=   3 := 14 := 19
    = &03  :=   3 := 19 := 24
    = &03  :=   3 := 24 := 18
    = &03  :=   3 := 18 := 13

    = &03  :=   4 := 14 := 15
    = &03  :=   4 := 15 := 20
    = &03  :=   4 := 20 := 25
    = &03  :=   4 := 25 := 19
    = &03  :=   4 := 19 := 14

    = &03  :=   5 := 15 := 16
    = &03  :=   5 := 16 := 21
    = &03  :=   5 := 21 := 26
    = &03  :=   5 := 26 := 20
    = &03  :=   5 := 20 := 15

    = &03  :=   6 := 27 := 28
    = &03  :=   6 := 28 := 29
    = &03  :=   6 := 29 := 30
    = &03  :=   6 := 30 := 31
    = &03  :=   6 := 31 := 27

    = &03  :=   7 := 28 := 27
    = &03  :=   7 := 27 := 22
    = &03  :=   7 := 22 := 17
    = &03  :=   7 := 17 := 23
    = &03  :=   7 := 23 := 28

    = &03  :=   8 := 29 := 28
    = &03  :=   8 := 28 := 23
    = &03  :=   8 := 23 := 18
    = &03  :=   8 := 18 := 24
    = &03  :=   8 := 24 := 29

    = &03  :=   9 := 30 := 29
    = &03  :=   9 := 29 := 24
    = &03  :=   9 := 24 := 19
    = &03  :=   9 := 19 := 25
    = &03  :=   9 := 25 := 30

    = &03  :=  10 := 31 := 30
    = &03  :=  10 := 30 := 25
    = &03  :=  10 := 25 := 20
    = &03  :=  10 := 20 := 26
    = &03  :=  10 := 26 := 31

    = &03  :=  11 := 27 := 31
    = &03  :=  11 := 31 := 26
    = &03  :=  11 := 26 := 21
    = &03  :=  11 := 21 := 22
    = &03  :=  11 := 22 := 27

    = 0
    ALIGN
  ]
WHEN 28
  [ OPT Pass                            ; Great dodecahedron

  .Vertices
    DCD    0 :DCD    0 :DCD +150
    DCD +134 :DCD    0 :DCD + 67
    DCD + 41 :DCD -128 :DCD + 67
    DCD -109 :DCD - 79 :DCD + 67
    DCD -109 :DCD + 79 :DCD + 67
    DCD + 41 :DCD +128 :DCD + 67
    DCD    0 :DCD    0 :DCD -150
    DCD +109 :DCD - 79 :DCD - 67
    DCD - 41 :DCD -128 :DCD - 67
    DCD -134 :DCD    0 :DCD - 67
    DCD - 41 :DCD +128 :DCD - 67
    DCD +109 :DCD + 79 :DCD - 67

    DCD + 41 :DCD - 30 :DCD + 67
    DCD - 16 :DCD - 49 :DCD + 67
    DCD - 51 :DCD    0 :DCD + 67
    DCD - 16 :DCD + 49 :DCD + 67
    DCD + 41 :DCD + 30 :DCD + 67
    DCD + 67 :DCD - 49 :DCD + 16
    DCD - 26 :DCD - 79 :DCD + 16
    DCD - 83 :DCD    0 :DCD + 16
    DCD - 26 :DCD + 79 :DCD + 16
    DCD + 67 :DCD + 49 :DCD + 16
    DCD + 83 :DCD    0 :DCD - 16
    DCD + 26 :DCD - 79 :DCD - 16
    DCD - 67 :DCD - 49 :DCD - 16
    DCD - 67 :DCD + 49 :DCD - 16
    DCD + 26 :DCD + 79 :DCD - 16
    DCD + 51 :DCD    0 :DCD - 67
    DCD + 16 :DCD - 49 :DCD - 67
    DCD - 41 :DCD - 30 :DCD - 67
    DCD - 41 :DCD + 30 :DCD - 67
    DCD + 16 :DCD + 49 :DCD - 67
  .EndVertices

  .Faces
    = &03  :=  0 := 12 :=  1
    = &03  :=  0 :=  2 := 12
    = &03  :=  0 := 13 :=  2
    = &03  :=  0 :=  3 := 13
    = &03  :=  0 := 14 :=  3
    = &03  :=  0 :=  4 := 14
    = &03  :=  0 := 15 :=  4
    = &03  :=  0 :=  5 := 15
    = &03  :=  0 := 16 :=  5
    = &03  :=  0 :=  1 := 16

    = &03  := 12 :=  2 :=  1
    = &03  := 13 :=  3 :=  2
    = &03  := 14 :=  4 :=  3
    = &03  := 15 :=  5 :=  4
    = &03  := 16 :=  1 :=  5

    = &03  :=  6 := 27 :=  7
    = &03  :=  6 :=  7 := 28
    = &03  :=  6 := 28 :=  8
    = &03  :=  6 :=  8 := 29
    = &03  :=  6 := 29 :=  9
    = &03  :=  6 :=  9 := 30
    = &03  :=  6 := 30 := 10
    = &03  :=  6 := 10 := 31
    = &03  :=  6 := 31 := 11
    = &03  :=  6 := 11 := 27

    = &03  := 27 := 11 :=  7
    = &03  := 28 :=  7 :=  8
    = &03  := 29 :=  8 :=  9
    = &03  := 30 :=  9 := 10
    = &03  := 31 := 10 := 11

    = &03  := 17 :=  1 :=  2
    = &03  := 17 :=  2 :=  7
    = &03  := 17 :=  7 :=  1

    = &03  := 18 :=  2 :=  3
    = &03  := 18 :=  3 :=  8
    = &03  := 18 :=  8 :=  2

    = &03  := 19 :=  3 :=  4
    = &03  := 19 :=  4 :=  9
    = &03  := 19 :=  9 :=  3

    = &03  := 20 :=  4 :=  5
    = &03  := 20 :=  5 := 10
    = &03  := 20 := 10 :=  4

    = &03  := 21 :=  5 :=  1
    = &03  := 21 :=  1 := 11
    = &03  := 21 := 11 :=  5

    = &03  := 22 :=  1 :=  7
    = &03  := 22 :=  7 := 11
    = &03  := 22 := 11 :=  1

    = &03  := 23 :=  2 :=  8
    = &03  := 23 :=  8 :=  7
    = &03  := 23 :=  7 :=  2

    = &03  := 24 :=  3 :=  9
    = &03  := 24 :=  9 :=  8
    = &03  := 24 :=  8 :=  3

    = &03  := 25 :=  4 := 10
    = &03  := 25 := 10 :=  9
    = &03  := 25 :=  9 :=  4

    = &03  := 26 :=  5 := 11
    = &03  := 26 := 11 := 10
    = &03  := 26 := 10 :=  5

    = 0
    ALIGN
  ]
WHEN 29
  [ OPT Pass                            ; Great stellated dodecahedron

  .Vertices
    DCD    0 :DCD    0 :DCD + 64
    DCD + 57 :DCD    0 :DCD + 29
    DCD + 18 :DCD - 54 :DCD + 29
    DCD - 46 :DCD - 34 :DCD + 29
    DCD - 46 :DCD + 34 :DCD + 29
    DCD + 18 :DCD + 54 :DCD + 29
    DCD    0 :DCD    0 :DCD - 64
    DCD + 46 :DCD - 34 :DCD - 29
    DCD - 18 :DCD - 54 :DCD - 29
    DCD - 57 :DCD    0 :DCD - 29
    DCD - 18 :DCD + 54 :DCD - 29
    DCD + 46 :DCD + 34 :DCD - 29

    DCD - 93 :DCD    0 :DCD +121
    DCD - 29 :DCD + 88 :DCD +121
    DCD + 75 :DCD + 54 :DCD +121
    DCD + 75 :DCD - 54 :DCD +121
    DCD - 29 :DCD - 88 :DCD +121
    DCD +121 :DCD - 88 :DCD + 29
    DCD - 46 :DCD -143 :DCD + 29
    DCD -150 :DCD    0 :DCD + 29
    DCD - 46 :DCD +143 :DCD + 29
    DCD +121 :DCD + 88 :DCD + 29
    DCD +150 :DCD    0 :DCD - 29
    DCD + 46 :DCD -143 :DCD - 29
    DCD -121 :DCD - 88 :DCD - 29
    DCD -121 :DCD + 88 :DCD - 29
    DCD + 46 :DCD +143 :DCD - 29
    DCD - 75 :DCD + 54 :DCD -121
    DCD + 29 :DCD + 88 :DCD -121
    DCD + 93 :DCD    0 :DCD -121
    DCD + 29 :DCD - 88 :DCD -121
    DCD - 75 :DCD - 54 :DCD -121
  .EndVertices

  .Faces
    = &03  :=  12 :=  0 :=  4
    = &03  :=  12 :=  4 :=  3
    = &03  :=  12 :=  3 :=  0

    = &03  :=  13 :=  0 :=  5
    = &03  :=  13 :=  5 :=  4
    = &03  :=  13 :=  4 :=  0

    = &03  :=  14 :=  0 :=  1
    = &03  :=  14 :=  1 :=  5
    = &03  :=  14 :=  5 :=  0

    = &03  :=  15 :=  0 :=  2
    = &03  :=  15 :=  2 :=  1
    = &03  :=  15 :=  1 :=  0

    = &03  :=  16 :=  0 :=  3
    = &03  :=  16 :=  3 :=  2
    = &03  :=  16 :=  2 :=  0

    = &03  :=  17 :=  1 :=  2
    = &03  :=  17 :=  2 :=  7
    = &03  :=  17 :=  7 :=  1

    = &03  :=  18 :=  2 :=  3
    = &03  :=  18 :=  3 :=  8
    = &03  :=  18 :=  8 :=  2

    = &03  :=  19 :=  3 :=  4
    = &03  :=  19 :=  4 :=  9
    = &03  :=  19 :=  9 :=  3

    = &03  :=  20 :=  4 :=  5
    = &03  :=  20 :=  5 := 10
    = &03  :=  20 := 10 :=  4

    = &03  :=  21 :=  5 :=  1
    = &03  :=  21 :=  1 := 11
    = &03  :=  21 := 11 :=  5

    = &03  :=  22 :=  7 := 11
    = &03  :=  22 :=  1 :=  7
    = &03  :=  22 := 11 :=  1

    = &03  :=  23 :=  8 :=  7
    = &03  :=  23 :=  2 :=  8
    = &03  :=  23 :=  7 :=  2

    = &03  :=  24 :=  9 :=  8
    = &03  :=  24 :=  3 :=  9
    = &03  :=  24 :=  8 :=  3

    = &03  :=  25 := 10 :=  9
    = &03  :=  25 :=  4 := 10
    = &03  :=  25 :=  9 :=  4

    = &03  :=  26 := 11 := 10
    = &03  :=  26 :=  5 := 11
    = &03  :=  26 := 10 :=  5

    = &03  :=  27 :=  9 := 10
    = &03  :=  27 := 10 :=  6
    = &03  :=  27 :=  6 :=  9

    = &03  :=  28 := 10 := 11
    = &03  :=  28 := 11 :=  6
    = &03  :=  28 :=  6 := 10

    = &03  :=  29 := 11 :=  7
    = &03  :=  29 :=  7 :=  6
    = &03  :=  29 :=  6 := 11

    = &03  :=  30 :=  7 :=  8
    = &03  :=  30 :=  8 :=  6
    = &03  :=  30 :=  6 :=  7

    = &03  :=  31 :=  8 :=  9
    = &03  :=  31 :=  9 :=  6
    = &03  :=  31 :=  6 :=  8

    = 0
    ALIGN
  ]
WHEN 30
  [ OPT Pass                            ; Great dodecadodecahedron

  .Vertices
    DCD + 22 :DCD - 68 :DCD +116   ; 0
    DCD - 58 :DCD - 42 :DCD +116
    DCD - 58 :DCD + 42 :DCD +116
    DCD + 22 :DCD + 68 :DCD +116
    DCD + 72 :DCD    0 :DCD +116
    DCD + 94 :DCD - 68 :DCD + 72
    DCD - 36 :DCD -110 :DCD + 72
    DCD -116 :DCD    0 :DCD + 72
    DCD - 36 :DCD +110 :DCD + 72
    DCD + 94 :DCD + 68 :DCD + 72
    DCD +129 :DCD + 42 :DCD    0
    DCD +129 :DCD - 42 :DCD    0
    DCD + 80 :DCD -110 :DCD    0
    DCD    0 :DCD -136 :DCD    0
    DCD - 80 :DCD -110 :DCD    0
    DCD -129 :DCD - 42 :DCD    0
    DCD -129 :DCD + 42 :DCD    0
    DCD - 80 :DCD +110 :DCD    0
    DCD    0 :DCD +136 :DCD    0
    DCD + 80 :DCD +110 :DCD    0
    DCD +116 :DCD    0 :DCD - 72
    DCD + 36 :DCD -110 :DCD - 72
    DCD - 94 :DCD - 68 :DCD - 72
    DCD - 94 :DCD + 68 :DCD - 72
    DCD + 36 :DCD +110 :DCD - 72
    DCD + 58 :DCD - 42 :DCD -116
    DCD - 22 :DCD - 68 :DCD -116
    DCD - 72 :DCD    0 :DCD -116
    DCD - 22 :DCD + 68 :DCD -116
    DCD + 58 :DCD + 42 :DCD -116

    DCD + 44 :DCD - 32 :DCD + 72   ; 30
    DCD - 17 :DCD - 52 :DCD + 72
    DCD - 55 :DCD    0 :DCD + 72
    DCD - 17 :DCD + 52 :DCD + 72
    DCD + 44 :DCD + 32 :DCD + 72
    DCD + 72 :DCD - 52 :DCD + 17
    DCD - 27 :DCD - 84 :DCD + 17
    DCD - 88 :DCD    0 :DCD + 17
    DCD - 27 :DCD + 84 :DCD + 17
    DCD + 72 :DCD + 52 :DCD + 17
    DCD + 88 :DCD    0 :DCD - 17
    DCD + 27 :DCD - 84 :DCD - 17
    DCD - 72 :DCD - 52 :DCD - 17
    DCD - 72 :DCD + 52 :DCD - 17
    DCD + 27 :DCD + 84 :DCD - 17
    DCD + 55 :DCD    0 :DCD - 72
    DCD + 17 :DCD - 52 :DCD - 72
    DCD - 44 :DCD - 32 :DCD - 72
    DCD - 44 :DCD + 32 :DCD - 72
    DCD + 17 :DCD + 52 :DCD - 72

    DCD -  8 :DCD - 26 :DCD +116   ; 50
    DCD - 27 :DCD    0 :DCD +116
    DCD -  8 :DCD + 26 :DCD +116
    DCD + 22 :DCD + 16 :DCD +116
    DCD + 22 :DCD - 16 :DCD +116

    DCD + 44 :DCD - 84 :DCD + 72   ; 55
    DCD + 14 :DCD - 94 :DCD + 72
    DCD - 66 :DCD - 68 :DCD + 72
    DCD - 85 :DCD - 42 :DCD + 72
    DCD - 85 :DCD + 42 :DCD + 72
    DCD - 66 :DCD + 68 :DCD + 72
    DCD + 14 :DCD + 94 :DCD + 72
    DCD + 44 :DCD + 84 :DCD + 72
    DCD + 94 :DCD + 16 :DCD + 72
    DCD + 94 :DCD - 16 :DCD + 72

    DCD +107 :DCD + 26 :DCD + 44   ; 65
    DCD +107 :DCD - 26 :DCD + 44
    DCD + 58 :DCD - 94 :DCD + 44
    DCD +  8 :DCD -110 :DCD + 44
    DCD - 72 :DCD - 84 :DCD + 44
    DCD -102 :DCD - 42 :DCD + 44
    DCD -102 :DCD + 42 :DCD + 44
    DCD - 72 :DCD + 84 :DCD + 44
    DCD +  8 :DCD +110 :DCD + 44
    DCD + 58 :DCD + 94 :DCD + 44

    DCD + 36 :DCD -110 :DCD + 27   ; 75
    DCD - 94 :DCD - 68 :DCD + 27
    DCD - 94 :DCD + 68 :DCD + 27
    DCD + 36 :DCD +110 :DCD + 27
    DCD +116 :DCD    0 :DCD + 27

    DCD + 94 :DCD - 68 :DCD - 27   ; 80
    DCD - 36 :DCD -110 :DCD - 27
    DCD -116 :DCD    0 :DCD - 27
    DCD - 36 :DCD +110 :DCD - 27
    DCD + 94 :DCD + 68 :DCD - 27

    DCD +102 :DCD - 42 :DCD - 44   ; 85
    DCD + 72 :DCD - 84 :DCD - 44
    DCD -  8 :DCD -110 :DCD - 44
    DCD - 58 :DCD - 94 :DCD - 44
    DCD -107 :DCD - 26 :DCD - 44
    DCD -107 :DCD + 26 :DCD - 44
    DCD - 58 :DCD + 94 :DCD - 44
    DCD -  8 :DCD +110 :DCD - 44
    DCD + 72 :DCD + 84 :DCD - 44
    DCD +102 :DCD + 42 :DCD - 44

    DCD + 85 :DCD - 42 :DCD - 72   ; 95
    DCD + 66 :DCD - 68 :DCD - 72
    DCD - 14 :DCD - 94 :DCD - 72
    DCD - 44 :DCD - 84 :DCD - 72
    DCD - 94 :DCD - 16 :DCD - 72
    DCD - 94 :DCD + 16 :DCD - 72
    DCD - 44 :DCD + 84 :DCD - 72
    DCD - 14 :DCD + 94 :DCD - 72
    DCD + 66 :DCD + 68 :DCD - 72
    DCD + 85 :DCD + 42 :DCD - 72

    DCD +  8 :DCD - 26 :DCD -116   ; 105
    DCD - 22 :DCD - 16 :DCD -116
    DCD - 22 :DCD + 16 :DCD -116
    DCD +  8 :DCD + 26 :DCD -116
    DCD + 27 :DCD    0 :DCD -116
  .EndVertices

  .Faces
    = &0A  :=   0 := 50 :=  1 := 51 :=  2 := 52 :=  3 := 53 :=  4 := 54

    = &44  :=  30 := 64 :=  4 := 54
    = &44  :=  30 := 54 :=  0 := 55
    = &44  :=  30 := 55 :=  5 := 64

    = &44  :=  31 := 56 :=  0 := 50
    = &44  :=  31 := 50 :=  1 := 57
    = &44  :=  31 := 57 :=  6 := 56

    = &44  :=  32 := 58 :=  1 := 51
    = &44  :=  32 := 51 :=  2 := 59
    = &44  :=  32 := 59 :=  7 := 58

    = &44  :=  33 := 60 :=  2 := 52
    = &44  :=  33 := 52 :=  3 := 61
    = &44  :=  33 := 61 :=  8 := 60

    = &44  :=  34 := 62 :=  3 := 53
    = &44  :=  34 := 53 :=  4 := 63
    = &44  :=  34 := 63 :=  9 := 62

    = &0A  :=   0 := 55 :=  5 := 67 := 12 := 75 := 13 := 68 :=  6 := 56
    = &0A  :=   1 := 57 :=  6 := 69 := 14 := 76 := 15 := 70 :=  7 := 58
    = &0A  :=   2 := 59 :=  7 := 71 := 16 := 77 := 17 := 72 :=  8 := 60
    = &0A  :=   3 := 61 :=  8 := 73 := 18 := 78 := 19 := 74 :=  9 := 62
    = &0A  :=   4 := 63 :=  9 := 65 := 10 := 79 := 11 := 66 :=  5 := 64

    = &44  :=  35 := 66 :=  5 := 67
    = &44  :=  35 := 67 := 12 := 80
    = &44  :=  35 := 80 := 11 := 66

    = &44  :=  36 := 68 :=  6 := 69
    = &44  :=  36 := 69 := 14 := 81
    = &44  :=  36 := 81 := 13 := 68

    = &44  :=  37 := 70 :=  7 := 71
    = &44  :=  37 := 71 := 16 := 82
    = &44  :=  37 := 82 := 15 := 70

    = &44  :=  38 := 72 :=  8 := 73
    = &44  :=  38 := 73 := 18 := 83
    = &44  :=  38 := 83 := 17 := 72

    = &44  :=  39 := 74 :=  9 := 65
    = &44  :=  39 := 65 := 10 := 84
    = &44  :=  39 := 84 := 19 := 74

    = &44  :=  40 := 79 := 11 := 85
    = &44  :=  40 := 94 := 10 := 79
    = &44  :=  40 := 85 := 20 := 94

    = &44  :=  41 := 75 := 13 := 87
    = &44  :=  41 := 86 := 12 := 75
    = &44  :=  41 := 87 := 21 := 86

    = &44  :=  42 := 76 := 15 := 89
    = &44  :=  42 := 88 := 14 := 76
    = &44  :=  42 := 89 := 22 := 88

    = &44  :=  43 := 77 := 17 := 91
    = &44  :=  43 := 90 := 16 := 77
    = &44  :=  43 := 91 := 23 := 90

    = &44  :=  44 := 78 := 19 := 93
    = &44  :=  44 := 92 := 18 := 78
    = &44  :=  44 := 93 := 24 := 92

    = &0A  :=  25 := 96 := 21 := 86 := 12 := 80 := 11 := 85 := 20 := 95
    = &0A  :=  26 := 98 := 22 := 88 := 14 := 81 := 13 := 87 := 21 := 97
    = &0A  :=  27 :=100 := 23 := 90 := 16 := 82 := 15 := 89 := 22 := 99
    = &0A  :=  28 :=102 := 24 := 92 := 18 := 83 := 17 := 91 := 23 :=101
    = &0A  :=  29 :=104 := 20 := 94 := 10 := 84 := 19 := 93 := 24 :=103

    = &44  :=  45 :=104 := 20 := 95
    = &44  :=  45 := 95 := 25 :=109
    = &44  :=  45 :=109 := 29 :=104

    = &44  :=  46 := 96 := 21 := 97
    = &44  :=  46 := 97 := 26 :=105
    = &44  :=  46 :=105 := 25 := 96

    = &44  :=  47 := 98 := 22 := 99
    = &44  :=  47 := 99 := 27 :=106
    = &44  :=  47 :=106 := 26 := 98

    = &44  :=  48 :=100 := 23 :=101
    = &44  :=  48 :=101 := 28 :=107
    = &44  :=  48 :=107 := 27 :=100

    = &44  :=  49 :=102 := 24 :=103
    = &44  :=  49 :=103 := 29 :=108
    = &44  :=  49 :=108 := 28 :=102

    = &0A  :=  25 :=109 := 29 :=108 := 28 :=107 := 27 :=106 := 26 :=105
    = 0
    ALIGN
  ]
WHEN 31
  [ OPT Pass                            ; Computer Concepts CC logo

  .Vertices
    DCD + 40 :DCD + 90 :DCD + 24    ; 0
    DCD + 28 :DCD +118 :DCD + 24
    DCD    0 :DCD +130 :DCD + 24
    DCD - 60 :DCD +130 :DCD + 24
    DCD - 88 :DCD +118 :DCD + 24
    DCD -100 :DCD + 90 :DCD + 24    ; 5
    DCD -100 :DCD - 10 :DCD + 24
    DCD - 88 :DCD - 38 :DCD + 24
    DCD - 60 :DCD - 50 :DCD + 24
    DCD - 40 :DCD - 50 :DCD + 24
    DCD - 40 :DCD - 90 :DCD + 24    ; 10
    DCD - 28 :DCD -118 :DCD + 24
    DCD    0 :DCD -130 :DCD + 24
    DCD + 60 :DCD -130 :DCD + 24
    DCD + 88 :DCD -118 :DCD + 24
    DCD +100 :DCD - 90 :DCD + 24    ; 15
    DCD + 80 :DCD - 90 :DCD + 24
    DCD + 74 :DCD -104 :DCD + 24
    DCD + 60 :DCD -110 :DCD + 24
    DCD    0 :DCD -110 :DCD + 24
    DCD - 14 :DCD -104 :DCD + 24    ; 20
    DCD - 20 :DCD - 90 :DCD + 24
    DCD - 20 :DCD - 50 :DCD + 24
    DCD    0 :DCD - 50 :DCD + 24
    DCD + 28 :DCD - 38 :DCD + 24
    DCD + 40 :DCD - 10 :DCD + 24    ; 25
    DCD + 20 :DCD - 10 :DCD + 24
    DCD + 14 :DCD - 24 :DCD + 24
    DCD    0 :DCD - 30 :DCD + 24
    DCD - 20 :DCD - 30 :DCD + 24
    DCD - 20 :DCD + 10 :DCD + 24    ; 30
    DCD - 14 :DCD + 24 :DCD + 24
    DCD    0 :DCD + 30 :DCD + 24
    DCD + 60 :DCD + 30 :DCD + 24
    DCD + 74 :DCD + 24 :DCD + 24
    DCD + 80 :DCD + 10 :DCD + 24    ; 35
    DCD +100 :DCD + 10 :DCD + 24
    DCD + 88 :DCD + 38 :DCD + 24
    DCD + 60 :DCD + 50 :DCD + 24
    DCD    0 :DCD + 50 :DCD + 24
    DCD - 28 :DCD + 38 :DCD + 24    ; 40
    DCD - 40 :DCD + 10 :DCD + 24
    DCD - 40 :DCD - 30 :DCD + 24
    DCD - 60 :DCD - 30 :DCD + 24
    DCD - 74 :DCD - 24 :DCD + 24
    DCD - 80 :DCD - 10 :DCD + 24    ; 45
    DCD - 80 :DCD + 90 :DCD + 24
    DCD - 74 :DCD +104 :DCD + 24
    DCD - 60 :DCD +110 :DCD + 24
    DCD    0 :DCD +110 :DCD + 24
    DCD + 14 :DCD +104 :DCD + 24    ; 50
    DCD + 20 :DCD + 90 :DCD + 24
 
    DCD + 40 :DCD + 90 :DCD - 24    ; 0
    DCD + 28 :DCD +118 :DCD - 24
    DCD    0 :DCD +130 :DCD - 24
    DCD - 60 :DCD +130 :DCD - 24
    DCD - 88 :DCD +118 :DCD - 24
    DCD -100 :DCD + 90 :DCD - 24    ; 5
    DCD -100 :DCD - 10 :DCD - 24
    DCD - 88 :DCD - 38 :DCD - 24
    DCD - 60 :DCD - 50 :DCD - 24
    DCD - 40 :DCD - 50 :DCD - 24
    DCD - 40 :DCD - 90 :DCD - 24    ; 10
    DCD - 28 :DCD -118 :DCD - 24
    DCD    0 :DCD -130 :DCD - 24
    DCD + 60 :DCD -130 :DCD - 24
    DCD + 88 :DCD -118 :DCD - 24
    DCD +100 :DCD - 90 :DCD - 24    ; 15
    DCD + 80 :DCD - 90 :DCD - 24
    DCD + 74 :DCD -104 :DCD - 24
    DCD + 60 :DCD -110 :DCD - 24
    DCD    0 :DCD -110 :DCD - 24
    DCD - 14 :DCD -104 :DCD - 24    ; 20
    DCD - 20 :DCD - 90 :DCD - 24
    DCD - 20 :DCD - 50 :DCD - 24
    DCD    0 :DCD - 50 :DCD - 24
    DCD + 28 :DCD - 38 :DCD - 24
    DCD + 40 :DCD - 10 :DCD - 24    ; 25
    DCD + 20 :DCD - 10 :DCD - 24
    DCD + 14 :DCD - 24 :DCD - 24
    DCD    0 :DCD - 30 :DCD - 24
    DCD - 20 :DCD - 30 :DCD - 24
    DCD - 20 :DCD + 10 :DCD - 24    ; 30
    DCD - 14 :DCD + 24 :DCD - 24
    DCD    0 :DCD + 30 :DCD - 24
    DCD + 60 :DCD + 30 :DCD - 24
    DCD + 74 :DCD + 24 :DCD - 24
    DCD + 80 :DCD + 10 :DCD - 24    ; 35
    DCD +100 :DCD + 10 :DCD - 24
    DCD + 88 :DCD + 38 :DCD - 24
    DCD + 60 :DCD + 50 :DCD - 24
    DCD    0 :DCD + 50 :DCD - 24
    DCD - 28 :DCD + 38 :DCD - 24    ; 40
    DCD - 40 :DCD + 10 :DCD - 24
    DCD - 40 :DCD - 30 :DCD - 24
    DCD - 60 :DCD - 30 :DCD - 24
    DCD - 74 :DCD - 24 :DCD - 24
    DCD - 80 :DCD - 10 :DCD - 24    ; 45
    DCD - 80 :DCD + 90 :DCD - 24
    DCD - 74 :DCD +104 :DCD - 24
    DCD - 60 :DCD +110 :DCD - 24
    DCD    0 :DCD +110 :DCD - 24
    DCD + 14 :DCD +104 :DCD - 24    ; 50
    DCD + 20 :DCD + 90 :DCD - 24

    DCD - 30 :DCD - 40 :DCD + 24
    DCD - 30 :DCD - 40 :DCD - 24
  .EndVertices

  .Faces
    = &06  :=  1 :=  2 := 49 := 50 := 51 :=  0
    = &04  :=  2 :=  3 := 48 := 49
    = &06  :=  4 :=  5 := 46 := 47 := 48 :=  3
    = &04  :=  5 :=  6 := 45 := 46
    = &09  := 44 := 45 :=  6 :=  7 :=  8 :=  9 :=104 := 42 := 43
    = &09  := 11 := 12 := 19 := 20 := 21 := 22 :=104 :=  9 := 10
    = &04  := 12 := 13 := 18 := 19
    = &06  := 18 := 13 := 14 := 15 := 16 := 17
    = &09  := 24 := 25 := 26 := 27 := 28 := 29 :=104 := 22 := 23
    = &09  := 31 := 32 := 39 := 40 := 41 := 42 :=104 := 29 := 30
    = &04  := 32 := 33 := 38 := 39
    = &06  := 35 := 36 := 37 := 38 := 33 := 34
  ]
  Q%=Faces
  FOR X%=0 TO 11
    ?P%=?Q%:P%+=1
    FOR Y%=?Q% TO 1 STEP -1
      IF Q%?Y%=104 THEN ?P%=105 ELSE ?P%=52+Q%?Y%
      P%+=1
    NEXT
    Q%+=?Q%+1
  NEXT
  FOR X%=0 TO 50
    [ OPT Pass
      = &04  := X%+1 := X% := X%+52 := X%+53
    ]
  NEXT
  [ OPT Pass
    = &04  := 0 := 51 := 52+51 := 52+0
    = 0
    ALIGN
  ]
WHEN 32
  [ OPT Pass                            ; Corpuscle

  .Vertices
  ]
  A%=100
  B2%=10000
  FOR I%=-5 TO +5
    CASE I% OF
    WHEN -5:Z%=-43
    WHEN -4:Z%=-38
    WHEN -3:Z%=-31
    WHEN -2:Z%=-22
    WHEN -1:Z%=-11
    WHEN  0:Z%=  0
    WHEN +1:Z%=+11
    WHEN +2:Z%=+22
    WHEN +3:Z%=+31
    WHEN +4:Z%=+38
    WHEN +5:Z%=+43
    ENDCASE
    C=COS RAD(2*Z%)
    R=SQR(A%^2*C+SQR(A%^4*(C^2-1)+B2%^2))
    RC=R*COS RAD Z%
    RS=R*SIN RAD Z%
    FOR X%=0 TO 360-30 STEP 30
      [ OPT Pass
        DCD RC*COS RAD X% :DCD RC*SIN RAD X% :DCD -RS
      ]
    NEXT
  NEXT
  [ OPT Pass
    DCD 0 :DCD 0 :DCD +SQR(B2%-A%^2)
    DCD 0 :DCD 0 :DCD -SQR(B2%-A%^2)
  .EndVertices

  .Faces
  ]
  FOR X%=0 TO 12-1
    X1%=(X%+1) MOD 12
    [ OPT Pass
    = &03  :=  132     :=     X% := X1%
    = &03  :=  120+X1% := 120+X% := 133
    ]
    FOR Z%=0 TO 12*10-12 STEP 12
      [ OPT Pass
        = &04  := Z%+X1% := Z%+X% := (Z%+12)+X% := (Z%+12)+X1%
      ]
    NEXT
  NEXT
  [ OPT Pass
    = 0
    ALIGN
  ]
WHEN 33
  [ OPT Pass                            ; Eight cubes

  .Vertices
    DCD + 30 :DCD + 30 :DCD - 90   ; 0
    DCD + 90 :DCD + 30 :DCD - 90   ; 1
    DCD + 90 :DCD + 30 :DCD - 30   ; 2
    DCD + 30 :DCD + 30 :DCD - 30   ; 3
    DCD + 30 :DCD + 90 :DCD - 90   ; 4
    DCD + 90 :DCD + 90 :DCD - 90   ; 5
    DCD + 90 :DCD + 90 :DCD - 30   ; 6
    DCD + 30 :DCD + 90 :DCD - 30   ; 7

    DCD - 90 :DCD + 30 :DCD - 90   ; 8
    DCD - 30 :DCD + 30 :DCD - 90   ; 9
    DCD - 30 :DCD + 30 :DCD - 30   ; 10
    DCD - 90 :DCD + 30 :DCD - 30   ; 11
    DCD - 90 :DCD + 90 :DCD - 90   ; 12
    DCD - 30 :DCD + 90 :DCD - 90   ; 13
    DCD - 30 :DCD + 90 :DCD - 30   ; 14
    DCD - 90 :DCD + 90 :DCD - 30   ; 15

    DCD + 30 :DCD - 90 :DCD - 90   ; 0
    DCD + 90 :DCD - 90 :DCD - 90   ; 1
    DCD + 90 :DCD - 90 :DCD - 30   ; 2
    DCD + 30 :DCD - 90 :DCD - 30   ; 3
    DCD + 30 :DCD - 30 :DCD - 90   ; 4
    DCD + 90 :DCD - 30 :DCD - 90   ; 5
    DCD + 90 :DCD - 30 :DCD - 30   ; 6
    DCD + 30 :DCD - 30 :DCD - 30   ; 7

    DCD - 90 :DCD - 90 :DCD - 90   ; 8
    DCD - 30 :DCD - 90 :DCD - 90   ; 9
    DCD - 30 :DCD - 90 :DCD - 30   ; 10
    DCD - 90 :DCD - 90 :DCD - 30   ; 11
    DCD - 90 :DCD - 30 :DCD - 90   ; 12
    DCD - 30 :DCD - 30 :DCD - 90   ; 13
    DCD - 30 :DCD - 30 :DCD - 30   ; 14
    DCD - 90 :DCD - 30 :DCD - 30   ; 15

    DCD + 30 :DCD + 30 :DCD + 30   ; 0
    DCD + 90 :DCD + 30 :DCD + 30   ; 1
    DCD + 90 :DCD + 30 :DCD + 90   ; 2
    DCD + 30 :DCD + 30 :DCD + 90   ; 3
    DCD + 30 :DCD + 90 :DCD + 30   ; 4
    DCD + 90 :DCD + 90 :DCD + 30   ; 5
    DCD + 90 :DCD + 90 :DCD + 90   ; 6
    DCD + 30 :DCD + 90 :DCD + 90   ; 7

    DCD - 90 :DCD + 30 :DCD + 30   ; 8
    DCD - 30 :DCD + 30 :DCD + 30   ; 9
    DCD - 30 :DCD + 30 :DCD + 90   ; 10
    DCD - 90 :DCD + 30 :DCD + 90   ; 11
    DCD - 90 :DCD + 90 :DCD + 30   ; 12
    DCD - 30 :DCD + 90 :DCD + 30   ; 13
    DCD - 30 :DCD + 90 :DCD + 90   ; 14
    DCD - 90 :DCD + 90 :DCD + 90   ; 15

    DCD + 30 :DCD - 90 :DCD + 30   ; 0
    DCD + 90 :DCD - 90 :DCD + 30   ; 1
    DCD + 90 :DCD - 90 :DCD + 90   ; 2
    DCD + 30 :DCD - 90 :DCD + 90   ; 3
    DCD + 30 :DCD - 30 :DCD + 30   ; 4
    DCD + 90 :DCD - 30 :DCD + 30   ; 5
    DCD + 90 :DCD - 30 :DCD + 90   ; 6
    DCD + 30 :DCD - 30 :DCD + 90   ; 7

    DCD - 90 :DCD - 90 :DCD + 30   ; 8
    DCD - 30 :DCD - 90 :DCD + 30   ; 9
    DCD - 30 :DCD - 90 :DCD + 90   ; 10
    DCD - 90 :DCD - 90 :DCD + 90   ; 11
    DCD - 90 :DCD - 30 :DCD + 30   ; 12
    DCD - 30 :DCD - 30 :DCD + 30   ; 13
    DCD - 30 :DCD - 30 :DCD + 90   ; 14
    DCD - 90 :DCD - 30 :DCD + 90   ; 15
  .EndVertices

  .Faces
    = &04  :=   0 :=  4 :=  5 :=  1
    = &04  :=   1 :=  5 :=  6 :=  2
    = &04  :=   2 :=  6 :=  7 :=  3
    = &04  :=   3 :=  7 :=  4 :=  0
    = &04  :=   0 :=  1 :=  2 :=  3
    = &04  :=   7 :=  6 :=  5 :=  4

    = &04  :=   8 := 12 := 13 :=  9
    = &04  :=   9 := 13 := 14 := 10
    = &04  :=  10 := 14 := 15 := 11
    = &04  :=  11 := 15 := 12 :=  8
    = &04  :=   8 :=  9 := 10 := 11
    = &04  :=  15 := 14 := 13 := 12

    = &04  :=  16 := 20 := 21 := 17
    = &04  :=  17 := 21 := 22 := 18
    = &04  :=  18 := 22 := 23 := 19
    = &04  :=  19 := 23 := 20 := 16
    = &04  :=  16 := 17 := 18 := 19
    = &04  :=  23 := 22 := 21 := 20

    = &04  :=  24 := 28 := 29 := 25
    = &04  :=  25 := 29 := 30 := 26
    = &04  :=  26 := 30 := 31 := 27
    = &04  :=  27 := 31 := 28 := 24
    = &04  :=  24 := 25 := 26 := 27
    = &04  :=  31 := 30 := 29 := 28

    = &04  :=  32 := 36 := 37 := 33
    = &04  :=  33 := 37 := 38 := 34
    = &04  :=  34 := 38 := 39 := 35
    = &04  :=  35 := 39 := 36 := 32
    = &04  :=  32 := 33 := 34 := 35
    = &04  :=  39 := 38 := 37 := 36

    = &04  :=  40 := 44 := 45 := 41
    = &04  :=  41 := 45 := 46 := 42
    = &04  :=  42 := 46 := 47 := 43
    = &04  :=  43 := 47 := 44 := 40
    = &04  :=  40 := 41 := 42 := 43
    = &04  :=  47 := 46 := 45 := 44

    = &04  :=  48 := 52 := 53 := 49
    = &04  :=  49 := 53 := 54 := 50
    = &04  :=  50 := 54 := 55 := 51
    = &04  :=  51 := 55 := 52 := 48
    = &04  :=  48 := 49 := 50 := 51
    = &04  :=  55 := 54 := 53 := 52

    = &04  :=  56 := 60 := 61 := 57
    = &04  :=  57 := 61 := 62 := 58
    = &04  :=  58 := 62 := 63 := 59
    = &04  :=  59 := 63 := 60 := 56
    = &04  :=  56 := 57 := 58 := 59
    = &04  :=  63 := 62 := 61 := 60

    = 0
    ALIGN
  ]

WHEN 34
  [ OPT Pass                            ; Acorn

  .Vertices
  ]
  RV%=144
  RH%=80
  RHL%=88
  BL%=96

  REM Top
  [ OPT Pass
    DCD 0 :DCD 0 :DCD RV%
  ]
  FOR Z%=15 TO 90 STEP 15
    RS=RH%*SIN RAD Z%
    RC=RV%*COS RAD Z%
    FOR X%=0 TO 360-30 STEP 30
      [ OPT Pass
        DCD RS*COS RAD X% :DCD RS*SIN RAD X% :DCD RC
      ]
    NEXT
  NEXT

  REM Lip to bottom
  FOR Z%=30 TO 90 STEP 30
    RS=RH%+(RHL%-RH%)*SIN RAD Z%
    RC=(RHL%-RH%)*COS RAD Z%-(RHL%-RH%)
    FOR X%=0 TO 360-30 STEP 30
      [ OPT Pass
        DCD RS*COS RAD X% :DCD RS*SIN RAD X% :DCD RC
      ]
    NEXT X%
  NEXT Z%

  REM Bottom
  FOR Z%=90+12 TO 90+84 STEP 12
    RS=RHL%*SIN RAD Z%
    RC=RHL%*COS RAD Z%-(RHL%-RH%)
    FOR X%=0 TO 360-30 STEP 30
      [ OPT Pass
        DCD RS*COS RAD X% :DCD RS*SIN RAD X% :DCD RC
      ]
    NEXT
  NEXT

  REM Stalk
    RC = RC-25
    FOR X%=0 TO 360-30 STEP 30
      [ OPT Pass
        DCD RS*COS RAD X% :DCD RS*SIN RAD X% :DCD RC
      ]
    NEXT

  REM Branch
    FOR X%=-3 TO 3
      X = X%*BL%/3
      Z = -(X/3+X*X/1600)
      FOR A%=60 TO 360 STEP 60
        [ OPT Pass
          DCD X :DCD (6+X%)*RS*COS RAD A%/6 :DCD RC + (6+X%)*RS*SIN RAD A%/6 + Z
        ]
      NEXT A%
    NEXT X%
  
  [ OPT Pass
  .EndVertices
  .Faces
  ]

  REM Top knot
  FOR X%=0 TO 11
    [ OPT Pass
      = &03  := 0         := X% + 1       := (X%+1) MOD 12 + 1
    ]
  NEXT X%

  REM Top (5 steps) + Lip (3 steps) + Bottom (7 steps) + Stalk (1 step)
  FOR X%=0 TO 4 + 3 + 7 + 1
    FOR Z%=0 TO 11
      [ OPT Pass
        = &04  := X%*12+(Z%+1)MOD12+1 := X%*12+Z%+1 := X%*12+Z%+13 := X%*12+(Z%+1)MOD12+13
      ]
    NEXT Z%
  NEXT X%

  REM Branch
    [ OPT Pass
      = &06 := 210 := 209 := 208 := 207 := 206 := 205
    ]
    FOR X%=-2 TO 3
      FOR A%=0 TO 5
        [ OPT Pass
          = &04 := (X%+2)*6+A%+205 := (X%+2)*6+(A%+1)MOD6+205 := (X%+3)*6+(A%+1)MOD6+205 := (X%+3)*6+A%+205
        ]
      NEXT A%
    NEXT X%
    [ OPT Pass
      = &06 := 241 := 242 := 243 := 244 := 245 := 246
    ]

  [ OPT Pass
    = 0
    ALIGN
  ]

ENDCASE

NEXT Pass

OSCLI("*Save ^.Shapes."+STR$(Shape)+" "+STR$~Code%+"+"+STR$~(P%-Code%))
OSCLI("*SetType ^.Shapes."+STR$(Shape)+" Data")
NEXT Shape
END
