Compucolor.org – Virtual Media

Listing of file='INPUT3.BAS;01' on disk='vmedia/chip_25-sector.ccvf'

100 REM  INPUT3 PROGRAM V12.80
110 REM  PART OF 3D PLOTTING PACKAGE BY JAMES C. MINOR
111 REM                                 39 BRYN MAWR ROAD
112 REM                                 ROCHESTER, NEW YORK 14624
113 REM                                 TEL: (716-) 247-7069
115 REM  COPYRIGHT 1980 BY JAMES C. MINOR
120 REM  PURPOSE: TO PROVIDE INPUT FOR THE CREATION OF TWO
130 REM           DIMENSIONAL REPRESENTATIONS OF 3 DIMENSIONAL
140 REM           MATHEMATICAL FUNCTIONS FOR IMMEDIATE VIEWING
150 REM           AND TO (OPTIONALLY) SAVE THEM FOR LATER DISPLAY
155
156
160 CLEAR 850
170 DIM XN(12),XX(12),YN(12),YX(12),ZN(12),ZX(12)
175 DIM CY$(12),NL(1,12),NP(1,12),PH(12),TH(12),DI(12)
177 DIM UP(12),TI$(12),VW(0),NA$(0)
180
190
200 GOSUB 1000
210 II= 1:GOSUB 5000
220 GOSUB 7200
230 IF M$= "S"THEN VW(0)= - 1:GOTO 300
250 IF M$= "M"THEN GOSUB 7500
300 GOSUB 8500
400 LOAD "PLOTTR":RUN
900 END
1000 REM
1010 PRINT " ":PLOT 30,16,29,22,15,12,8,3,0,3
1020 PRINT "    THE FUNCTION BEING PLOTTED, Z(X,Y), IS DEFINED IN"
1030 PRINT "    ANOTHER PROGRAM ON THIS DISK CALLED 'PLOTTR'.":PRINT
1040 PRINT "    TO INSERT YOUR FUNCTION THERE, PRESS I AND I SHALL"
1050 PRINT "    LOAD THAT PROGRAM FOR YOU.  ONCE LOADED, FOLLOW THE"
1060 PRINT "    REM INSTRUCTIONS STARTING IN LINE 500 (FOR ONE-SHOT SETUPS)"
1070 PRINT "    AND LINE 600 (FOR THE COMPUTATION OF THE FUNCTION)."
1080 PRINT :PRINT
1090 PRINT "    SAVE YOUR CHANGES ON THIS DISK ('SAVE PLOTTR')
1100 PRINT "    AS I SHALL FETCH IT AUTOMATICALLY. THEN RELOAD MENU."
1110 PRINT :PRINT
1120 PRINT "    IF THIS HAS ALREADY BEEN DONE, THEN SIMPLY PRESS RETURN."
1130 PLOT 3,30,20,32,26:GOSUB 8100:IF ASC (M$)< > 13AND M$< > "I"GOTO 1130
1140 IF M$= "I"THEN LOAD "PLOTTR"
1150 IF ASC (M$)= 13THEN GOSUB 1200
1160 RETURN
1190
1200 REM
1210 PLOT 12,3,0,10
1220 PRINT "    IF YOU'RE GOING TO BE SAVING DISPLAYS, NOW IS THE TIME"
1230 PRINT "    TO CHECK THAT THERE IS ENOUGH FREE SPACE ON YOUR STORAGE"
1235 PRINT "    DISK (20 HEX SECTORS/DISPLAY)."
1237 PRINT "    (NOTE - I CAN MAKE SOME CORRECTIONS LATER)
1240 PRINT :PRINT "    PRESS DOWN ARROW TO STOP AND CHECK, OTHERWISE PRESS RETURN."
1250 PLOT 3,30,20,32,26:GOSUB 8100:IF ASC (M$)< > 13AND ASC (M$)< > 10GOTO 1250
1260 RETURN
1290
5000 REM
5010 IF XN(0)= 0THEN GOSUB 6000
5020 IF YN(0)= 0THEN GOSUB 6100
5030 IF ZN(0)= 0THEN GOSUB 6200
5040 IF CY$(0)= ""THEN GOSUB 6300
5050 IF CY$(0)= ""OR NL(0,0)= 0THEN GOSUB 6400
5060 IF CY$(0)= ""OR NP(0,0)= 0THEN GOSUB 6700
5070 IF PH(0)= 0THEN GOSUB 7000
5075 IF UP(0)< > - 1THEN GOSUB 8400
5080 IF TI$(0)= ""THEN GOSUB 7100
5900 RETURN
5980
5990
6000 REM
6010 GOSUB 8000
6012 IF II= 1GOTO 6020
6014 PLOT 3,0,2:PRINT "PREVIOUS VALUES:":PRINT " #  XMIN  XMAX":PRINT "___ ____  ____"
6016 FOR IJ= 1TO II- 1:PRINT IJ;TAB( 4);XN(IJ);TAB( 10);XX(IJ):NEXT
6020 PLOT 29,23,3,25,12,2,254,1,255,88,77,65,88,3,37,6,2,254,1,255,88,77,73,78
6030 POKE 29515,199:PLOT 3,20,21:PRINT "XMIN=  ";:INPUT XN(II):POKE 29515,135
6040 POKE 30259,199:PLOT 3,20,23:PRINT "XMAX=  ";:INPUT XX(II):POKE 30259,135
6050 RETURN
6080
6090
6100 REM
6110 GOSUB 8000
6112 IF II= 1GOTO 6120
6114 PLOT 3,0,2:PRINT "PREVIOUS VALUES:":PRINT " #  YMIN  YMAX":PRINT "___ ____  ____"
6116 FOR IJ= 1TO II- 1:PRINT IJ;TAB( 4);YN(IJ);TAB( 10);YX(IJ):NEXT
6120 PLOT 29,23,3,19,7,30,98,3,18,6,89,77,73,78,3,44,7,98,3,43,6,89,77,65,88,29
6130 POKE 29607,71:PLOT 3,20,21:PRINT "YMIN=  ";:INPUT YN(II):POKE 29607,7
6140 POKE 29657,71:PLOT 3,20,23:PRINT "YMAX=  ";:INPUT YX(II):POKE 29657,7
6150 RETURN
6180
6190
6200 REM
6210 GOSUB 8000
6212 IF II= 1GOTO 6220
6214 PLOT 3,0,2:PRINT "PREVIOUS VALUES:":PRINT " #  ZMIN  ZMAX":PRINT "___ ____  ____"
6216 FOR IJ= 1TO II- 1:PRINT IJ;TAB( 4);ZN(IJ);TAB( 10);ZX(IJ):NEXT
6220 PLOT 3,26,5:PRINT "ZMAX -":PLOT 3,33,11:PRINT "- ZMIN"
6230 PLOT 3,0,15:PRINT "ZMIN AND ZMAX ARE NEEDED SO THAT THE SCREEN SCALING MAY BE SET.":PRINT
6232 PRINT :PRINT "THERE ARE THREE WAYS THESE VALUES CAN BE OBTAINED:":PRINT
6234 PRINT "    A. YOU MAKE CONSERVATIVE ESTIMATES. (ENTER VALUES):":PRINT
6236 PRINT "    B. I'LL MAKE ESTIMATES BY COMPUTING ALL FUNCTION VALUES"
6238 PRINT TAB( 8);"AND THEN START PLOTTING.(PRESS RETURN FOR BOTH VALUES)":PRINT
6240 PRINT "    C. I'LL USE THE SAME SCALE FACTORS FROM THE PREVIOUS PLOT."
6242 PRINT TAB( 8);"FOR A FIRST PLOT I'LL DEFAULT TO OPTION B."
6244 PRINT TAB( 8);"(ENTER 1 FOR BOTH VALUES)"
6250 POKE 30147,71:PLOT 3,20,29:PRINT "ZMIN=  ";:INPUT ZN(II):POKE 30147,7
6255 POKE 29375,71:PLOT 3,20,30:PRINT "ZMAX=  ";:INPUT ZX(II):POKE 29375,7
6260 RETURN
6280
6290
6300 REM
6310 GOSUB 8000
6312 IF II= 1GOTO 6320
6314 PLOT 3,0,2:PRINT "PREV VAL:":PRINT " #  X/Y":PRINT "___ ___"
6315 FOR IJ= 1TO II- 1:PRINT IJ;TAB( 5);
6316 IF CY$(IJ)= "B"THEN PRINT "B":GOTO 6319
6317 IF CY$(IJ)= "Y"THEN PRINT "Y":GOTO 6319
6318 PRINT "X"
6319 NEXT
6320 PLOT 29,17:FOR I= 47TO 62STEP 5:PLOT 2,I,107,242,I- 35,72,255:NEXT
6330 PLOT 3,8,6:PRINT "LINES OF":PLOT 3,8,7:PRINT "CONSTANT":PLOT 3,11,8:PRINT "Y->"
6340 PLOT 29,20:FOR J= 0TO 3:PLOT 3,32- 2* J,9+ J:FOR I= 1TO 14:PLOT 103:NEXT I,J
6350 PLOT 3,45,10,60,103:PRINT " LINES OF":PLOT 3,48,11:PRINT "CONSTANT X"
6360 PLOT 3,0,20:PRINT "DO YOU WANT THE CONTOURS DRAWN ALONG LINES OF CONSTANT X OR Y"
6365 PRINT TAB( 27);"OR BOTH ?";
6370 GOSUB 8100
6380 IF M$< > "Y"AND M$< > "X"AND M$< > "B"THEN PRINT " ":GOTO 6360
6385 CY$(II)= M$:PRINT ""
6390 RETURN
6398
6399
6400 REM
6405 CY$= "Y":IF CY$(II)= "X"THEN CY$= "X"
6410 CY= 1:IF CY$= "X"THEN CY= 0
6420 IF CY$= "X"THEN GOSUB 8000:GOSUB 6500
6430 IF CY$= "Y"THEN GOSUB 8000:GOSUB 6600
6432 IF II= 1GOTO 6440
6434 PLOT 3,0,2:PRINT "PREV VAL:":PRINT " #   L":PRINT "___ ___"
6435 FOR IJ= 1TO II- 1:PRINT IJ;TAB( 3);
6436 IF CY$= "B"THEN PRINT "";NL(CY,IJ);"":GOTO 6439
6437 IF CY$= "Y"THEN PRINT "";NL(CY,IJ);"":GOTO 6439
6438 PRINT "";NL(CY,IJ);""
6439 NEXT
6440 PLOT 3,5,20,29,23:PRINT "ENTER THE NUMBER OF LINES YOU WANT PLOTTED BETWEEN"
6450 PLOT 3,5,21:PRINT CY$;"MIN AND ";CY$;"MAX INCLUSIVE."
6460 PLOT 3,5,23:PRINT "THE NUMBER SHOULD BE BETWEEN 3 AND 127 "
6470 PLOT 3,5,24:PRINT "BUT WILL TAKE LONGER TO PLOT FOR THE HIGHER NUMBERS."
6480 PLOT 3,5,25:PRINT "I SUGGEST 15 TO START OUT WITH."
6490 PLOT 3,31,27:INPUT NL(CY,II)
6492 IF CY$(II)= "B"AND CY$= "Y"THEN CY$= "X":GOTO 6410
6494 RETURN
6498
6499
6500 REM
6510 PLOT 29,20:FOR I= 40TO 48STEP 4:PLOT 2,I,59+ I,242,60+ I,59+ I,255:NEXT
6520 PLOT 2,18,77,242,78,77,255,3,17,4,88,77,73,78,32,30,127,3,1,12,88,77,65,88,32,29,105
6530 PLOT 29,18,3,32,7,110,26,28,110,26,28,110
6540 PLOT 29,23,3,41,12,31,76,15,25,28,46,25,28,46,25,28,46,25,28,46,32,28,51,25,28,50,25,28,49
6560 RETURN
6580
6590
6600 REM
6610 PLOT 29,17:FOR I= 13TO 21STEP 4:PLOT 2,I,72,242,35+ I,107,255:NEXT
6620 PLOT 2,69,72,242,104,107,255,3,23,3,89,77,73,78,10,26,26,26,110,3,51,3,89,77,65,88,10,26,26,26,110
6630 PLOT 29,23,3,6,14,49,32,50,32,51:FOR I= 12TO 32STEP 2:PLOT 3,I,14,46:NEXT
6640 PLOT 3,34,14,31,76,15,3,20,15,32
6650 RETURN
6680
6690
6700 REM
6705 CY$= "Y":IF CY$(II)= "X"THEN CY$= "X"
6710 CY= 1:IF CY$= "X"THEN CY= 0
6720 IF CY$= "X"THEN GOSUB 8000:GOSUB 6800
6730 IF CY$= "Y"THEN GOSUB 8000:GOSUB 6900
6731 M$= "Y":IF CY$= "Y"THEN M$= "X"
6732 IF II= 1GOTO 6740
6734 PLOT 3,0,2:PRINT "PREV VAL:":PRINT " #   P":PRINT "___ ___"
6735 FOR IJ= 1TO II- 1:PRINT IJ;TAB( 3);
6736 IF CY$= "B"THEN PRINT "";NP(CY,IJ);"":GOTO 6739
6737 IF CY$= "Y"THEN PRINT "";NP(CY,IJ);"":GOTO 6739
6738 PRINT "";NP(CY,IJ);""
6739 NEXT
6740 PLOT 3,5,20,29,23:PRINT "ENTER THE NUMBER OF POINTS YOU WANT PLOTTED BETWEEN"
6750 PLOT 3,5,21:PRINT M$;"MIN AND ";M$;"MAX INCLUSIVE FOR EACH LINE."
6760 PLOT 3,5,23:PRINT "THE NUMBER SHOULD BE BETWEEN 3 AND 127 "
6770 PLOT 3,5,24:PRINT "BUT WILL TAKE LONGER TO PLOT FOR THE HIGHER NUMBERS."
6780 PLOT 3,5,25:PRINT "I SUGGEST 25 TO START OUT WITH."
6790 PLOT 3,31,27:INPUT NP(CY,II)
6792 IF CY$(II)= "B"AND CY$= "Y"THEN CY$= "X":GOTO 6710
6794 RETURN
6798
6799
6800 REM
6810 PLOT 29,20:FOR I= 40TO 48STEP 4:PLOT 2,I,59+ I,242,60+ I,59+ I,255:NEXT
6815 PLOT 3,9,12:PRINT "+--+--+--+--+--+--+--+--+--+--+"
6820 PLOT 17,3,23,3,89,77,73,78,10,26,26,26,108,3,53,3,89,77,65,88,10,26,26,26,110
6830 PLOT 29,18,3,32,7,110,26,28,110,26,28,110
6840 PLOT 3,9,13:PRINT "1  2  3  .":PLOT 3,27,13:PRINT ".  .  .  .  P"
6850 RETURN
6880
6900 REM
6910 PLOT 29,17:FOR I= 13TO 21STEP 4:PLOT 2,I,72,242,35+ I,107,255:NEXT
6920 PLOT 29,20,3,17,4,88,77,73,78,32,30,127,3,1,12,88,77,65,88,32,127,29
6930 PLOT 29,17,2,72,73,242,107,108,255,30:FOR I= 36TO 54STEP 2:PLOT 3,I,32- I/ 2,97:NEXT :PLOT 29
6940 PLOT 3,36,15:PRINT "P......321"
6950 RETURN
6980
6990
7000 REM
7010 GOSUB 8000
7012 IF II= 1GOTO 7020
7014 PLOT 3,0,2:PRINT "PREVIOUS VALUES:":PRINT " #  PHI THET DIST.":PRINT "___ ___ ____ _____"
7016 FOR IJ= 1TO II- 1:PRINT IJ;TAB( 3);PH(IJ);TAB( 8);TH(IJ);TAB( 12);DI(IJ):NEXT
7020 PLOT 29,17,2,65,94,242,75,119,255,3,33,1,23,80,72,73,3,33,2,105,30,103,29,10,30,120,29,22
7030 PLOT 29,19,2,65,92,242,76,80,255,30:FOR I= 2TO 11:PLOT 3,38,I,97:NEXT :PLOT 29
7040 PLOT 29,22,3,30,10,30,102,29,103,103,62,3,29,11:PRINT "THETA"
7050 PLOT 29,20,30,3,38,1,108,104,29,28,30,105,29:PRINT "VIEWPOINT"
7053 PLOT 3,0,18:PRINT "VIEWING POSITION PARAMETERS:"
7058 FOR I= 28867TO 28871STEP 2:POKE I,71:NEXT
7060 PLOT 3,3,20:PRINT "INPUT PHI IN DEGREES ( 0 < PHI < 180 ) ";:INPUT PH(II):PRINT ""
7062 FOR I= 28867TO 28871STEP 2:POKE I,7:NEXT
7068 FOR I= 30139TO 30147STEP 2:POKE I,70:NEXT
7070 PLOT 3,3,22:PRINT "INPUT THETA IN DEGREES ( -360 < THETA < +360 )";:INPUT TH(II):PRINT ""
7072 FOR I= 30139TO 30147STEP 2:POKE I,7:NEXT :GOSUB 8800
7080 PLOT 3,3,24:PRINT "FOR CORRECT PERSPECTIVE, INPUT THE DISTANCE FROM THE"
7082 PLOT 3,3,25:PRINT "VIEWPOINT TO THE CENTER OF THE PLOT COORDINATES."
7083 PLOT 3,3,26:PRINT "(TO AVOID GETTING TOO CLOSE, MAKE DISTANCE AT LEAST >";INT (DT);")"
7084 PLOT 3,0,28:PRINT "NOTE- A SIMPLE CARRIAGE RETURN WILL BE VIEWED AS FROM INFINITY"
7086 PLOT 3,0,29:PRINT "(BUT WITH INFINITE MAGNIFICATION SO IT APPEARS SOMEWHAT 'FLAT')"
7087 POKE 29131,0:POKE 29130,0:FOR I= 29003TO 29507STEP 126:POKE I,193:POKE I+ 128,193:NEXT
7088 PLOT 3,53,25:INPUT DI(II):PRINT "":IF DI(II)= 0THEN DI(II)= 1E30
7090 RETURN
7098
7099
7100 REM
7110 PLOT 30,16,29,15,12,8
7112 IF II> 1THEN PRINT "PLOT #";II
7114 PLOT 3,27,1:PRINT "PLOT TITLE"
7120 PLOT 3,19,4:PRINT "INPUT THE TITLE YOU WANT."
7140 PRINT :PRINT :PRINT TAB( 5);"PLEASE MAKE COLOR, BLINK AND SIZE CHANGES AS YOU WISH."
7145 PRINT "   (I SHALL ASSUME LARGE SIZE WHITE UNLESS TOLD DIFFERENTLY)"
7150 PRINT :PRINT TAB( 19);"I SHALL CENTER IT FOR YOU"
7159 PRINT TAB( 9);"BUT PLEASE LIMIT IT TO ONE LINE (64 CHARACTERS)"
7160 IF II= 1GOTO 7168
7162 PRINT :PRINT TAB( 24);"PREVIOUS TITLES:"
7164 FOR IJ= 1TO II- 1:PRINT "";IJ;TAB( 3);TI$(IJ):NEXT
7166 PRINT :PRINT "THIS TITLE:"
7168 PRINT :INPUT "";TI$(II):PRINT ""
7170 RETURN
7180
7190
7200 REM
7210 PLOT 30,16,29,15,12,14,3,18,4:PRINT "PLOTTING AND SAVING OPTIONS"
7220 PLOT 15,3,18,6:PRINT "___________________________"
7230 PLOT 3,0,9:PRINT "1. IF YOU WANT TO PRODUCE A SINGLE PLOT WITH THE OPTION"
7240 PRINT "   OF SAVING IT, PRESS S."
7250 PLOT 3,34,12,17,112
7300 PLOT 3,0,13:PRINT "2. IF YOU WANT ME TO DRAW UP TO 12 DIFFERENT GRAPHS AND"
7310 PRINT "   SAVE THEM AUTOMATICALLY, PRESS M."
7320 PLOT 3,1,25,17,112,10:PRINT "DEPENDING ON YOUR DISK FREE CAPACITY.  IF YOU PLAN ON USING"
7330 PRINT "  MY SPECIAL 'MENU' LATER, YOU ARE LIMITED TO 10 PLOTS."
7340 PLOT 3,21,21,14:PRINT "YOUR OPTION (S,M): ";
7350 GOSUB 8100:IF (M$< > "S")AND (M$< > "M")THEN PRINT " ":GOTO 7340
7360 PRINT ""
7370 RETURN
7380
7390
7400 REM
7410 PLOT 30,16,29,19,15,12,3,5,3:PRINT "ENTER THE NAME OF THE .DSP FILE IN WHICH YOU WANT THE"
7420 PRINT "     GRAPH STORED."
7430 PRINT :PRINT "     PLEASE LIMIT TO SIX CHARACTERS OR LESS AND START WITH AN"
7440 PRINT "     ALPHABETIC CHARACTER.":PRINT :PRINT "     ";
7450 INPUT NA$(0):I= ASC (LEFT$ (NA$(0),1)):IF (I< 65)OR (90< I)GOTO 7400
7460 NA$(0)= LEFT$ (NA$(0),6):PRINT ""
7470 RETURN
7480
7490
7500 REM
7520 GOSUB 7600
7530 GOSUB 7700
7540 GOSUB 7900
7550 RETURN
7580
7590
7600 REM
7610 GOSUB 7400
7620 PLOT 3,0,19:PRINT "   ENTER THE NUMBER OF DIFFERENT GRAPHS THAT ARE TO PLOTTED."
7630 PLOT 3,0,21:INPUT "   (A NUMBER BETWEEN 2 AND 12 PLEASE)     ";VW(0)
7640 IF (VW(0)< 2)OR (12< VW(0))GOTO 7630
7650 PRINT ""
7660 RETURN
7680
7690
7700 REM
7710 PLOT 30,16,29,17,15,12,3,0,0:PRINT "IN ORDER TO MAKE THE REMAINING";VW(0)- 1;" INPUT SETS AS PAINLESS AS"
7720 PRINT "POSSIBLE, PLEASE TELL ME WHAT PARAMETERS YOU WILL BE CHANGING."
7730 PRINT "YOU CAN DO THIS BY PRESSING 'C' AFTER THOSE QUANTITIES THAT"
7740 PRINT "WILL CHANGE AND 'RETURN' AFTER THOSE THAT WON'T."
7745 PRINT "(YOU'LL HAVE A CHANCE TO REPEAT THIS IF YOU MAKE A MISTAKE)"
7750 PRINT :PRINT "        PARAMETERS                    STATUS FOR THIS SERIES"
7760 PRINT "        __________                    ______________________":PRINT
7770 XN(0)= 0:PRINT "    XMIN AND/OR XMAX......................";:GOSUB 8200:IF NOT (M$= "C")THEN XN(0)= 1
7780 YN(0)= 0:PRINT "    YMIN AND/OR YMAX......................";:GOSUB 8200:IF NOT (M$= "C")THEN YN(0)= 1
7790 ZN(0)= 0:PRINT "    ZMIN AND/OR ZMAX......................";:GOSUB 8200:IF NOT (M$= "C")THEN ZN(0)= 1
7800 CY$(0)= "":PRINT "    LINES OF CONSTANT X OR Y..............";:GOSUB 8200:IF NOT (M$= "C")THEN CY$(0)= "1"
7810 NL(0,0)= 0:PRINT "    NUMBER OF LINES PER GRAPH.............";
7812 IF CY$(0)< > "1"THEN PRINT "CHANGING":NL(0,0)= 0
7814 IF CY$(0)= "1"THEN GOSUB 8200:IF NOT (M$= "C")THEN NL(0,0)= 1
7820 NP(0,0)= 0:PRINT "    NUMBER OF POINTS PER LINE.............";
7822 IF CY$(0)< > "1"THEN PRINT "CHANGING":NP(0,0)= 0
7824 IF CY$(0)= "1"THEN GOSUB 8200:IF NOT (M$= "C")THEN NP(0,0)= 1
7830 PH(0)= 0:PRINT "    VIEWING ANGLES AND/OR DISTANCE........";:GOSUB 8200:IF NOT (M$= "C")THEN PH(0)= 1
7835 IF UP(0)= 1THEN PRINT "    USER PARAMETER........................";:GOSUB 8200:IF NOT (M$= "C")THEN UP(0)= - 1
7840 TI$(0)= "":PRINT "    THE TITLE.............................";:GOSUB 8200:IF NOT (M$= "C")THEN TI$(0)= "1"
7850 PLOT 3,0,27:PRINT "AS YOU REVIEW YOUR RESPONSES (ABOVE), IF YOU'D LIKE TO MAKE"
7860 PRINT "CORRECTIONS, PRESS 'R' (FOR REENTER), OTHERWISE PRESS RETURN  ";
7870 GOSUB 8100:PRINT "":IF M$= "R"GOTO 7700
7880 IF NOT (ASC (M$)= 13)GOTO 7850
7885 GOSUB 8300
7890 RETURN
7898
7899
7900 REM
7910 FOR II= 2TO VW(0):GOSUB 5000:NEXT
7920 RETURN
7980
7990
8000 REM
8010 PRINT "":PLOT 30,16,29,18,15,12
8020 PLOT 2,78,107,242,43,72,255,3,21,13,2,254,240,172,255,3,20,15,29,19,88,18
8030 FOR I= 17TO 47:PLOT 3,I,8,103:NEXT :PLOT 3,48,8,62,32,29,19,89,18
8040 FOR I= 1TO 12:PLOT 3,32,I,110:NEXT :PLOT 3,30,0,29,19,90,32,18,94
8042 IF II> 1THEN PLOT 3,0,0:PRINT "PLOT #";II
8050 RETURN
8080
8090
8100 REM
8110 POKE 33278,0
8120 IF PEEK (33278)= 0GOTO 8120
8130 M$= CHR$ (PEEK (33278))
8140 RETURN
8190
8200 REM
8210 GOSUB 8100
8220 IF NOT ((M$= "C")OR (ASC (M$)= 13))THEN PLOT 26,32,26:GOTO 8200
8230 IF M$= "C"THEN PRINT "CHANGING":GOTO 8250
8240 PRINT "
NOT CHANGING"
8250 RETURN
8280
8290
8300 REM
8310 FOR I= 2TO VW(0)
8320 IF XN(0)= 1THEN XN(I)= XN(1):XX(I)= XX(1)
8330 IF YN(0)= 1THEN YN(I)= YN(1):YX(I)= YX(1)
8340 IF ZN(0)= 1THEN ZN(I)= ZN(1):ZX(I)= ZX(1)
8350 IF CY$(0)= "1"THEN CY$(I)= CY$(1)
8360 IF NL(0,0)= 1THEN NL(0,I)= NL(0,1):NL(1,I)= NL(1,1)
8370 IF NP(0,0)= 1THEN NP(0,I)= NP(0,1):NP(1,I)= NP(1,1)
8380 IF PH(0)= 1THEN PH(I)= PH(1):TH(I)= TH(1):DI(I)= DI(1)
8385 IF UP(0)= - 1THEN UP(II)= UP(1)
8390 IF TI$(0)= "1"THEN TI$(I)= TI$(1)
8395 NEXT
8396 RETURN
8398
8399
8400 REM
8410 GOSUB 8000
8412 IF II= 1GOTO 8420
8414 PLOT 3,0,2:PRINT "PREV VALUE":PRINT " #    UP":PRINT "___ ______"
8416 FOR IJ= 1TO II- 1:PRINT IJ;TAB( 4);UP(IJ):NEXT
8420 PLOT 3,24,18:PRINT "PARAMETER INPUT":PRINT TAB( 24);"_______________"
8430 IF UP(0)= 1GOTO 8490
8440 PRINT :PRINT :PRINT "YOU MAY USE A PARAMETER, 'UP',WITH YOUR FUNCTION IF YOU WISH."
8450 PRINT "PRESS 'P' IF YOU WANT ONE, OTHERWISE PRESS 'RETURN'. ";
8460 GOSUB 8100:PRINT "":IF M$< > "P"AND ASC (M$)< > 13GOTO 8420
8470 IF ASC (M$)= 13THEN UP(0)= - 1:GOTO 8495
8480 UP(0)= 1
8490 PRINT :PRINT :INPUT "THE PARAMETER VALUE FOR THIS PLOT IS ";UP(II):PRINT ""
8495 RETURN
8497
8498
8500 REM
8510 PLOT 15,12:PRINT "I AM NOW GETTING THE ACTUAL PLOTTING PROGRAM"
8520 OUT 8,247:PRINT "THE KEYBOARD IS TEMPORARILY LOCKED OUT WHILE I WORK!"
8530 S= 28928:M= 0:M1= 0:M2= 0
8540
8550 REM
8560 POKE S,PEEK (32960):POKE S+ 1,PEEK (32961)
8570 S= S+ 2:POKE S,PEEK (32978):POKE S+ 1,PEEK (32979)
8580 REM
8590
8600 REM
8610 S= S+ 2:POKE S,PEEK (32984):POKE S+ 1,PEEK (32985)
8620 S= S+ 2:POKE S,PEEK (32986):POKE S+ 1,PEEK (32987)
8630 M1= 256* PEEK (32985)+ PEEK (32984)
8640 M2= 256* PEEK (32987)+ PEEK (32986)
8650 IF M2- M1> 3840THEN PRINT "ARRAYS TOO LARGE!":OUT 8,255:RETURN
8660 S= S+ 2:FOR M= M1TO M2:POKE S+ M- M1,PEEK (M):NEXT
8670 REM
8680 POKE 32767,128
8690 RETURN
8800 REM
8810 TH= TH(II):PH= PH(II):XX= XX(II):YX= YX(II):ZX= ZX(II)
8820 IF (- 270< THAND TH< = - 180)OR (90< THAND TH< = 180)THEN XX= XN(II):GOTO 8850
8830 IF (- 180< THAND TH< = - 90)OR (180< THAND TH< = 270)THEN XX= XN(II):YX= YN(II):GOTO 8850
8840 IF (- 90< THAND TH< = 0)OR (270< THAND TH< = 360)THEN YX= YN(II)
8850 IF PH> 90THEN ZX= ZN(II)
8860 TH= TH* 3.14/ 180:PH= PH* 3.14/ 180
8870 DT= XX* COS (TH)* SIN (PH)+ YX* SIN (TH)* SIN (PH)+ ZX* COS (PH)
8880 DT= ABS (DT)
8890 RETURN
8900