Compucolor.org – Virtual Media

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

1 REM  THIS PROGRAM COPIED FROM NOV 1980 ISSUE OF BYTE MAGAZINE
2 REM  BY MYRON STEFFY FOR SUBMITTAL TO NOR CAL CCII USERS GROUP.
3 REM  THIS PROGRAM REVISED BY C.E. SONTAG TO AVOID BUGS AND/OR
4 REM  FACILITATE OPERATION.  REVISIONS ARE DENOTED BY REM***CES.
5 REM  KY 5	GRAPHS  <C>  A.W. GROGONO  AUG. 1979
6 REM      DEMONSTRATION PROGRAM FOR USE WITH SUBROUTINES
40 RESTORE :CLEAR 200:DIM I$(12)
50 DATA 1,2,6,4:FOR I= 1TO 4:READ COLOUR(I):NEXT I
60 REM  WRITE:  60 DIM(ARRAY(25,1)  TO USE EQUATION SUB
90 PLOT 29,27,24,15,14,2,255,6,1,12,3,16,3:REM  CLEAR PAGE
100 REM
101 REM
110 REM  SUBROUTINES	 7000 ERASE/REVIEW IMAGES
120 REM  		 9000 COMPLETE GRAPH OUTLINE
130 REM  		10000 DATA ENTRY
140 REM  		10100 EQUATION PLOTTING
150 REM  		10200 FIND LITTLE AND BIG
160 REM  		10300 CALCULATE DATA FOR BORDERS
170 REM  		10500 DRAW BORDERS
180 REM  		10700 CONVERT USER UNITS TO GRAPH
190 REM  		10800 GRAPH UNITS TO TEXT POSITION
200 REM  		11000 PLOT POINTS
210 REM  		11100 PLOT VECTORS
220 REM  		11200 PLOT Y-BARS
230 REM  		11300 PLOT X-BARS
235 REM  		11500 SAVE ON DISK
240 REM  		11800 SELECT COLOURS
250 REM  		11900 PAUSE
260 REM
270 REM :END:REM***CESADDED:'REM'
280 REM
290 REM
300 PRINT TAB( 8)"S E L E C T   G R A P H   T Y P E: ":PRINT
310 PRINT :PRINT TAB( 20)"1.  X/Y SCATTER"
320 PRINT :PRINT TAB( 20)"2.  PLOT EQUATION"
330 PRINT :PRINT TAB( 20)"3.  Y-BAR GRAPH"
340 PRINT :PRINT TAB( 24):INPUT "ENTER 1-3: ";K:PLOT 28,11
350 IF K< 1OR K> 3THEN 340
360 IF K< > 2THEN 390
370 RESTORE :CLEAR 200:FOR I= 1TO 4:READ COLOUR(I):NEXT I
380 K= 2:DIM ARRAY(25,1):REM  DIMENSIONS FOR EQUATION
390 ON KGOSUB 10000,10100,10000:REM  PREPARE DATA ARRAY
400 GOSUB 9000:REM  FRAME
410 ON KGOSUB 11000,11100,11200:REM  SCATTER,LINE,Y-BARS
420 GOSUB 11900:REM  PAUSE
430 GOSUB 11500:REM  SAVE
440 GOSUB 11800:REM  SELECT COLOURS
450 IF K$= "C"THEN 400
460 GOTO 5
490 REM  	WRITE EQUATION AT 500, E.G.: 500 Y=X^2-3*X :Y$="X^2-3*X":REM***CESADDED:Y$-ETC
495 Y$= "UNKNOWN":REM ***CESADDED:'495'
500 REM ***MYRONADDED
501 Y= X^ 3:Y$= "Y^3"
505 IF Y< > .9999 THEN  GOTO  515:REM  EQUATION EXISTS:REM***CESADDED:'505'(FROM10130)
510 REM  RETURN:REM***CESADDED:'REM'
512 GOTO 10132:REM  NO EQ SO INSTRUCT REQD TO INPUT EQ:REM***CESADDED:'512'
515 IF  YES$= "Y" THEN  GOTO 517:REM  EQ OK SO NO INSTRUCT REQD:REM***CESADDED:'515'
516 GOTO 6050:REM  EQ NOT OK SO INSTRUCT REQD:REM***CESADDED:'516'
517 IF  TITLE$< > ""THEN  GOTO 10170:REM  INPUTS EXIST FOR TITLE/AXES:REM***CESADDED:'517'
518 GOTO 10140:REM  NO TITLE/AXES SO INPUTS REQD:REM***CESADDED:'518'
6000 REM
6010 REM
6020 REM    VERIFIES STATUS OF EQUATION
6030 REM    (REM***CESADDED:'6000'TO'6170')
6035 REM
6040 REM
6050 PLOT 12,3,16,18:PRINT "IS THIS EQUATION CORRECT?:  ";CHR$ (89);CHR$ (61);Y$
6060 PRINT :PRINT TAB( 16)"TYPE  Y OR N  AND PRESS RETURN  ";
6070 INPUT "";YES$
6080 PLOT  12:IF  ASC (YES$)= 89THEN  GOTO 10140
6090 GOTO 10132
6100 REM
6110 REM
6900 REM
6901 REM
6902 REM    ERASE/REVIEW IMAGES
6903 REM
7000 PLOT 2,255,27,24,6,11,14,12,3,11,7:REM  IMAGE ERASE/REVIEW
7005 FOR I= 1TO 12:I$(I)= CHR$ (48+ I- 7* (I> 9)):NEXT I
7010 PRINT "E R A S E / R E V I E W   I M A G E S":PRINT
7020 PRINT TAB( 16)"1.  REVIEW IMAGES. ":PRINT
7030 PRINT TAB( 16)"":INPUT "2.  ERASE IMAGES.  ENTER NUMBER: ";I
7040 IF I= 2THEN 7100
7050 I$= "REVIEWED":GOSUB 7200
7060 FOR I= LOWTO HIGH:PLOT 3,64,29,27,4:REM  LOSE CURSOR
7070 PRINT "LOAD SCREEN.DSP; "+ I$(I):PLOT 27,27:REM  IMAGE
7080 INPUT "";I$:NEXT I:RETURN
7100 I$= "ERASED":GOSUB 7200
7110 PLOT 27,4:FOR I= HIGHTO LOWSTEP - 1
7120 PRINT "DEL SCREEN.DSP; "+ I$(I):NEXT I
7130 PLOT 27,27:PRINT "IGNORE FCS ERROR - EFNF";
7140 PRINT " DURING RENAMING":PLOT 17,10,27,4
7150 J= HIGH- LOW+ 1:FOR I= LOWTO 12- J:REM  CLOSE GAP
7160 PRINT "REN SCREEN.DSP; "+ I$(I+ J)+ "TO SCREEN.DSP; "+ I$(I)
7180 NEXT I:PLOT 27,27:RETURN
7200 PLOT 6,5* I- 4,12,27,4:PRINT "DIR":REM  DIRECTORY
7210 PLOT 27,27:PRINT "IMAGES ARE LISTED  SCREEN.DSP;N  ";
7220 PRINT "WHERE N IS THE NUMBER. ":PRINT
7230 PRINT 	"ENTER #S OF FIRST AND LAST IMAGES TO BE ";I$;":"
7235 PRINT :PRINT TAB( 16)"FOR A ENTER 10, FOR B ENTER 11 ETC. "
7240 PRINT :PRINT TAB( 16)INPUT "FIRST ";LOW
7250 PRINT :PRINT TAB( 16)INPUT " LAST ";HIGH
7260 PRINT :PRINT TAB( 16)INPUT "PUSH RETURN TO ADVANCE";I$:RETURN
8988 REM
8989 REM
8990 REM  	PREPARE COMPLETE GRAPH OUTLINE
8991 REM
8992 REM  	CALCULATES LIMITS, SCALE VALUES AND
8993 REM  	DRAWS OUTLINE WITH TIC MARKS, SCALES,
8994 REM  	TITLE AND AXES LABELS.
8995 REM
9000 REM  	GRAPH OUTLINE
9010 GOSUB 10200:REM  DATA RANGE
9020 GOSUB 10300:REM  AUTOSCALE
9030 GOSUB 10500:RETURN :REM  FRAME
9980 REM
9981 REM
9982 REM    ENTER
9983 REM
9984 REM  		TITLE$
9985 REM  	NUMBER OF DATA POINTS
9986 REM  	LABEL$(0) FOR X-AXIS
9987 REM  	LABEL$(1) FOR Y-AXIS
9988 REM  	ARRAY(NUMBER,2) OF DATA POINTS
9989 REM
9990 REM    NOTE: IF CHOICE = 1 THEN ONLY 1 AXIS IS ENTERED
9991 REM
10000 PLOT 6,1,12,14,3,18,13:REM  DATA ENTRY
10010 PRINT TAB( 12)"D A T A   E N T R Y"
10015 PLOT 10,9,9:INPUT "GRAPH TITLE: ";TITLE$
10020 PLOT 10,9,9:INPUT "NUMBER OF DATA POINTS: ";NUMBER
10021 DIM ARRAY(NUMBER+ 2,2)
10024 PLOT 10,9,9:INPUT "X-AXIS UNITS, INDEPENDENT: ";LABEL$(0)
10025 IF CHOICE= 1THEN LABEL$(1)= "NUMBER":GOTO 10030
10026 PLOT 10,9,9:INPUT "Y-AXIS UNITS, DEPENDENT: ";LABEL$(1)
10028 REM ***LABEL$(2)=LABEL$(1)
10030 FOR ITEM= 1TO NUMBER:REM  ENTER POINTS
10040 IF ITEM- 1< > 10* INT ((ITEM- 1)/ 10)THEN 10060:REM  PAGE
10050 PLOT 12,10,10:PRINT "POINT"TAB( 16)LABEL$(0)
10055 IF CHOICE< > 1THEN PRINT TAB( 32)"";:PLOT  28:PRINT LABEL$(1):REM ***CESMOD:PLOT 28 AFTER TAB & COLOR IN ""
10060 IF ITEM- 1= 5* INT ((ITEM- 1)/ 5)THEN PLOT 10:REM  SPACE
10070 PRINT :PRINT "";ITEM;TAB( 16):INPUT "";ARRAY(ITEM,0):REM ***CESADDED:COLOR IN ""
10075 IF CHOICE= 1THEN NEXT ITEM:RETURN
10080 PLOT 28,18,9,9,9,9:INPUT "";ARRAY(ITEM,1):REM ***CESADDED:COLOR IN ""
10085 ARRAY(ITEM,2)= ARRAY(ITEM,1):NEXT ITEM:RETURN
10090 REM
10091 REM
10092 REM   	WRITE EQUATION
10093 REM
10094 REM  		TESTS IS THE EQUATION WRITTEN
10095 REM  		VERIFIES IS EXISTING EQUATION OK:REM***CESADDED
10096 REM  		INPUT LITTLE(0)
10097 REM  		INPUT BIG(0)
10098 REM  		CALCULATES ARRAY(25,2) FROM EQUATION
10099 REM
10100 PLOT 6,5,14,12,3,12,7:REM  EQUATION PLOTTING
10110 PRINT TAB( 16)"E Q U A T I O N   P L O T T I N G":PRINT
10115 FOR  J= 0TO 300:NEXT J:REM ***CESADDED:'10115'
10120 NUMBER= 25:X= 1:Y= .9999:REM  SEEK EQUATION:REM***CESADDED:REM
10125 GOTO 490:REM ***CESMOD:WAS GOSUB ON 10120
10130 REM  IFY<>.9999THEN GOSUB6050:REM JUMP IF EQUATION AT LINE 500:REM***CESMOD:'GOSUB60050'(WASGOTO10140)
10131 GOSUB 6130:REM ***CESADDED:'10131'
10132 PLOT 3,16,11:PRINT "TYPE EQUATION AT LINE 500":PRINT
10133 PRINT TAB( 16)"USING THE RULES OF BASIC. ":PRINT :PRINT
10134 PRINT TAB( 16)"EXAMPLE:  500 Y=X^2-3*X :Y$=";CHR$ (34);"X^2-3*X";CHR$ (34):PRINT :REM ***CESADDED:Y$=ETC
10135 PRINT TAB( 16)"NOW TYPE  500 Y=....... :Y$=";CHR$ (34);".......";CHR$ (34):PRINT :REM ***CESADDED:Y$=ETC
10136 PRINT TAB( 16)"THEN TYPE 'RUN' AND PRESS RETURN ":END :GOSUB 6050:REM ***CESADDED:'GOSUB6050'
10140 IF TITLE$< > ""THEN 10145
10142 PRINT :PRINT TAB( 16)"ENTER TITLE (E.G.: EQUATION): "
10143 PRINT :PRINT TAB( 14):INPUT "? ";TITLE$
10144 GOSUB 10674:REM  LABEL AXES:REM***CESADDED:'10144'
10145 PRINT :PRINT TAB( 16):INPUT "ENTER LOWEST X VALUE: ";LITTLE(0)
10150 PRINT :PRINT TAB( 16):INPUT "     HIGHEST X VALUE: ";BIG(0)
10160 X= LITTLE(0):FOR ITEM= 1TO 25:REM  Y FROM EQUAT.
10165 GOTO 490:REM ***CESMOD:WAS GOSUB ON 10160
10170 ARRAY(ITEM,0)= X:ARRAY(ITEM,1)= Y
10180 X= X+ (BIG(0)- LITTLE(0))/ 24:NEXT ITEM:RETURN :REM  INC X
10190 REM
10191 REM
10192 REM   FIND LITTLE(AXIS) AND BIG(AXIS)
10193 REM   FROM ARRAY(NUMBER,1) IN BOTH AXES
10194 REM
10200 FOR AXIS= 0TO 1:GOSUB 10210:NEXT AXIS:RETURN :REM   LO,HI
10210 LITTLE(AXIS)= ARRAY(1,AXIS):BIG(AXIS)= ARRAY(1,AXIS)
10215 FOR ITEM= 1TO NUMBER
10220 IF ARRAY(ITEM,AXIS)> LITTLE(AXIS)THEN 10230
10225 LITTLE(AXIS)= ARRAY(ITEM,AXIS)
10230 IF ARRAY(ITEM,AXIS)< BIG(AXIS)THEN 10240
10235 BIG(AXIS)= ARRAY(ITEM,AXIS)
10240 NEXT ITEM:RETURN
10288 REM
10289 REM
10290 REM    CALCULATE FRAME FROM LITTLE(AXIS) AND BIG(AXIS)
10291 REM
10292 REM  		JUMP(AXIS)   IS STEP LENGTH
10293 REM  		LOW(AXIS)   IS SCALE LOW
10294 REM  		HIGH(AXIS)  IS SCALE HIGH
10295 REM  		SCALE(AXIS) IS SCALE LENGTH
10296 REM  		GAPS(AXIS)  IS NUMBER OF STEPS
10297 REM
10300 FOR AXIS= 0TO 1:GOSUB 10310:NEXT AXIS:RETURN :REM  SCALE
10310 RANGE= (BIG(AXIS)- LITTLE(AXIS))/ 1.21
10315 JUMP(AXIS)= 4* 10^ (INT (.434295* LOG (RANGE)))
10320 DEF FN I(I)= JUMP(AXIS)* INT (I/ JUMP(AXIS)+ .0001)
10325 FOR I= 1TO 3:JUMP(AXIS)= JUMP(AXIS)/ 2
10330 HIGH(AXIS)= - FN I(- BIG(AXIS))
10340 LOW(AXIS)= FN I(LITTLE(AXIS))
10350 SCALE(AXIS)= HIGH(AXIS)- LOW(AXIS)
10360 GAPS(AXIS)= INT (1.0001* SCALE(AXIS)/ JUMP(AXIS))
10370 IF GAPS(AXIS)< 4THEN NEXT I
10380 EVEN= 2* JUMP(AXIS)* INT (- SCALE(AXIS)/ JUMP(AXIS)/ 2.1)
10390 HIGH(AXIS)= LOW(AXIS)- EVEN
10395 SCALE(AXIS)= HIGH(AXIS)- LOW(AXIS):RETURN
10480 REM
10481 REM
10482 REM    DRAW BORDERS WITH SCALES AND TITLES
10483 REM
10484 REM  	USER MAY ALTER
10485 REM  	MINSCREEN(AXIS) AND MAXSCREEN(AXIS)
10486 REM  	BUT SELECT VALUES TO MAKE
10487 REM  	RANGE A MULTIPLE OF 24.  ALSO:
10489 REM
10490 REM  	IN 0 AXIS VALUES MUST BE MULTIPLES OF 2
10491 REM  	IN 1 AXIS VALUES MUST BE MULTIPLES OF 4
10492 REM
10493 REM  	RATIO(AXIS) IS CALCULATED FROM
10494 REM  	RANGE AND SCALE(AXIS)
10495 REM
10496 REM  	PLACE IS CALCULATED FOR TIC
10497 REM  	MARKS AND SCALE NUMBERS.
10498 REM
10500 PLOT 2,255,27,24,29,15,6,COLOUR(1),12:REM  DRAW FRAME
10505 MINSCREEN(0)= 18:MAXSCREEN(0)= 114
10510 MINSCREEN(1)= 16:MAXSCREEN(1)= 112
10515 FOR AXIS= 0TO 1:RANGE= MAXSCREEN(AXIS)- MINSCREEN(AXIS)
10520 RATIO(AXIS)= RANGE/ SCALE(AXIS):NEXT AXIS
10522 PLOT 3,(MAXSCREEN(0)+ MINSCREEN(0))/ 4- LEN (TITLE$)/ 2
10524 PLOT 29- MAXSCREEN(1)/ 4:PRINT TITLE$
10525 FOR AXIS= 0TO 1
10530 PLOT 6,COLOUR(1),2,250- 4* AXIS,MINSCREEN(AXIS)- 1
10540 PLOT MINSCREEN(1- AXIS)- 1
10545 PLOT MAXSCREEN(AXIS)+ 2- 2* (AXIS= 1)
10550 PLOT MAXSCREEN(1- AXIS)+ 2- 2* (AXIS= 0)
10555 PLOT MAXSCREEN(AXIS)+ 2- 2* (AXIS= 1),255
10560 J= JUMP(AXIS)/ 2
10565 FOR PLACE= LOW(AXIS)TO HIGH(AXIS)+ JSTEP JUMP(AXIS)
10570 GOSUB 10700:REM  TIC MARKS
10580 GRAPH(1- AXIS)= MINSCREEN(1- AXIS)- 2:REM  OUTSIDE FRAME
10590 PLOT 6,COLOUR(1):GOSUB 11010
10600 PLOT 6,COLOUR(2):REM  NUMBERS
10620 IF ABS (PLACE)< JUMP(AXIS)/ 2THEN PLACE= 0:REM  NO EXPONENT
10630 GRAPH(1- AXIS)= MINSCREEN(1- AXIS)- 8+ 4* AXIS
10640 GOSUB 10800:PLACE$= STR$ (PLACE)
10650 PLOT 3,TEXT(0)- LEN (PLACE$)/ (2- AXIS),TEXT(1)
10660 PRINT PLACE$:NEXT PLACE:NEXT AXIS
10662 PLOT 3,MAXSCREEN(0)/ 2- 4- LEN (LABEL$(0))
10664 PLOT 34- MINSCREEN(1)/ 4:PRINT LABEL$(0)
10666 PLOT 3,MINSCREEN(0)/ 2- 6,29- MAXSCREEN(1)/ 4
10670 PRINT LABEL$(1):RETURN
10674 PLOT 14,10:REM ***CESADDED:'10674'
10676 IF CHOICE= 1THEN LABEL$(1)= "NUMBER":GOTO 10030:REM ***CESADDED'10676'
10678 PLOT 10,9,9:INPUT "X-AXIS UNITS, INDEPENDENT: ";LABEL$(0):REM ***CESADDED:'10678'
10680 IF CHOICE= 1THEN LABEL$(1)= "NUMBER":GOTO 10030:REM ***CESADDED:'10680'
10682 PLOT 10,9,9:INPUT "Y-AXIS UNITS, DEPENDENT: ";LABEL$(1):REM ***CESADDED:'10682'
10684 LABEL$(2)= LABEL$(1):REM ***CESADDED:'10684'
10686 PRINT :RETURN :REM ***CESADDED:'10684'
10688 REM
10689 REM
10690 REM  	CALCULATE SCREEN GRAPH POSITION
10691 REM
10692 REM  	CONVERTS PLACE IN USER UNITS
10693 REM  	TO GRAPH(AXIS) FROM
10694 REM  	RATIO(AXIS),LOW(AXIS),MINSCREEN(AXIS)
10695 REM
10700 J= RATIO(AXIS)* (PLACE- LOW(AXIS)):REM  CONVERT USER UNITS
10710 GRAPH(AXIS)= MINSCREEN(AXIS)+ J+ .0001:RETURN
10790 REM
10791 REM
10792 REM  	CALCULATE SCREEN TEXT POSITION
10793 REM
10794 REM  	CONVERTS GRAPH(AXIS) PLOTTING UNITS
10795 REM  	TO TEXT(AXIS) FOR CURSOR POSITION
10796 REM
10800 TEXT(0)= GRAPH(0)/ 2:REM  GRAPH UNITS TO CURSOR POSITION
10810 TEXT(1)= INT (31.75- GRAPH(1)/ 4):RETURN
10988 REM
10989 REM
10990 REM  	PLOTS POINTS OR LINES
10991 REM
10992 REM  	ARRAY(NUMBER,1) IS PLOTTED EITHER
10993 REM  	AS POINTS OR AS CONTINUOUS LINE
10994 REM
11000 FLAG= 1:GOSUB 11150:RETURN :REM  POINTS
11010 PLOT 2,GRAPH(0),GRAPH(1),255:RETURN :REM  POINT
11020 PLOT 2,242,GRAPH(0),GRAPH(1),255:RETURN :REM  VECTOR
11100 FLAG= 0:GOSUB 11150:RETURN :REM  VECTORS
11150 PLOT 6,COLOUR(3):FOR ITEM= 1TO NUMBER:FOR AXIS= 0TO 1
11160 PLACE= ARRAY(ITEM,AXIS):GOSUB 10700:NEXT AXIS
11170 ON 2+ (ITEM= 1OR FLAG= 1)GOSUB 11010,11020
11180 NEXT ITEM:RETURN
11188 REM
11189 REM
11190 REM  	PLOT BAR GRAPHS
11191 REM
11192 REM  	ARRAY(NUMBER,1)  IS PLOTTED EITHER
11193 REM  	AS VERTICAL OR AS HORIZONTAL BARS.
11194 REM
11200 FLAG= 1:GOSUB 11310:RETURN :REM  Y-BAR
11300 FLAG= 0:GOSUB 11310:RETURN :REM  X-BAR
11310 COLOUR= 2:FOR ITEM= 1TO NUMBER
11320 COLOUR= COLOUR+ 1+ 2* (COLOUR= 4):PLOT 6,COLOUR(COLOUR)
11330 FOR AXIS= 0TO 1:PLACE= ARRAY(ITEM,AXIS)
11340 GOSUB 10700:NEXT AXIS
11350 PLOT 2,250- FLAG* 4,MINSCREEN(FLAG):REM  X OR Y BAR
11360 FOR I= GRAPH(1- FLAG)TO GRAPH(1- FLAG)+ 1
11370 PLOT I,GRAPH(FLAG):NEXT I:PLOT 255:NEXT ITEM:RETURN
11490 REM
11491 REM
11492 REM  	SAVE IMAGES ON DISC
11493 REM
11494 REM  	IMAGES SAVED AS  SCREEN.DSP
11495 REM
11500 PLOT 6,COLOUR(2),3,0,31,11,3,13,31:REM  SAVE ON DISC
11510 INPUT "ENTER S TO SAVE, OR PRESS RETURN : ";I$:PLOT 28,11
11520 IF I$< > "S"THEN 11540
11530 PLOT 27,4:PRINT "SAVE SCREEN.DSP 6000-6FFF":PLOT 27,27
11540 RETURN
11780 REM
11781 REM
11782 REM  	SELECT COLOURS
11783 REM
11784 REM  	COLOUR(1)	FRAME
11785 REM  	COLOUR(2)	SCALE
11786 REM  	COLOUR(3)	GRAPH 1
11787 REM  	COLOUR(4)	GRAPH 2
11788 REM
11800 PLOT 6,4,3,0,31,11,3,16,31:REM  COLOUR SELECTION
11802 INPUT "ENTER C TO CHANGE COLOUR: ";K$
11804 PLOT 6,COLOUR(2),3,0,31,11:IF K$< > "C"THEN RETURN
11806 PLOT 6,38,12,3,23,7,14:PRINT "COLOUR SELECTION"
11810 PRINT :PRINT TAB( 16)"TOUCH COLOR KEY FOR BACKGROUND":REM ***CESADDED:'KEY'
11815 PRINT TAB( 20):INPUT "AND THEN PRESS RETURN: ";I$:REM ***CESADDED:'11815' & 'INPUT""' FROM 11810
11820 I= (ASC (I$)- 16)* 8:PLOT 6,I,12,3,16,11:REM  BACKGROUND
11830 PLOT 6,I/ 8* 9+ 2+ 4* (I> 40)
11835 RESTORE 11840:REM ***CESADDED:'11835';(FROM11840)
11840 DATA  "FRAME ","SCALES","GRAPH1","GRAPH2"
11844 PLOT  3,23,3:PRINT :PRINT TAB( 16)"TOUCH COLOR KEY FOR FOREGROUND":REM ***CESADDED:'11844'
11846 PRINT TAB( 20)"AND THEN PRESS RETURN:":REM ***CESADDED:'11846'
11850 FOR J= 1TO 4:READ I$:PLOT 6,I+ 4,3,4,9+ 2* J:PRINT "COLOUR FOR ";I$;:REM ***CESADDED:'PLOT6,I+4' & 'COLOR';MOD:'4'(WAS16)
11860 INPUT "";J$:COLOUR(J)= I+ ASC (J$)- 16
11870 PLOT 6,COLOUR(J),3,32,9+ 2* J:PRINT I$:NEXT J:RETURN
11890 REM
11891 REM
11892 REM   	PAUSE
11893 REM
11894 REM  		"PRESS RETURN TO CONTINUE"
11895 REM  		BLINKS BRIEFLY AT BOTTOM OF GRAPH
11896 REM
11900 PLOT 6,COLOUR(1),31,3,18,31:REM  PAUSE
11910 PRINT "PRESS RETURN  TO CONTINUE ":FOR I= 1TO 2000:NEXT I:REM ***CESMOD:'2000'(WAS1000)
11920 PLOT 15,3,0,31,11:INPUT "";I$:RETURN