-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathBAS-LOGO.bas
74 lines (74 loc) · 1.9 KB
/
BAS-LOGO.bas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
10 '***********************
20 '* *
30 '* BASIC LOGO *
40 '* *
50 '* J.W.L *
60 '* *
70 '***********************
80 CLS:KEY OFF
90 X0=360:Y0=173:A=0:S$="D"
100 O$=" ":C$="[":D$="]":B$="`"
110 HLP$="Up Down Angle Go Kill Repeat Circle Home New End"
120 LOCATE 25,10
130 PRINT HLP$
140 XP%=X0-360:YP%=(173-Y0)*1.52:AP%=A*180/3.14159
150 LOCATE 1,60:PRINT SPC(20)
160 LOCATE 1,60:PRINT XP%;YP%;AP%;" ";S$
170 LOCATE 2,1:W00$=W0$:LINE INPUT W0$
180 DIM U(LEN(W0$)\2+1)
190 U(0)=0:V=0
200 V=V+1
210 U(V)=INSTR(U(V-1)+1,W0$,B$)
220 IF U(V)=0 THEN U(V)=LEN(W0$)+1:GOTO 240
230 GOTO 200
240 DIM W$(V)
250 FOR K=1 TO V
260 W$(K)=MID$(W0$,U(K-1)+1,U(K)-U(K-1)-1)
270 NEXT K
280 FOR K0=1 TO V
290 Z0$=W$(K0)
300 GOSUB 540
310 NEXT K0
320 ERASE U,W$
330 GOTO 140
340 J=0
350 DIM I(LEN(Z0$)\3+1)
360 I(0)=INSTR(Z0$,C$)
370 T=VAL(MID$(Z0$,2,I(0)-2))
380 J=J+1
390 I(J)=INSTR(I(J-1)+1,Z0$,O$)
400 IF I(J)=0 THEN I(J)=INSTR(Z0$,D$):GOTO 420
410 GOTO 380
420 DIM Z$(J)
430 FOR K=1 TO J
440 Z$(K)=MID$(Z0$,I(K-1)+1,I(K)-I(K-1)-1)
450 NEXT K
460 FOR H=1 TO T
470 FOR K1=1 TO J
480 P$=Z$(K1)
490 GOSUB 590
500 NEXT K1
510 NEXT H
520 ERASE I,Z$
530 RETURN
540 A$=LEFT$(Z0$,1)
550 IF A$="R" THEN GOSUB 340:RETURN
560 IF A$="E" THEN END
570 IF A$="" THEN RETURN
580 P$=Z0$
590 A$=LEFT$(P$,1):N=VAL(RIGHT$(P$,LEN(P$)-1))
600 IF A$="G" THEN C=1:GOTO 700
610 IF A$="K" THEN C=0:GOTO 700
620 IF A$="C" THEN CIRCLE(X0,Y0),N,,,,.66
630 IF A$="X" THEN CIRCLE(X0,Y0),N,0,,,.66
640 IF A$="A" THEN A=A+N*3.14159/180:IF A>6 THEN A=A-6.283185
650 IF A$="U" THEN S$=A$
660 IF A$="D" THEN S$=A$
670 IF A$="N" THEN CLS:LOCATE 2,1:PRINT W00$:LOCATE 25,10:PRINT HLP$
680 IF A$="H" THEN X0=360:Y0=173
690 RETURN
700 X=X0+N*COS(A):Y=Y0-N*SIN(A)/1.52
710 IF S$="D" THEN LINE(X0,Y0)-(X,Y),C
720 X0=X:Y0=Y
730 RETURN