10 REM - THIS IS FACECIRC.BAS
20 CLS
30 REM - Constants
40 A = 4080: C = 5100: HF = 180: PLU = 40: E = 80: FA = 1: FB = 10: FC = 350
50 K = .017453293#: REM - This is PI/180
60 INPUT "Please Enter the Outside DIAMETER in MM - "; DIA: OR1 = DIA / 2: PRINT : PRINT
70 IR1 = OR1 - 3: PRINT : PRINT
80 IR2 = IR1 - 2: IR3 = IR1 - 1
90 REM - Radius is converted to plotter units (PLU)
100 OR2 = OR1 * PLU: IR4 = IR1 * PLU: IR5 = IR2 * PLU: IR6 = IR3 * PLU
110 PRINT : PRINT "Do you want the scale in Degrees or Hours and Minutes?"
120 INPUT "        Please indicate 'd' for Degrees or 'h' for Hours... "; A$: PRINT
130 IF A$ = "h" OR A$ = "H" THEN QQ = 1
140 REM - Clear, set into HP-GL/2 mode, and initialize the printer
150 LPRINT CHR$(27); "E" : LPRINT CHR$(27); "%0B" : LPRINT "IN;"
160 REM - Select a pen and set the width
170 LPRINT "SP1;": LPRINT "PW.1;"
180 PRINT : PRINT : PRINT "Printing......."
190 PRINT : PRINT "NOTE: This will take up to 70 seconds to print."
200 REM - Plot outside and inside circles
210 LPRINT "PA"; A; ","; C; ";": LPRINT "CI"; OR2; : LPRINT "PU;"
220 LPRINT "PA"; A; ","; C; ";": LPRINT "CI"; IR4; : LPRINT "PU;"
230 REM - Put in the Degrees or Hours
240 IF QQ = 1 THEN FA = 1.25
250 FOR I = -HF TO HF STEP FA
260 LPRINT "PU;"
270 LPRINT "PA"; A + SIN(I * K) * IR4; ","; C + COS(I * K) * IR4; ";"
280 LPRINT "PD;"
290 LPRINT "PA"; A + SIN(I * K) * OR2; ","; C + COS(I * K) * OR2; ";"
300 LPRINT "PU;"
310 NEXT I
320 REM - Put in longer tick marks
330 IF QQ = 1 THEN FB = 15
340 FOR I = -HF TO HF STEP FB
350 LPRINT "PU;"
360 LPRINT "PA"; A + SIN(I * K) * IR5; ","; C + COS(I * K) * IR5; ";"
370 LPRINT "PD;"
380 LPRINT "PA"; A + SIN(I * K) * OR2; ","; C + COS(I * K) * OR2; ";"
390 LPRINT "PU;"
400 NEXT I
410 REM - Put in shorter tick marks
420 FOR I = -HF TO HF STEP 5
430 LPRINT "PU;"
440 LPRINT "PA"; A + SIN(I * K) * IR6; ","; C + COS(I * K) * IR6; ";"
450 LPRINT "PD;"
460 LPRINT "PA"; A + SIN(I * K) * OR2; ","; C + COS(I * K) * OR2; ";"
470 LPRINT "PU;"
480 NEXT I
490 REM - Select Font and Label
500 LPRINT "SD1,21,2,1,4,8,7,4148;"
510 IF QQ = 1 THEN GOTO 530
520 IF OR1 < 45 THEN LPRINT "DV1;"
530 LPRINT "DT*,1;"
540 LPRINT "SS;"
550 LPRINT "LO16;"
560 IF QQ = 1 THEN FC = 345: FB = 15
570 FOR J = 0 TO FC STEP FB
580 LPRINT "PU;"
590 IF QQ = 1 THEN GOTO 610
600 IF OR1 < 45 THEN LPRINT "PA"; A + SIN(J * K) * (IR5 + E); ","; C + COS(J * K) * (IR5 + E); ";": GOTO 620
610 LPRINT "PA"; A + SIN(J * K) * IR5; ","; C + COS(J * K) * IR5; ";"
620 LPRINT "DI"; COS(-J * K); ","; SIN(-J * K); ";"
630 IF J = 90 THEN LPRINT "DI0,-1;"
640 IF J = 180 THEN LPRINT "DI-1,0;"
650 IF J = 270 THEN LPRINT "DI0,1;"
660 IF QQ = 1 THEN LPRINT "LB"; INT(J / 15); "*;": GOTO 680
670 LPRINT "LB"; INT(J); "*;"
680 LPRINT "PU;"
690 NEXT J
700 REM - Reset the printer
710 LPRINT CHR$(27); "%0A": LPRINT CHR$(27); "E"
720 END
900 REM  ***********************************************
910 REM  THIS PROGRAM BY RONALD KOCELA PRODUCES CIRCULAR
920 REM  SETTING CIRCLES ON HP LASERJET PRINTERS.
930 REM  FROM SKY & TELESCOPE, MARCH 1996, PAGE 84.
940 REM  ***********************************************
