10 REM Tom Lake Fixed Program TLHAT1.BAS 20 REM ARCHIMEDES SPIRAL PORT 30 REM SETUP TERMINAL DRAW FUNCTIONS FOR ALTAIR PRO 8800 TERMINAL 40 F1$="[Z1;": F2$=";": F3$="Z": F4$="[": F5$="H": F6$="[H" 55 F7$="[2J": F8$="[Z6;" 60 ESC$=CHR$(27) 70 HOME$=ESC$+F6$ 80 CLS$=ESC$+F7$ 90 DEF FNA$(X)=MID$(STR$(INT(X)),2) 100 DEF FNB$(X,Y)=HOME$+ESC$+F4$+FNA$(X)+F2$+FNA$(432-Y)+F5$ 110 DEF FNCA$(X,Y)=HOME$+ESC$+F1$+FNA$(X)+F2$+FNA$(432-Y) 120 DEF FNCB$(X,Y)=F2$+FNA$(X)+F2$+FNA$(432-Y)+F3$ 130 DEF FNFA$(X1,Y1)=HOME$+ESC$+F8$+FNA$(X1)+F2$+FNA$(432-Y1) 140 DEF FNFB$(X2,Y2)=F2$+FNA$(X2)+F2$+FNA$(432-Y2)+F3$ 150 PRINT CLS$+ESC$+"[?9l"+ESC$+"[?25l"; 160 P=240: Q=216 170 XP=P*.9: XR=1.5*3.1415927 180 YP=90: YR=1: ZP=90 190 XF=XR/XP: YF=YP/YR: ZF=XR/XP 200 FOR ZI=-Q TO Q-1 210 IF ZI<-ZP OR ZI>ZP GOTO 290 220 ZT=ZI*XP/ZP: ZZ=ZI 230 XL=INT(.5+SQR(XP*XP-ZT*ZT)) 240 FOR XI=-XL TO XL 250 XT=SQR(XI*XI+ZT*ZT)*XF: XX=XI 260 YY=(SIN(XT)+.4*SIN(3*XT))*YF 270 GOSUB 320 280 NEXT XI 290 NEXT ZI 300 PRINT ESC$+"[?25h":STOP 310 REM 320 X1=XX+ZZ+P 330 Y1=YY-ZZ+Q 340 PRINT FNCA$(X1,Y1);FNCB$(X1,Y1) 350 IF Y1=0 GOTO 370 360 PRINT FNFA$(X1,Y1-1);FNFB$(X1,0) 370 RETURN