Source Code
5 DIM S$(255)
10 GO SUB 5000
11 GO SUB 1000
15 CLS
20 GO SUB 7000
35 IF P=1 THEN GO TO 200
40 LET R$=INKEY$: IF R$="" THEN GO TO 40
41 LET S$(A)=R$
42 LET A=A+1
43 IF A=255 THEN PRINT "BUFFER FULL": STOP
44 IF R$="E" THEN GO TO 10
50 GO SUB 3000
60 GO SUB 2000
70 DRAW C-PEEK (23677),D-PEEK (23678)
80 GO TO 40
200 GO SUB 6000
204 LET R$=INKEY$: IF R$="" THEN GO TO 205
210 GO TO 10
1000 LET S=L*L+M*M
1010 LET T=S+N*N
1020 LET Q=SQR (T)
1030 LET H=SQR (S)
1040 RETURN
2000 LET O=T-U*L-V*M-W*N
2010 LET C=T*(V*L-U*M)*4/(H*O)+128
2020 LET D=96+3*Q*(W*S-N*(U*L+V*M))/(H*O)
2286 RETURN
3000 IF R$="U" THEN LET W=W+G
3010 IF R$="D" THEN LET W=W-G
3020 IF R$="R" THEN LET U=U-G
3030 IF R$="L" THEN LET U=U+G
3040 IF R$="B" THEN LET V=V-G
3050 IF R$="F" THEN LET V=V+G
3060 RETURN
5000 CLS
5010 INPUT "SIZE?";G
5020 INPUT "X VIEWPOINT?";L
5030 INPUT "Y VIEWPOINT?";M
5040 INPUT "Z VIEWPOINT?";N
5050 LET A=1
5061 PRINT "'G'-GET"'"'P'-PUT"'"'R'-RANDOM"
5070 LET R$=INKEY$: IF R$="" THEN GO TO 5070
5080 IF R$="G" THEN LET P=1: GO TO 5110
5090 IF R$="P" THEN LET P=0: GO TO 5110
5093 IF R$="R" THEN GO TO 8000
5100 GO TO 5070
5110 RETURN
6000 GO SUB 7000
6010 LET R$=S$(A)
6020 GO SUB 3000
6030 GO SUB 2000
6040 DRAW C-PEEK (23677),D-PEEK (23678)
6050 LET A=A+1
6060 IF S$(A)<>"E" AND A<>255 THEN GO TO 6010
6070 RETURN
7000 LET W=0: LET U=0: LET V=0: GO SUB 2000
7010 PLOT C,D
7020 RETURN
8000 LET A=1: LET G=20: LET L=RND*100: LET M=RND*100: LET N=RND*100
8003 CLS
8010 GO SUB 6000
8030 GO TO 8000
9000 SAVE "3-D"
9010 STOP