Apple Color Plotter: AppleSoft BASIC Chart Maker II (3 of 3)

This is the Applesoft BASIC source for "Chart Maker II", a demonstration program for the Apple Color Plotter. It provides an easy way to create charts and signs with the plotter. Just startup Applesoft, EXEC this file, and save the program to disk.

Note: This is Part 3 of 3 Parts, all 3 parts must be combined together to complete the program.
9015 VTAB 12: HTAB 12: PRINT "Drawing Chart";:VTAB 13: HTAB 5: PRINT "Turn Off Plotter to Terminate"
9016 ONERR GOTO 9430
9017 PRINT CHR$(4);"PR# 2": REM*** PRINT CHR$(9);"2C"
9018 REM*** GL$ = "SP0": GOSUB 51000
9019 PN = 1: GOSUB 51100
9020 IF BDR$="Y" THEN XP=0:YP=0:GOSUB 51110:YP=1759:GOSUB 51111:XP=2394:
GOSUB 51111:YP = 0: GOSUB 51111:XP = 0: GOSUB 51111
9030 FOR I = 1 TO 10
9040 IF LEN (TXT$(I)) = 0 THEN 9400
9050 IF SIZE(I) = 1 THEN SI = 54:S1 = 54: GOTO 9060
9051 IF SIZE(I) = 2 THEN SI = 72:S1 = 36: GOTO 9060
9052 IF SIZE(I) = 3 THEN SI = 108:S1 = 27
9060 GOSUB 51150
9070 PN = COL(I): GOSUB 51100
9072 GL$ = "SL0": IF SL$(I) = "Y" THEN GL$ = "SL20"
9076 GOSUB 51000
9085 XP = 100:YP = 1659 - (I * 155.9):YP = YP + S1: GOSUB 51110
9090 IF CENTER$(I) = "Y" THEN XP = 1197: GOSUB 51110: GOSUB 9500: GOTO 9110
9100 IF DENT(I) > 0 THEN GOSUB 9600
9110 MS$ = TXT$(I): GOSUB 51140
9120 IF BOLD$(I) < > "Y" THEN GOTO 9400
9130 IF CENTER$(I) = "Y" THEN XP = 1197: GOSUB 51110:GOSUB 9500: GOTO 9300
9200 XP = 100: GOSUB 51110
9210 IF DENT(I) > 0 THEN GOSUB 9600
9300 GL$ = "MR4,4": GOSUB 51000
9310 MS$ = TXT$(I): GOSUB 51140
9400 NEXT
9410 PN = 1: GOSUB 51100
9415 IF LEN (CHART$) > 0 THEN SI = 40: GOSUB 51150:XP = 2050:YP = 10: GOSUB 51110:MS$ = CHART$: GOSUB 51140
9420 SI = 30: GOSUB 51150
9430 GL$ = "CH": GOSUB 51000:PN = 1: GOSUB 51100
9439 PRINT CHR$(9);"R"
9440 PRINT CHR$(4);"PR#3"
9450 GOTO 50
9499 RETURN
9500 BACKUP = (( INT ( LEN (TXT$(I)) / 2)))
9510 IF BACKUP < .5 THEN GOTO 9550
9515 GL$="PL ": GOSUB 51001:GL$ = "PL" + CHR$(8): GOSUB 51001
9520 FOR J9 = 1 TO BACKUP
9530 GL$ = "PL" + CHR$(8): GOSUB 51001
9540 NEXT
9550 RETURN
9600 FOR J9 = 1 TO DENT(I)
9610 GL$ = "PL ": GOSUB 51001
9620 NEXT : RETURN
10000 GOSUB 72:M$ = "Move a Line": GOSUB 357
10010 PV = 20:PH = 5:M$ = "Move from line # : Move to line :": GOSUB 350
10020 PH = 39:SL = 2:LL = 1:UL = 10: GOSUB 201:IF A$ = CHR$(27) THEN 10199
10030 ON X9 GOTO 10040,10050
10040 GOSUB 369: GOTO 10020
10050 N2 = X8
10060 PH = 59:SL = 2:LL = 1:UL = 10: GOSUB 201: IF A$ = CHR$(27) THEN 10199
10070 ON X9 GOTO 10080,10090
10080 GOSUB 369: GOTO 10060
10090 N3 = X8
10100 TXT$(N3)=TXT$(N2):CENTER$(N3)=CENTER$(N2):DENT(N3)=DENT(N2):
SIZE(N3)=SIZE(N2):BOLD$(N3)=BOLD$(N2):COL(N3)=COL(N2):SL$(N3)=SL$(N2):
I = N3: GOSUB 10800
10110 I = N2: GOSUB 10900: GOSUB 10800
10199 GOSUB 72: RETURN
10800 POKE 32,5: POKE 33,74: POKE 34,I + 2: POKE 35,I + 2:HOME : TEXT : GOSUB 7010: RETURN
10900 TXT$(I)="":CENTER$(I)="N":DENT(I)=0:SIZE(I)=0:
BOLD$(I) = "N ":COL(I) = 0:SL$(I) = "N": RETURN
12033 NED
17210 PH = 52:M$ = "Color": GOSUB 352
50000 PRINT CHR$(7);: GOSUB 73
50010 PV = 17:PH = 2: GOSUB 99:M$ = "Prepare the Plotter": GOSUB 350
50015 M$="(Insert Paper, Turn On, and Press 'LOCAL' Button)":PV=18:GOSUB 350
50020 PV=19:GOSUB 99:M$="Key 'RETURN' When Ready to Start Plot": GOSUB 350
50025 PV=21:M$="(ESCAPE stops Plot; 'C' Changes Plotter Slot)": GOSUB 350
50030 GOSUB 400: IF CM = 27 THEN GOSUB 73: RETURN
50032 IF CM = 67 THEN GOSUB 57000: GOTO 50000
50033 IF A$ < > CHR$(13) THEN 50030
50035 ONERR GOTO 50050
50041 GOSUB 72:PV = 15:M$ = "Drawing Graph": GOSUB 350
50042 GOSUB 73:PV=20:M$="Turn Plotter Off to Terminate Plotting": GOSUB 350
50045 ONERR GOTO 97
50049 RETURN
50050 PRINT CHR$(7);: GOSUB 73: GOSUB 71
50060 m$="Graph'n'Calc tried to open '"+plr$+", but it's":pv = 17: GOSUB 350
50070 m$="not in SOS.DRIVER on the 'Boot' Diskette":pv=19:ph=5:GOSUB 352
50080 m$="If '"+plr$+" is configured for the Plotter, give": pv=20:GOSUB 352
50090 m$="its Device Name in the 'C' option in the Draw": pv = 21: GOSUB 352
50091 m$="command to use it as the Plotter.": pv = 22: GOSUB 352
50092 m$ = "(Press Any Key to Continue)":pv = 23: GOSUB 350
50098 GET a$
50099 GOSUB 72: GOTO 50000
50100 XP=XLEFT:YP=YBOT:GOSUB 51110:YP=Y TO P-50:GOSUB 51111:XP=XLEFT+X LEN+1:
GOSUB 51111:YP=YBOT:GOSUB 51111:XP=XLEFT:GOSUB 51111:RETURN:REM The Box
50200 REM Graph Title
50201 IF LEN (GR TIT$)=0 THEN RETURN
50202 ms$=grtit$
50205 si=30: IF LEN (ms$) < 29 THEN si=50: GOTO 50209
50206 IF LEN (ms$) < 36 THEN si=45: GOTO 50209
50207 IF LEN (ms$) < 41 THEN si=37: GOTO 50209
50209 GOSUB 51150
50210 XP=XLEFT + ( INT (X LEN / 2)):YP=Y TO P - 25
50215 hpgl$="PL ": GOSUB 51000:hpgl$="PL" + CHR$(8): GOSUB 51000
50220 GOSUB 51110: GOSUB 53420: GOSUB 51140: RETURN
51000 PRINT GL$ + CHR$(13): RETURN
51001 PRINT GL$ + CHR$(3): RETURN
51100 GL$="PS" + STR$ (PN): GOSUB 51000: RETURN : REMGet pen
51110 GL$="MA"+STR$ (XP)+","+STR$ (YP):GOSUB 51000:RETURN:REM Move X-Y
51111 GL$="DA"+STR$ (XP)+","+STR$ (YP):GOSUB 51000:RETURN:REM Draw to XY
51140 GL$="PL" + MS$: GOSUB 51001: RETURN
51150 GL$="LS" + STR$ (SI): GOSUB 51000: RETURN
51160 GOSUB 51110:GL$="PL": GOSUB 51000
57000 GOSUB 73
57010 PV=21:M$="Enter new slot #": GOSUB 350
57015 GOSUB 400
57020 IF CM=27 THEN GOSUB 73: RETURN
57030 IF CM < 49 OR CM > 55 THEN PRINT CHR$(7);: GOSUB 73: RETURN
57040 PLR$= CHR$(CM): GOSUB 73
57050 GOSUB 9001
57060 RETURN
63999 DATA104,168,104,166,223,154,72,152,72,96
Published Date: Feb 20, 2012