%!PS-Adobe-2.0 /r 360 26 div def % degrees in each segment /Tempstr 2 string def % for writing value to a string /radius 225 def % size of outer circle /circleofLetters { [(A) (B) (C) (D) (E) (F) (G) (H) (I) (J) (K) (L) (M) (N) (O) (P) (Q) (R) (S) (T) (U) (V) (W) (X) (Y) (Z)] /ary exch def % the array of letters 0 1 25{ % from 0 to 25 in steps of 1 /ind exch def % the for loop value /rind ind 0 eq {0} {26 ind sub} ifelse def gsave ind r mul neg rotate % rotate by (for loop value)*360/26 /Helvetica-Bold findfont 23 scalefont setfont ary ind get stringwidth pop 2 div neg radius 5 sub moveto ary ind get show % convert ind to string, store in Tempstr, using cvs ind Tempstr cvs stringwidth pop 2 div neg radius 25 add moveto ind Tempstr cvs show 3 setlinewidth 0 radius 30 sub moveto 0 20 rlineto stroke grestore } for } def /circles { 3 setlinewidth newpath 0 0 radius 20 sub 0 360 arc stroke newpath 0 0 6 0 360 arc stroke } def /doitall { newpath -306 -396 moveto 612 0 rlineto 0 792 rlineto -612 0 rlineto closepath stroke gsave -306 -396 translate /Helvetica-Bold findfont 15 scalefont setfont 40 90 moveto (Place arrow of inner circle on pad character.) show 40 70 moveto (To encrypt, follow inner circle plaintext) show ( letter to outer circle ciphertext letter.) show /Helvetica-BoldOblique findfont 15 scalefont setfont 40 50 moveto (To decrypt, follow outer circle ciphertext) show ( letter to inner circle plaintext letter.) show 130 700 moveto (Outer letters belong to the ciphertext or to the pad.) show /Helvetica-Bold findfont 10 scalefont setfont 310 28 moveto (Copyright )show /Symbol findfont 10 scalefont setfont (\323) show /Helvetica-Bold findfont 10 scalefont setfont ( 2002 by Neal R. Wagner. All rights reserved.)show grestore /Helvetica-BoldOblique findfont 15 scalefont setfont -90 20 moveto (Attach smaller circle here.) show circleofLetters circles } def 8.5 72 mul 2 div 11 72 mul 2 div translate % 0.6 0.6 scale % scale factor for magnification doitall showpage