   10 REM PlotLib Demo - requires BASIC 2.1i or higher
   20 REM These two lines must occur before any DIM or $ assign!
   30 DOKE $85,$8000:REM SET EMEM  - NEW END OF MEMORY SPACE
   40 CALL $C006:REM PERFORM "CLEAR" - important
   50 LOAD"PLOTLIB.BIN",$8000:REM LOAD BINARY PROGRAM AND DATA TO $8000
   60 CALL $8000:REM INIT, SETUP WRITECHAR VECTOR
   70 PRINT CHR$(12);"PLOTLIB DEMO"
 1000 DO
 1010 CURSOR 12,5:PRINT "Plot list of objects"
 1020 FRAME CLEAR: FRAME COLOR 2
 1030 CALL $8015,1,1:REM SCALE DOUBLE
 1040 REM Num Plot initiated with leading CHR$(1) (ASCII SOH)
 1050 FOR N=0 TO 40 STEP 0.1183
 1060 CALL $800C:REM SYNC TO PREVENT FLICKER
 1070 PLOT MOVE 50,50: PRINT CHR$(1);N;CHR$(0);
 1080 PLOT MOVE 10,20
 1090 PLOT COLOR 1
 1100 CALL $8009,18,60-N:REM Sample Instrument
 1110 PLOT MOVE 130,20
 1120 PLOT COLOR 3
 1130 CALL $8009,18,25+N:REM Sample Instrument
 1140 PLOT COLOR 4
 1150 PLOT MOVE 100,80
 1160 CALL $8009,16,N*2 :REM Sample Instrument
 1170 NEXT
 2000 CURSOR 12,5:PRINT "Plot wave with values"
 2010 REM PlotWave Demo
 2020 Y=96
 2030 FRAME COLOR 10:FRAME GRID 32,32
 2040 FOR N=0 TO 200
 2050 D=(RND(0)-0.5)*3:REM RANDOM WALK CURVE 1
 2060 Y=Y+D
 2070 IF Y<0 THEN Y=0
 2080 IF Y>191 THEN Y=191
 2090 FRAME CLEAR:PLOT COLOR 7
 2100 PLOT MOVE 10,100
 2110 PRINT CHR$(1);Y;CHR$(0);
 2120 PLOT COLOR 4
 2130 POKE $9EFF,Y:REM new Y value on wave 1
 2140 CALL $800F,$9E00,1:REM PlotWave routine
 2150 NEXT
 2160 W=0
 3000 CURSOR 12,5:PRINT "Double Wave Plot",,
 3010 FOR N=0TO 256
 3020 W=W+0.05
 3030 D=(RND(0)-0.5)*3:REM RANDOM WALK CURVE 1
 3040 Z=SIN(W)*50+96:REM SINE CURVE 2
 3050 Y=Y+D
 3060 IF Y<0 THEN Y=0
 3070 IF Y>191 THEN Y=191
 3080 FRAME CLEAR:PLOT COLOR 7
 3090 PLOT COLOR 6
 3100 POKE $9EFF,Y:REM new Y value on wave 1
 3110 CALL $800F,$9E00,1:REM PlotWave routine
 3120 PLOT COLOR 3
 3130 POKE $9FFF,Z
 3140 POKE $9FFE,Z
 3150 CALL $800F,$9F00,2
 3160 NEXT
 4000 CURSOR 12,5:PRINT "Instrument Plot",,
 4010 FOR SC=0 TO 1
 4020 FOR I=0 TO 3:REM selected INSTRUMENT
 4030 FRAME CLEAR:Y=50
 4040 FOR N=0 TO 100
 4050 PLOT COLOR 1+I+SC
 4060 D=(RND(0)-0.5)*5:REM RANDOM WALK
 4070 Y=Y+D
 4080 IF Y<0 THEN Y=0
 4090 IF Y>100 THEN Y=100
 4100 CALL $8015,SC,SC: REM SET NEW SCALE FOR PLOT OBJECTS
 4110 PLOT MOVE 72,40: REM TOP LEFT CORNER OF INSTRUMENT
 4120 CALL $800C: REM PLOTSYNC to prevent flicker
 4130 CALL $8009,16+I,Y: REM PLOT INSTRUMENT WITH VALUE Y
 4140 IF SC=0 THEN PLOT MOVE 112,88
 4150 ELSE PLOT MOVE 94,62
 4160 IF N<80 THEN PLOT COLOR 1
 4170 ELSE PLOT COLOR 4
 4180 PRINT CHR$(1);N;CHR$(0);: REM PLOT NUMBER
 4190 NEXT N
 4200 NEXT I
 4210 NEXT SC
 4220 LOOP UNTIL SCANKEY
 4230 REM When program ends, WriteAcc vector should be restored by:
 4240 CALL $8003
 4250 END
