25 ' 50 ' FUTURENET HP PLOTTER PROGRAM VERSION 1.00 JANUARY 25, 1984 75 ' COPYRIGHT 1984, FUTURENET CORPORATION 100 ' 125 CLEAR , , 8096 150 ROOT3 = SQR(3) 175 C = SQR(2) / 2 200 DEF FNCAP$ (ARG$) = CHR$(ASC(ARG$) AND &H5F) 225 ' 250 ' DRAW ARC RELATIVE CENTER AND ENDPOINT ARRAY 275 ' 300 ACX(0) = 0: ACY(0) = 1: AMX(0) = -C: AMY(0) = -C 325 ACX(1) = C: ACY(1) = C: AMX(1) = -1: AMY(1) = 0 350 ACX(2) = 1: ACY(2) = 0: AMX(2) = -C: AMY(2) = C 375 ACX(3) = C: ACY(3) = -C: AMX(3) = 0: AMY(3) = 1 400 ACX(4) = 0: ACY(4) = -1: AMX(4) = C: AMY(4) = C 425 ACX(5) = -C: ACY(5) = -C: AMX(5) = 1: AMY(5) = 0 450 ACX(6) = -1: ACY(6) = 0: AMX(6) = C: AMY(6) = -C 475 ACX(7) = -C: ACY(7) = C: AMX(7) = 0: AMY(7) = -1 500 ' 525 ' 7580B, 7585B P1,P2 COORDINATES FOR EACH PAPER SIZE 550 ' 575 PSX(0) = 5588: PSY(0) = 4318 'A SIZE 11 X 8.5 600 PSX(1) = 8636: PSY(1) = 5588 'B SIZE 17 X 11 625 PSX(2) = 11176: PSY(2) = 8636 'C SIZE 22 X 17 650 PSX(3) = 17272: PSY(3) = 11176 'D SIZE 34 X 22 675 PSX(4) = 22352: PSY(4) = 17272 'E SIZE 44 X 34 700 ' 725 INCR% = 1016 'PLOTTER RESOLUTION, PARTS PER INCH 750 DU% = 20 'DASH-1 DRAWING UNITS PER INCH 775 S% = 4 * ((INCR% / DU% + 3) \ 4)'SCALE, PLOTTER UNITS PER DASH-1 DRAWING UNIT 800 S = INCR% / DU% 825 DOT% = S% \ 4 'PLOT UNITS PER DASH-1 DOT 850 DD% = DU% * 4 'DASH-1 DOTS PER INCH 875 CSIZEP = INCR% / (DD% * 7) 'CONVERT DOTS TO CHARACTER SIZE INCREMENT 900 CLS 'CLEAR SCREEN 925 PRINT : PRINT "FutureNet HP Plotter Program.": PRINT "Version 1.00 Copyright 1984, FutureNet Corporation.": PRINT 950 PRINT "Turn plotter power on and load with paper and pen." 975 INPUT "Press ENTER key when ready.", A$ 1000 OPEN "COM2:1200,S,7,1,RS,CS65535,DS,CD" FOR RANDOM AS #1'INITIALIZE SERIAL PORT 1025 GOSUB 4100 'GET PLOTTER MODEL 1050 XNOW = 0: YNOW = 0 1075 GOSUB 4675 'GET DRAWING SURFACE ORIENTATION 1100 GOSUB 5150 'SET AXIS ORIENTATION 1125 ON ERROR GOTO 32950 1150 INPUT "Enter DASH-1 plotting file name [PLOT.DPL] ", F$ 1175 IF LEN(F$) = 0 THEN F$ = "PLOT.DPL": GOTO 1225 1200 IF INSTR(1, F$, ".") = 0 THEN F$ = F$ + ".DPL" 1225 OPEN F$ FOR INPUT AS #2 'EXISTING FILE CHECK 1250 CLOSE 2 1275 OPEN F$ FOR RANDOM AS #2 LEN = 128 1300 R% = 7 1325 GOSUB 1850 'READ FIRST RECORD 1350 FIELD #2, 1 AS ID$, 1 AS B$, 1 AS DUM$, 2 AS FID$, 2 AS DUM$, 2 AS X$, 2 AS Y$ 1375 ID% = ASC(ID$) 1400 B% = ASC(B$) 1425 FID% = CVI(FID$) 1450 X% = CVI(X$) 'INPUT DRAWING SIZE, D.U.'S 1475 Y% = CVI(Y$) 1500 IF (ID% <> 4) OR (FID% <> &H121) THEN PRINT "File "; F$; " is not a plotting file!": CLOSE 2: GOTO 1150 1525 PRINT "Plotting file "; F$; " is "; X% / 20; "by "; Y% / 20; "inches." 1550 X = X% * S%: XSIZE = X% * S'CONVERT INPUT DRAWING SIZE TO PLOTTER UNITS 1575 Y = Y% * S%: YSIZE = Y% * S 1600 YMAXD = Y 1625 GOSUB 5375 'GET DESIRED OUTPUT SIZE 1650 GOSUB 6025 'CHECK FOR 7475 MAXIMUM LIMITATION 1675 GOSUB 6325 'SET INPUT DRAWING SCALE POINTS 1700 GOSUB 6475 'CHECK SCALING, SET P1, P2 1725 PRINT "Plotting..." 1750 PRINT #1, "SP1;" 'SELECT PEN 1 1775 GOTO 7350 1800 ' 1825 ' READ NEXT 16 BYTE BLOCK 1850 ' 1875 R% = R% + 1 1900 IF R% < 8 THEN RETURN 1925 GET #2 1950 R% = 0 1975 RETURN 2000 ' 2025 ' DEFINE FIELD TO OBTAIN PARAMETERS 2050 ' 2075 R16% = R% * 16 2100 FIELD #2, R16% AS DUM$, 1 AS ID$, 1 AS B$, 1 AS FLAG$, 2 AS X$, 2 AS Y$, 2 AS XL$, 2 AS YL$, 5 AS Z$ 2125 ID% = ASC(ID$) AND 7 2150 B% = ASC(B$) 2175 X = S% * CVI(X$) 2200 Y = YMAXD - S% * CVI(Y$) 2225 XL = S% * CVI(XL$) 2250 YL = S% * CVI(YL$) 2275 RETURN 2300 ' 2325 ' PEN UP, MOVE PEN TO X, Y, ABSOLUTE MODE, LEAVE PEN UP 2350 ' 2375 PRINT #1, "PU;PA"; X; ","; Y; ";" 2400 RETURN 2425 ' 2450 ' PEN UP, MOVE PEN TO DX, DY, RELATIVE MODE, LEAVE PEN UP 2475 ' 2500 PRINT #1, "PU;PR"; DX; ","; DY; ";" 2525 RETURN 2550 ' 2575 ' PEN DOWN, DRAW TO X,Y, ABSOLUTE MODE, LEAVE PEN DOWN 2600 ' 2625 PRINT #1, "PD;PA"; X; ","; Y; ";" 2650 RETURN 2675 ' 2700 ' PEN DOWN, DRAW TO DX,DY, RELATIVE MODE, LEAVE PEN DOWN 2725 ' 2750 PRINT #1, "PD;PR"; DX; ","; DY; ";" 2775 RETURN 2800 ' 2825 ' SET ABSOLUTE MODE 2850 ' 2875 RETURN 2900 ' 2925 ' SET RELATIVE MODE 2950 ' 2975 RETURN 3000 ' 3025 ' PEN UP 3050 ' 3075 PRINT #1, "PU;": RETURN 3100 ' 3125 ' PEN DOWN 3150 ' 3175 PRINT #1, "PD;": RETURN 3200 ' 3225 ' SET SOLID LINE MODE 3250 ' 3275 PRINT #1, "LT;": RETURN 3300 ' 3325 ' SET DOTTED LINE MODE 3350 ' 3375 PRINT #1, "LT 1,"; 4 * DOT% * LTPARM; ";": RETURN 3400 ' 3425 ' SET DASHED LINE MODE 3450 ' 3475 PRINT #1, "LT 2,"; 4 * DOT% * LTPARM; ";": RETURN 3500 ' 3525 ' SET WIDE DASHED LINE MODE 3550 ' 3575 PRINT #1, "LT 3,"; 12 * DOT% * LTPARM; ";": RETURN 3600 ' 3625 ' CIRCLE PLOT RELATIVE MODE 3650 ' 3675 PRINT #1, "PU;PR"; DX; ","; DY; ";" 3700 PRINT #1, "CI"; R; ";"; "PU;PR"; -DX; ","; -DY; ";" 3725 RETURN 3750 ' 3775 ' ARC PLOT ABSOLUTE MODE 3800 ' 3825 PRINT #1, "PD;AA"; X; ","; Y; ","; D; ";": RETURN 3850 ' 3875 ' ARC PLOT RELATIVE MODE 3900 ' 3925 PRINT #1, "PD;AR"; DX; ","; DY; ","; D; ";": RETURN 3950 ' 3975 ' PLOT ALPHANUMERIC STRING 4000 ' 4025 PRINT #1, "SR"; CW% * DOT% / (P2X - P1X) / 3 * 200 * SCALE; ","; CH% * DOT% / (P2Y - P1Y) * 100 * SCALE; ";" 4050 PRINT #1, "LB"; ALF$ + CHR$(3) + ";" 4075 RETURN 4100 ' 4125 ' GET PLOTTER MODEL DESIGNATION, ANNOUNCE 4150 ' AND SET MODEL% ACCORDINGLY 4175 ' 4200 RETRY = 0 4225 PRINT #1, "IN; OI;" 'ASK FOR MODEL ID 4250 ON ERROR GOTO 33025 4275 MODEL% = 0 4300 LINE INPUT #1, MODEL$ 4325 RETRY = RETRY + 1 4350 IF MODEL$ = "7475A" THEN MODEL% = 1: S = 51 4375 IF MODEL$ = "7580B" THEN MODEL% = 2 4376 IF MODEL$ = "7580A" THEN MODEL% = 2 4400 IF MODEL$ = "7585B" THEN MODEL% = 3 4410 IF MODEL$ = "7586B" THEN MODEL% = 3 4425 IF MODEL% = 0 THEN 4500 4450 PRINT "Model "; MODEL$; " Plotter." 4475 RETURN 4500 IF RETRY = 1 THEN 4225 4525 PRINT "Unable to interface to Model " + MODEL$ + " HP Plotter." 4550 INPUT "Retry or Abort [R]/A?", A$ 4575 IF LEN(A$) = 0 THEN 4225 4600 A$ = FNCAP$(A$) 4625 IF A$ = "R" THEN 4225 4650 IF A$ = "A" THEN SYSTEM ELSE 4500 4675 ' 4700 ' GET DRAWING SURFACE SIZE, SET XMAX, YMAX IN PLOTTER UNITS 4725 ' 4750 ON MODEL% GOTO 4775, 4950, 4950 4775 INPUT "Enter letter size of paper loaded: ", PSIZE$ 4800 IF LEN(PSIZE$) = 0 THEN 4900 4825 PSIZE$ = FNCAP$(PSIZE$) 4850 IF PSIZE$ = "A" THEN PRINT #1, "PS4;": GOTO 4950 4875 IF PSIZE$ = "B" THEN PRINT #1, "PS1;": GOTO 4950 4900 PRINT "Paper size is improper." 4925 GOTO 4775 4950 PRINT #1, "OP;" 'ASK FOR P1, P2 COORDINATES 4975 INPUT #1, P1X, P1Y, P2X, P2Y 5000 XMAX = P2X - P1X 5025 YMAX = P2Y - P1Y 5050 XMAXIN = XMAX / INCR% 5075 YMAXIN = YMAX / INCR% 5100 PRINT "P1, P2 area is "; XMAXIN; " by "; YMAXIN; " inches." 5125 RETURN 5150 ' 5175 ' SET AXIS ORIENTATION 5200 ' 5225 ON MODEL% GOTO 5350, 5250, 5250 5250 IF XMAX > YMAX THEN RETURN 5275 PRINT #1, "RO90;" 5300 SWAP P1X, P1Y: SWAP P2X, P2Y: SWAP XMAX, YMAX 5325 PRINT #1, "IP"; P1X, P1Y, P2X, P2Y; ";" 5350 RETURN 5375 ' 5400 ' GET DESIRED OUTPUT DRAWING SIZE 5425 ' 5450 INPUT "Do you want to change the output drawing size Y/[N]"; A$ 5475 IF LEN(A$) = 0 THEN 5750 5500 A$ = FNCAP$(A$) 5525 IF A$ = "N" THEN 5750 5550 INPUT "Enter desired output drawing letter size: ", DSIZE$ 5575 IF LEN(DSIZE$) = 0 THEN 5775 5600 DSIZE$ = FNCAP$(DSIZE$) 5625 IF (DSIZE$ < "A") OR (DSIZE$ > "E") THEN PRINT "Output letter size improper.": GOTO 5550 5650 I% = ASC(DSIZE$) - ASC("A") 5675 XSIZEOUT = 2 * PSX(I%) 5700 YSIZEOUT = 2 * PSY(I%) 5725 GOTO 5850 5750 XSIZEOUT = XSIZE: YSIZEOUT = YSIZE: SCALE = 1: RETURN 5775 INPUT "Enter output drawing size width, height in inches:", XWID, YHGT 5800 XSIZEOUT = XWID * INCR% 5825 YSIZEOUT = YHGT * INCR% 5850 ' 5875 ' PROPORTIONALIZE OUTPUT SIZE TO INPUT SIZE 5900 ' 5925 SCALE = YSIZEOUT / YSIZE: TEMP = SCALE * XSIZE 5950 IF TEMP <= XSIZEOUT THEN XSIZEOUT = TEMP: RETURN 5975 SCALE = XSIZEOUT / XSIZE: YSIZEOUT = SCALE * YSIZE 6000 RETURN 6025 ' 6050 ' CHECK TO NOT EXCEED 7475 PLOTTING AREA LIMITATIONS 6075 ' 6100 IF MODEL% <> 1 THEN RETURN 6125 IF PSIZE$ = "B" THEN 6200 6150 IF (XSIZEOUT <= 10365) AND (YSIZEOUT <= 7962) THEN RETURN 6175 XSIZEOUT = 10365: YSIZEOUT = 7962: GOTO 6250 6200 IF (XSIZEOUT <= 16640) AND (YSIZEOUT <= 10365) THEN RETURN 6225 XSIZEOUT = 16640: YSIZEOUT = 10365 6250 GOSUB 5900 6275 XMAX = XSIZEOUT: YMAX = YSIZEOUT 6300 RETURN 6325 ' CALCULATE INPUT DRAWING SCALE POINTS 6350 ' 6375 SCX1 = 0: SCY1 = 0 6400 SCX2 = X: SCY2 = Y 6425 PRINT #1, "SC "; SCX1; SCX2; SCY1; SCY2; ";" 6450 RETURN 6475 ' 6500 ' SEE IF DRAWING WILL FIT 6525 ' 6550 IF XSIZEOUT > XMAX THEN 6600 6575 IF YSIZEOUT <= YMAX THEN XMAX = XSIZEOUT: YMAX = YSIZEOUT: GOTO 7050 6600 ' 6625 ' DRAWING DOES NOT FIT 6650 ' 6675 IF MODEL% = 1 THEN XMAX = XSIZEOUT: YMAX = YSIZEOUT: GOTO 7025 6676 PRINT "Output drawing will not fit on drawing surface." 6700 INPUT "Do you want to scale or clip [S]/C"; A$ 6725 IF LEN(A$) = 0 THEN 6800 6750 A$ = FNCAP$(A$) 6775 IF A$ = "C" THEN XMAX = XSIZEOUT: YMAX = YSIZEOUT: GOTO 7025 6776 IF A$ <> "S" THEN GOTO 6700 6800 ' 6825 ' CHECK SCALING AND SET P1, P2 SO THAT 6850 ' MAGNIFICATION IS EQUAL FOR X AND Y 6875 ' 6900 SCALE1 = YMAX / YSIZEOUT 6925 TEMP = SCALE1 * XSIZEOUT 6950 IF TEMP <= XMAX THEN XMAX = TEMP: GOTO 7025 6975 SCALE1 = XMAX / XSIZEOUT 7000 YMAX = SCALE1 * YSIZEOUT 7025 SCALE = YMAX / YSIZE 7050 ON MODEL% GOTO 7075, 7150, 7150 7075 P1X = 0: P1Y = 0 7100 P2X = XMAX: P2Y = YMAX 7125 GOTO 7200 7150 P1X = -XMAX / 2: P1Y = -YMAX / 2 7175 P2X = -P1X: P2Y = -P1Y 7200 PRINT #1, "IP "; P1X; P1Y; P2X; P2Y; ";" 7225 DIAG = SQR((P2X - P1X) ^ 2 + (P2Y - P1Y) ^ 2) 7250 LTPARM = SCALE * 100 / DIAG 7275 RETURN 7300 ' 7325 ' READ BLOCK AND BRANCH ON ID 7350 ' 7375 GOSUB 1850 7400 GOSUB 2050 7425 ON ID% GOTO 7500, 28300, 29425 7450 IF ID% = 0 THEN PRINT #1, "PU;PA0,0;SP0;": PRINT "Plot finished.": CLOSE : SYSTEM 7475 PRINT "Illegal field type "; ID%; " encountered, plot aborted! ": SYSTEM 7500 ' 7525 ' SYMBOL DEFINITION FIELD 7550 ' 7575 C% = CVI(MID$(Z$, 3, 2)) 7600 GOSUB 2050 'GET SYMBOL PARAMETERS 7625 GOSUB 2350 'MOVE TO X,Y 7650 XNOW = X: YNOW = Y 'SAVE SYMBOL ORIGIN 7675 INC% = 0 'DOT INCREMENT FLAG 7700 SSIZE% = -1: SLINTYP% = 2 7725 P% = 16 7750 GOSUB 27875 'GET NEXT DRAW COMMAND 7775 IF (OP% AND &HC0) = &H80 THEN 8925 'DRAW DOTS 7800 IF (OP% AND &H80) <> 0 THEN 8075 'NON "SHORT" COMMAND 7825 ' 7850 ' DXS, DYS, MXS, OR MYS COMMAND 7875 ' 7900 DU% = OP% AND &H1F 7925 IF (DU% AND &H10) <> 0 THEN DU% = DU% OR &HFFE0 'EXTEND SIGN 7950 O% = (OP% AND &HE0) \ 32 + 1 7975 ON O% GOSUB 8450, 8675, 8775, 8850 8000 GOTO 7750 8025 GOSUB 2350: XNOW = X: YNOW = Y: GOTO 7350 ' END OF SYMBOL DEF'N 8050 PRINT "Unknown symbol drawing command, plot aborted!": SYSTEM 8075 O% = (OP% AND &H70) \ 16 - 3 8100 O1% = (OP% AND &HF) + 1 8125 ' 8150 ' THE FOLLOWING 3 "ON GOSUB" STATEMENTS BRANCH TO A SUBROUTINE 8175 ' TO PERFORM A DRAWING COMMAND 8200 ' 8225 ON O% GOTO 8250, 8300, 8350, 8400'CX, DX, EX, OR FX 8250 ON O1% GOSUB 9325, 9400, 9475, 9600, 9800, 9900, 9975, 10100, 10475, 10550, 19000, 19350, 19400, 19450, 19500, 19550'C0 - CF 8275 GOTO 7750 8300 ON O1% GOSUB 19600, 19675, 19750, 19875, 20000, 20075, 20150, 20275, 20350, 20425, 20450, 20475, 20500, 20625, 20650, 20725'D0 - DF 8325 GOTO 7750 8350 ON O1% GOSUB 20800, 20825, 20850, 20875, 20900, 20925, 20950, 20975, 26150, 26250, 26350, 26450, 26550, 26600, 26800, 26950'E0 - EF 8375 GOTO 7750 8400 ON O1% GOSUB 27500, 27700, 8050, 8050, 8050, 8050, 8050, 8050, 8050, 8050, 8050, 8050, 8050, 8050, 8050, 8025 8425 GOTO 7750 8450 GOSUB 8550 'DXS 8475 X = X + DU% 8500 Y = Y - INC% * DOT% 8525 GOTO 2600 8550 ' 8575 IF INC% = 0 THEN DU% = DU% * S%: RETURN 8600 IF DU% < 0 THEN DU% = DU% - 1 ELSE DU% = DU% + 1 8625 DU% = DU% * DOT% 8650 RETURN 8675 GOSUB 8550 'DYS 8700 X = X + INC% * DOT% 8725 Y = Y - DU% 8750 GOTO 2600 8775 DU% = DU% * S% 'MXS 8800 X = X + DU% 8825 GOTO 2350 'MOVE TO X,Y ABS MODE 8850 DU% = DU% * S% 'MYS 8875 Y = Y - DU% 8900 GOTO 2350 'MOVE TO X,Y ABS MODE 8925 ' 8950 ' DRAW DOTS 8975 ' 9000 D1% = (OP% AND &H38) \ 8 9025 GOSUB 9100 9050 D1% = OP% AND 7 9075 GOSUB 9100: GOTO 7750 9100 ON D1% + 1 GOTO 9125, 9150, 9175, 9200, 9225, 9250, 9275, 9300 9125 Y = Y + DOT%: GOTO 2600 9150 X = X + DOT%: Y = Y + DOT%: GOTO 2600 9175 X = X + DOT%: GOTO 2600 9200 X = X + DOT%: Y = Y - DOT%: GOTO 2600 9225 Y = Y - DOT%: GOTO 2600 9250 X = X - DOT%: Y = Y - DOT%: GOTO 2600 9275 X = X - DOT%: GOTO 2600 9300 X = X - DOT%: Y = Y + DOT%: GOTO 2600 9325 GOSUB 28200 'DX 9350 X = X + OP% * S% 9375 GOTO 2600 9400 GOSUB 28200 'DY 9425 Y = Y - OP% * S% 9450 GOTO 2600 9475 GOSUB 28200 'DXY 9500 X = X + OP% * S% 9525 GOSUB 28200 9550 Y = Y - OP% * S% 9575 GOTO 2600 9600 GOSUB 28200 'DR 9625 OP2% = OP% * S% 9650 GOSUB 28200 9675 OP% = OP% * S% 9700 DX = OP2%: DY = 0: GOSUB 2725 9725 DX = 0: DY = -OP%: GOSUB 2725 9750 DX = -OP2%: DY = 0: GOSUB 2725 9775 GOTO 2600 9800 GOSUB 28200 'MX 9825 X = X + OP% * S% 9850 GOSUB 2350 9875 RETURN 9900 GOSUB 28200 'MY 9925 Y = Y - OP% * S% 9950 GOTO 2350 9975 GOSUB 28200 'MXY 10000 X = X + OP% * S% 10025 GOSUB 28200 10050 Y = Y - OP% * S% 10075 GOTO 2350 10100 GOSUB 28200 'BX 10125 X = X + OP% * S% 10150 ON SLINTYP% + 1 GOSUB 3250, 10225, 3450, 3350, 3550 10175 GOSUB 2600: GOSUB 3250 10200 RETURN 10225 SDX1 = 0 10250 IF O% = 1 THEN SDX2 = OP% * S% ELSE SDX2 = OP% * DOT% 10275 SDY1 = DOT%: SDY2 = 0 10300 IF (O1% AND 1) = 1 THEN SWAP SDX1, SDY1: SWAP SDX2, SDY2 10325 X = X + SDX1 - SDX2: Y = Y + SDY1 + SDY2: GOSUB 2600 10350 X = X + SDX2: Y = Y - SDY2: GOSUB 2600 10375 X = X - 2 * SDX1: Y = Y - 2 * SDY1: GOSUB 2600 10400 X = X - SDX2: Y = Y + SDY2: GOSUB 2600 10425 X = X + SDX1 + SDX2: Y = Y + SDY1 - SDY2 10450 RETURN 10475 GOSUB 28200 'BY 10500 Y = Y - OP% * S% 10525 GOTO 10150 10550 GOSUB 28200 'IG 10575 IG% = OP% + 1: IF IG% > 38 THEN RETURN 10600 ' 10625 ' BRANCH TO THE PROPER ROUTINE TO DRAW A GRAPHICS SYMBOL 10650 ' 10675 IGX = X: IGY = Y 'SAVE X,Y COORDINATES 10700 ON IG% GOSUB 10750, 10975, 11200, 11425, 11650, 11925, 12200, 12475, 12750, 13125, 13175, 13550, 13600, 13900, 13950, 14250, 14300, 14675, 14725, 15100, 15150, 15625, 15675, 16150, 16200, 16300, 16525, 16750, 16975, 17225, 17250, 17425, 17600, 17800, 18000, 18250, 18500, 18750 10725 X = IGX: Y = IGY: GOTO 2350 'RESTORE PEN POSITION 10750 GOSUB 16300 '2 INPUT AND GATE 10775 OP% = 2: GOSUB 9925'MY 2 10800 GOSUB 19400 'DXL 10825 OP% = 3: GOSUB 9925'MY 3 10850 GOSUB 19400 'DXL 10875 X = X + 9.25 * S% 10900 Y = Y + S% 10925 GOSUB 2350 'MXY 9.25,-1 10950 GOTO 19450 'DXR 10975 GOSUB 16300 '2 INPUT NAND GATE 11000 OP% = 2: GOSUB 9925'MY 2 11025 GOSUB 19400 'DXL 11050 OP% = 3: GOSUB 9925'MY 3 11075 GOSUB 19400 'DXL 11100 X = X + 9.25 * S% 11125 Y = Y + S% 11150 GOSUB 2350 'MXY 9.25,-1 11175 GOTO 26250 'BXR 11200 GOSUB 16300 '2 INVERTED INPUT AND GATE 11225 OP% = 2: GOSUB 9925'MY 2 11250 GOSUB 26150 'BXL 11275 OP% = 3: GOSUB 9925'MY 3 11300 GOSUB 26150 'BXL 11325 X = X + 9.25 * S% 11350 Y = Y + S% 11375 GOSUB 2350 'MXY 9.25,-1 11400 GOTO 19450 'DXR 11425 GOSUB 16300 '2 INVERTED INPUT NAND GATE 11450 OP% = 2: GOSUB 9925'MY 2 11475 GOSUB 26150 'BXL 11500 OP% = 3: GOSUB 9925'MY 3 11525 GOSUB 26150 'BXL 11550 X = X + 9.25 * S% 11575 Y = Y + S% 11600 GOSUB 2350 'MXY 9.25,-1 11625 GOTO 26250 'BXR 11650 GOSUB 16525 '3 INPUT AND GATE 11675 OP% = 1: GOSUB 9925'MY 1 11700 GOSUB 19400 'DXL 11725 OP% = 3: GOSUB 9925'MY 3 11750 GOSUB 19400 'DXL 11775 OP% = 3: GOSUB 9925'MY 3 11800 GOSUB 19400 'DXL 11825 X = X + 9.25 * S% 11850 Y = Y + 3 * S% 11875 GOSUB 2350 'MXY 9.25,-3 11900 GOTO 19450 'DXR 11925 GOSUB 16525 '3 INPUT NAND GATE 11950 OP% = 1: GOSUB 9925'MY 1 11975 GOSUB 19400 'DXL 12000 OP% = 3: GOSUB 9925'MY 3 12025 GOSUB 19400 'DXL 12050 OP% = 3: GOSUB 9925'MY 3 12075 GOSUB 19400 'DXL 12100 X = X + 9.25 * S% 12125 Y = Y + 3 * S% 12150 GOSUB 2350 'MXY 9.25,-3 12175 GOTO 26250 'BXR 12200 GOSUB 16525 '3 INVERTED INPUT AND GATE 12225 OP% = 1: GOSUB 9925'MY 1 12250 GOSUB 26150 'BXL 12275 OP% = 3: GOSUB 9925'MY 3 12300 GOSUB 26150 'BXL 12325 OP% = 3: GOSUB 9925'MY 3 12350 GOSUB 26150 'BXL 12375 X = X + 9.25 * S% 12400 Y = Y + 3 * S% 12425 GOSUB 2350 'MXY 9.25,-3 12450 GOTO 19450 'DXR 12475 GOSUB 16525 '3 INVERTED INPUT NAND GATE 12500 OP% = 1: GOSUB 9925'MY 1 12525 GOSUB 26150 'BXL 12550 OP% = 3: GOSUB 9925'MY 3 12575 GOSUB 26150 'BXL 12600 OP% = 3: GOSUB 9925'MY 3 12625 GOSUB 26150 'BXL 12650 X = X + 9.25 * S% 12675 Y = Y + 3 * S% 12700 GOSUB 2350 'MXY 9.25,-3 12725 GOTO 26250 'BXR 12750 GOSUB 12800 '4 INPUT AND GATE 12775 GOTO 19450 'DXR 12800 Y = Y - 2 * S%: GOSUB 2600'DYS 2 12825 GOSUB 16300 'DRAW NARROW AND SYMBOL 12850 Y = Y + S%: GOSUB 2350 'MYS -1 12875 GOSUB 19400 'DXL 12900 Y = Y - 3 * S%: GOSUB 2600'DYS 3 12925 GOSUB 19400 'DXL 12950 Y = Y - 3 * S%: GOSUB 2600'DYS 3 12975 GOSUB 19400 'DXL 13000 Y = Y - 3 * S%: GOSUB 2600'DYS 3 13025 GOSUB 19400 'DXL 13050 Y = Y - S%: GOSUB 2600 'DYS 1 13075 X = X + 9.25 * S%: Y = Y + 5 * S% 13100 GOTO 2350 'MXY 9.25,-4 13125 GOSUB 12800 '4 INPUT NAND GATE 13150 GOTO 26250 'BXR 13175 GOSUB 13225 '4 INVERTED INPUT AND GATE 13200 GOTO 19450 'DXR 13225 Y = Y - 2 * S%: GOSUB 2600'DYS 2 13250 GOSUB 16300 'DRAW NARROW AND SYMBOL 13275 Y = Y + S%: GOSUB 2350 'MYS -1 13300 GOSUB 26150 'BXL 13325 Y = Y - 3 * S%: GOSUB 2600'DYS 3 13350 GOSUB 26150 'BXL 13375 Y = Y - 3 * S%: GOSUB 2600'DYS 3 13400 GOSUB 26150 'BXL 13425 Y = Y - 3 * S%: GOSUB 2600'DYS 3 13450 GOSUB 26150 'BXL 13475 Y = Y - S%: GOSUB 2600 'DYS 1 13500 X = X + 9.25 * S%: Y = Y + 5 * S% 13525 GOTO 2350 'MXY 9.25,-4 13550 GOSUB 13225 '4 INVERTED INPUT NAND GATE 13575 GOTO 26250 'BXR 13600 GOSUB 13650 '2 INPUT OR GATE 13625 GOTO 19450 'DXR 13650 GOSUB 16750 13675 X = X + 3 * DOT%: Y = Y - 2 * S% 13700 GOSUB 2350 'MXY 13725 GOSUB 19400 'DXL 13750 Y = Y - 3 * S% 13775 GOSUB 2350 'MXY 13800 GOSUB 19400 'DXL 13825 X = X - 3 * DOT% + WD% 13850 Y = Y + S% 13875 GOTO 2350 'MXY 13900 GOSUB 13650 '2 INPUT NOR GATE 13925 GOTO 26250 'BXR 13950 GOSUB 14000 '2 INVERTED INPUT OR GATE 13975 GOTO 19450 'DXR 14000 GOSUB 16750 14025 X = X + 3 * DOT%: Y = Y - 2 * S% 14050 GOSUB 2350 'MXY 14075 GOSUB 26150 'BXL 14100 Y = Y - 3 * S% 14125 GOSUB 2350 'MXY 14150 GOSUB 26150 'BXL 14175 X = X - 3 * DOT% + WD% 14200 Y = Y + S% 14225 GOTO 2350 'MXY 14250 GOSUB 14000 '2 INVERTED INPUT NOR GATE 14275 GOTO 26250 'BXR 14300 GOSUB 14350 '3 INPUT OR GATE 14325 GOTO 19450 'DXR 14350 GOSUB 16975 14375 X = X + 2 * DOT%: Y = Y - S% 14400 GOSUB 2350 'MXY 14425 GOSUB 19400 'DXL 14450 X = X + 2 * DOT%: Y = Y - 3 * S% 14475 GOSUB 2350 'MXY 14500 GOSUB 19400 'DXL 14525 X = X - 2 * DOT%: Y = Y - 3 * S% 14550 GOSUB 2350 'MXY 14575 GOSUB 19400 'DXL 14600 X = X - 2 * DOT% + WD% 14625 Y = Y + 3 * S% 14650 GOTO 2350 14675 GOSUB 14350 '3 INPUT NOR GATE 14700 GOTO 26250 'BXR 14725 GOSUB 14775 '3 INVERTED INPUT OR GATE 14750 GOTO 19450 'DXR 14775 GOSUB 16975 14800 X = X + 2 * DOT%: Y = Y - S% 14825 GOSUB 2350 'MXY 14850 GOSUB 26150 'BXL 14875 X = X + 2 * DOT%: Y = Y - 3 * S% 14900 GOSUB 2350 'MXY 14925 GOSUB 26150 'BXL 14950 X = X - 2 * DOT%: Y = Y - 3 * S% 14975 GOSUB 2350 'MXY 15000 GOSUB 26150 'BXL 15025 X = X - 2 * DOT% + WD% 15050 Y = Y + 3 * S% 15075 GOTO 2350 15100 GOSUB 14775 '3 INVERTED INPUT NOR GATE 15125 GOTO 26250 'BXR 15150 GOSUB 15200 '4 INPUT OR GATE 15175 GOTO 19450 'DXR 15200 Y = Y - 2 * S%: GOSUB 2600'DXY 15225 GOSUB 16750 15250 Y = Y + S%: GOSUB 2350 'MXY 15275 GOSUB 19400 'DXL 15300 X = X + 3 * DOT%: Y = Y - 3 * S% 15325 GOSUB 2350 'MXY 15350 GOSUB 19400 'DXL 15375 Y = Y - 3 * S% 15400 GOSUB 2350 'MXY 15425 GOSUB 19400 'DXL 15450 X = X - 3 * DOT%: Y = Y - 3 * S% 15475 GOSUB 2350 'MXY 15500 GOSUB 19400 'DXL 15525 Y = Y - S%: GOSUB 2350 15550 Y = Y + 2 * S%: GOSUB 2600'DXY 15575 X = X + WD%: Y = Y + 3 * S% 15600 GOTO 2350 'MXY 15625 GOSUB 15200 '4 INPUT NOR GATE 15650 GOTO 26250 'BXR 15675 GOSUB 15725 '4 INVERTED INPUT OR GATE 15700 GOTO 19450 'DXR 15725 Y = Y - 2 * S%: GOSUB 2600'DXY 15750 GOSUB 16750 15775 Y = Y + S%: GOSUB 2350 'MXY 15800 GOSUB 26150 'BXL 15825 X = X + 3 * DOT%: Y = Y - 3 * S% 15850 GOSUB 2350 'MXY 15875 GOSUB 26150 'BXL 15900 Y = Y - 3 * S% 15925 GOSUB 2350 'MXY 15950 GOSUB 26150 'BXL 15975 X = X - 3 * DOT%: Y = Y - 3 * S% 16000 GOSUB 2350 'MXY 16025 GOSUB 26150 'BXL 16050 Y = Y - S%: GOSUB 2350 16075 Y = Y + 2 * S%: GOSUB 2600'DXY 16100 X = X + WD%: Y = Y + 3 * S% 16125 GOTO 2350 'MXY 16150 GOSUB 15725 '4 INVERTED INPUT NOR GATE 16175 GOTO 26250 'BXR 16200 WD% = 11 * S%: HT% = 7 * S%'XOR LINE 16225 H% = (HT% / 2) * ROOT3 16250 DX = -H%: DY = -HT% / 2: D = -60: GOSUB 3900: GOSUB 2850 16275 GOTO 2350 'MY HT% 16300 OP% = 7 'NARROW AND SYMBOL 16325 GOSUB 9425 'DY 7 16350 X = X + 5.75 * S% 16375 GOSUB 2600 16400 DX = 0: DY = 3.5 * S%: D = 180: GOSUB 3900: GOSUB 2850 16425 Y = Y + 7 * S% 16450 X = X - 5.75 * S% 16475 GOSUB 2600 'DX -5.75 16500 RETURN 16525 OP% = 8 'WIDE AND SYMBOL 16550 GOSUB 9425 'DY 8 16575 X = X + 5.25 * S% 16600 GOSUB 2600 'DX 5.25 16625 DX = 0: DY = 4 * S%: D = 180: GOSUB 3900: GOSUB 2850 16650 Y = Y + 8 * S% 16675 X = X - 5.25 * S% 16700 GOSUB 2600 'DX -5.25 16725 RETURN 16750 WD% = 11 * S%: HT% = 7 * S%'NARROW OR SYMBOL 16775 H% = (HT% / 2) * ROOT3 16800 DX = -H%: DY = -HT% / 2: D = -60: GOSUB 3900: GOSUB 2850 16825 DX = WD% - H%: DY = 0 16850 GOSUB 2725 'DX 16875 DX = 0: DY = HT%: D = 55: GOSUB 3900 16900 DX = -H% - DOT%: DY = -HT% / 2 + 2 * DOT%: D = 62: GOSUB 3900: GOSUB 2850 16925 DX = -WD% + H% + DOT%: DY = 0 16950 GOTO 2725 'DX 16975 WD% = 11 * S%: HT% = 8 * S%'WIDE OR SYMBOL 17000 H% = (HT% / 2) * ROOT3 17025 DX = -H%: DY = -HT% / 2: D = -60: GOSUB 3900: GOSUB 2850 17050 DY = 0 17075 DX = WD% - H% 17100 GOSUB 2725 'DX 17125 DX = 0: DY = HT%: D = 60: GOSUB 3900 17150 DX = -H%: DY = -HT% / 2: D = 60: GOSUB 3900: GOSUB 2850 17175 DX = -WD% + H%: DY = 0 17200 GOTO 2725 'DX 17225 RETURN 'IG 29 UNDEFINED 17250 X = X - 6 * DOT%: GOSUB 2350 'HORIZ CAP 17275 X = X + 3 * S%: GOSUB 2600 17300 Y = Y - 6 * DOT%: GOSUB 2350 17325 H% = 6 * DOT% * ROOT3 17350 DX = -6 * DOT%: DY = -H%: D = 60: GOSUB 3900: GOSUB 2850 17375 X = X - 6 * DOT%: Y = Y + 6 * DOT% 17400 GOSUB 2350: GOTO 17775 17425 Y = Y - 6 * DOT%: GOSUB 2350 'VERTICAL CAP 17450 Y = Y + 3 * S%: GOSUB 2600 17475 X = X + 6 * DOT%: GOSUB 2350 17500 H% = 6 * DOT% * ROOT3 17525 DX = H%: DY = -6 * DOT%: D = 60: GOSUB 3900: GOSUB 2850 17550 X = X - 6 * DOT%: Y = Y - 6 * DOT% 17575 GOSUB 2350: GOTO 17775 17600 X = X + 2 * DOT%: Y = Y - 2 * DOT%'VERTICAL RESISTOR 17625 GOSUB 2600 17650 X = X - S%: Y = Y - S% 17675 GOSUB 2600 17700 X = X + 2 * DOT%: Y = Y - 2 * DOT% 17725 GOSUB 2600 17750 OP% = -2: GOSUB 9925 17775 GOTO 3050 'PEN UP 17800 X = X + 2 * DOT%: Y = Y + 2 * DOT%'HORIZONTAL RESISTOR 17825 GOSUB 2600 17850 X = X + S%: Y = Y - S% 17875 GOSUB 2600 17900 X = X + 2 * DOT%: Y = Y + 2 * DOT% 17925 GOSUB 2600 17950 OP% = -2: GOSUB 9825 17975 GOTO 17775 18000 OP% = 2: GOSUB 19625 'RIGHT COIL 18025 DX = 0: DY = -3 * DOT%: D = -180: GOSUB 3900: GOSUB 2850 18050 OP% = 6: GOSUB 20100 18075 OP% = -2: GOSUB 19625 18100 OP% = 2: GOSUB 20025 18125 DX = 0: DY = -3 * DOT%: D = -180: GOSUB 3900: GOSUB 2850 18150 OP% = 6: GOSUB 20100 18175 OP% = -2: GOSUB 19625 18200 OP% = -3: GOSUB 9925 18225 GOTO 17775 18250 OP% = -2: GOSUB 19625 'LEFT COIL 18275 DX = 0: DY = -3 * DOT%: D = 180: GOSUB 3900: GOSUB 2850 18300 OP% = 6: GOSUB 20100 18325 OP% = 2: GOSUB 19625 18350 OP% = -2: GOSUB 20025 18375 DX = 0: DY = -3 * DOT%: D = 180: GOSUB 3900: GOSUB 2850 18400 OP% = 6: GOSUB 20100 18425 OP% = 2: GOSUB 19625 18450 OP% = -3: GOSUB 9925 18475 GOTO 17775 18500 OP% = -2: GOSUB 19700 'UPPER COIL 18525 DX = 3 * DOT%: DY = 0: D = -180: GOSUB 3900: GOSUB 2850 18550 OP% = 6: GOSUB 20025 18575 OP% = 2: GOSUB 19700 18600 OP% = -2: GOSUB 20100 18625 DX = 3 * DOT%: DY = 0: D = -180: GOSUB 3900: GOSUB 2850 18650 OP% = 6: GOSUB 20025 18675 OP% = 2: GOSUB 19700 18700 OP% = -3: GOSUB 9825 18725 GOTO 17775 18750 OP% = 2: GOSUB 19700 'LOWER COIL 18775 DX = 3 * DOT%: DY = 0: D = 180: GOSUB 3900: GOSUB 2850 18800 OP% = 6: GOSUB 20025 18825 OP% = -2: GOSUB 19700 18850 OP% = 2: GOSUB 20100 18875 DX = 3 * DOT%: DY = 0: D = 180: GOSUB 3900: GOSUB 2850 18900 OP% = 6: GOSUB 20025 18925 OP% = -2: GOSUB 19700 18950 OP% = -3: GOSUB 9825 18975 GOTO 17775 19000 FOR K1% = 1 TO 2 'INSERT DOTS 19025 GOSUB 27875 'GET PARAMETER 19050 M% = &H80 19075 FOR K2% = 1 TO 2 19100 FOR K3% = 1 TO 4 19125 IF (OP% AND M%) <> 0 THEN GOSUB 3150: GOSUB 3050 19150 DX = DOT%: DY = 0: GOSUB 2475 19175 M% = M% / 2 19200 NEXT K3% 19225 DX = -4 * DOT%: DY = -DOT%: GOSUB 2475 19250 NEXT K2% 19275 NEXT K1% 19300 DX = 0: DY = 4 * DOT%: GOSUB 2475 19325 RETURN 19350 O1% = 9: GOTO 20975 'ISC 19375 RETURN 'TEMP 19400 DX = XNOW - X: DY = 0: GOSUB 2725 'DXL 19425 GOTO 2350 19450 DX = XNOW + XL - X: DY = 0: GOSUB 2725 'DXR 19475 GOTO 2350 19500 DX = 0: DY = YNOW - Y: GOSUB 2725 'DYU 19525 GOTO 2350 19550 DX = 0: DY = YNOW - YL - Y: GOSUB 2725 'DYL 19575 GOTO 2350 19600 GOSUB 28200 'DXD 19625 X = X + OP% * DOT% 19650 GOTO 2600 19675 GOSUB 28200 'DYD 19700 Y = Y - OP% * DOT% 19725 GOTO 2600 19750 GOSUB 28200 'DXYD 19775 X = X + OP% * DOT% 19800 GOSUB 28200 19825 Y = Y - OP% * DOT% 19850 GOTO 2600 19875 GOSUB 28200 'DRD 19900 OP2% = OP% * DOT% 19925 GOSUB 28200 19950 OP% = OP% * DOT% 19975 GOTO 9700 20000 GOSUB 28200 'MXD 20025 X = X + OP% * DOT% 20050 GOTO 2350 20075 GOSUB 28200 'MYD 20100 Y = Y - OP% * DOT% 20125 GOTO 2350 20150 GOSUB 28200 'MXYD 20175 X = X + OP% * DOT% 20200 GOSUB 28200 20225 Y = Y - OP% * DOT% 20250 GOTO 2350 20275 GOSUB 28200 'BXD 20300 X = X + OP% * DOT% 20325 GOTO 10150 20350 GOSUB 28200 'BYD 20375 Y = Y - OP% * DOT% 20400 GOTO 10150 20425 INC% = 0: RETURN 'SN 20450 INC% = 1: RETURN 'SI 20475 INC% = -1: RETURN 'SD 20500 GOSUB 27900 'MXYA 20525 X = XNOW + OP% * S% 20550 GOSUB 27900 20575 Y = YNOW - OP% * S% 20600 GOTO 2350 20625 SSIZE% = -1: RETURN 'RS 20650 XSAVE = X 'SXY 20675 YSAVE = Y 20700 RETURN 20725 X = XSAVE 'RXY 20750 Y = YSAVE 20775 GOTO 2350 20800 'ISTC 20825 'ISTR 20850 'ISRC 20875 'ISBR 20900 'ISBC 20925 'ISBL 20950 'ISLC 20975 GOSUB 27875 'ISTL 21000 IF SSIZE% <> -1 THEN GOTO 21625 21025 IF OP% < 11 THEN RETURN 21050 IF OP% > 16 THEN GOTO 21850 21075 ON OP% - 10 GOTO 21100, 21175, 21375, 21250, 21400, 21550 21100 DX% = 2 * DOT%: DY% = 2 * DOT%: GOSUB 25900 'SMALL DOT SYMBOL 21125 DX = DX% + 2 * DOT%: DY = DY% - 2 * DOT%: GOSUB 2475: GOSUB 32625 21150 GOTO 2350 21175 DX% = 3 * DOT%: DY% = 3 * DOT%: GOSUB 25900 'LARGE DOT SYMBOL 21200 DX = DX% + 3 * DOT%: DY = DY% - 3 * DOT%: GOSUB 2475: GOSUB 32750 21225 GOTO 2350 21250 DX% = 2 * DOT%: DY% = 3 * DOT%: GOSUB 25900 'LEFT CLOCK 21275 DX = DOT% + DX%: DY = DY%: GOSUB 2475 21300 DX = 3 * DOT%: DY = -3 * DOT%: GOSUB 2725 21325 DX = -3 * DOT%: GOSUB 2725 21350 GOSUB 2350 21375 RETURN 21400 DX% = 2 * DOT%: DY% = 3 * DOT%: GOSUB 25900 'RIGHT CLOCK 21425 DX = 3 * DOT% + DX%: DY = DY%: GOSUB 2475 21450 DX = -3 * DOT%: DY = -3 * DOT%: GOSUB 2725 21475 DX = 3 * DOT%: GOSUB 2725 21500 GOSUB 2350 21525 RETURN 21550 DX% = 2 * DOT%: DY% = 2 * DOT%: GOSUB 25900 'BUBBLE SYMBOL 21575 DX = DX% + 2 * DOT%: DY = DY% - 2 * DOT%: GOSUB 2475: GOSUB 32500 21600 GOTO 2350 21625 ON SSIZE% + 1 GOTO 21650, 21675, 21700 21650 DX% = 4 * DOT%: DY% = 4 * DOT%: CH% = 5: CW% = 6: DX = 2 * DOT%: DY = -6 * DOT%: GOTO 21725 21675 DX% = 4 * DOT%: DY% = 6 * DOT%: CH% = 7: CW% = 7: DX = 2 * DOT%: DY = -9 * DOT%: GOTO 21725 21700 DX% = 5 * DOT%: DY% = 8 * DOT%: CH% = 9: CW% = 8: DX = DOT%: DY = -11 * DOT% 21725 GOSUB 25900 21750 DX = DX + DX%: DY = DY + DY%: GOSUB 2475 21775 ALF$ = CHR$(OP%): GOSUB 4000 21800 GOSUB 2350 21825 RETURN 21850 IF OP% < 30 THEN RETURN 21875 IF OP% > 50 THEN RETURN 21900 IF OP% < 40 THEN ON OP% - 29 GOTO 21950, 22125, 22300, 22475, 22650, 22875, 23100, 23325, 23550, 23725 21925 ON OP% - 39 GOTO 23900, 24075, 24250, 24425, 24600, 24775, 24950, 25125, 25300, 25475, 25650 21950 DX% = 6 * DOT%: DY% = 3 * DOT%: GOSUB 25900 'BIG RT ARROW 21975 DX = DX%: DY = DY%: GOSUB 2475 22000 DX = 11 * DOT%: DY = -3 * DOT%: GOSUB 2725 22025 DX = -11 * DOT%: DY = -3 * DOT%: GOSUB 2725 22050 DX = 0: DY = 6 * DOT%: GOSUB 2725 22075 GOSUB 2350 22100 RETURN 22125 DX% = 6 * DOT%: DY% = 3 * DOT%: GOSUB 25900 'BIG LEFT ARROW 22150 DX = DX%: DY = DY% - 3 * DOT%: GOSUB 2475 22175 DX = 11 * DOT%: DY = 3 * DOT%: GOSUB 2725 22200 DX = 0: DY = -6 * DOT%: GOSUB 2725 22225 DX = -11 * DOT%: DY = 3 * DOT%: GOSUB 2725 22250 GOSUB 2350 22275 RETURN 22300 DX% = 3 * DOT%: DY% = 6 * DOT%: GOSUB 25900 'BIG UP ARROW 22325 DX = 3 * DOT% + DX%: DY = DY%: GOSUB 2475 22350 DX = 3 * DOT%: DY = -11 * DOT%: GOSUB 2725 22375 DX = -6 * DOT%: DY = 0: GOSUB 2725 22400 DX = 3 * DOT%: DY = 11 * DOT%: GOSUB 2725 22425 GOSUB 2350 22450 RETURN 22475 DX% = 3 * DOT%: DY% = 6 * DOT%: GOSUB 25900 'BIG DOWN ARROW 22500 DX = DX%: DY = DY%: GOSUB 2475 22525 DX = 6 * DOT%: DY = 0: GOSUB 2725 22550 DX = -3 * DOT%: DY = -11 * DOT%: GOSUB 2725 22575 DX = -3 * DOT%: DY = 11 * DOT%: GOSUB 2725 22600 GOSUB 2350 22625 RETURN 22650 DX% = 6 * DOT%: DY% = 4 * DOT%: GOSUB 25900 'BIG UP RIGHT ARROW 22675 DX = DX%: DY = DY% - 7 * DOT%: GOSUB 2475 22700 DX = 2 * DOT%: DY = 2 * DOT%: GOSUB 2725 22725 DX = 2 * DOT%: DY = -2 * DOT%: GOSUB 2725 22750 DX = 7 * DOT%: DY = 7 * DOT%: GOSUB 2725 22775 DX = -11 * DOT%: DY = -3 * DOT%: GOSUB 2725 22800 DX = 2 * DOT%: DY = -2 * DOT%: GOSUB 2725 22825 GOSUB 2350 22850 RETURN 22875 DX% = 6 * DOT%: DY% = 4 * DOT%: GOSUB 25900 'BIG DOWN RIGHT ARROW 22900 DX = DX%: DY = DY%: GOSUB 2475 22925 DX = 2 * DOT%: DY = -2 * DOT%: GOSUB 2725 22950 DX = 2 * DOT%: DY = 2 * DOT%: GOSUB 2725 22975 DX = 7 * DOT%: DY = -7 * DOT%: GOSUB 2725 23000 DX = -11 * DOT%: DY = 3 * DOT%: GOSUB 2725 23025 DX = 2 * DOT%: DY = 2 * DOT%: GOSUB 2725 23050 GOSUB 2350 23075 RETURN 23100 DX% = 6 * DOT%: DY% = 4 * DOT%: GOSUB 25900 'BIG DOWN LEFT ARROW 23125 DX = 11 * DOT% + DX%: DY = DY%: GOSUB 2475 23150 DX = -2 * DOT%: DY = -2 * DOT%: GOSUB 2725 23175 DX = -2 * DOT%: DY = 2 * DOT%: GOSUB 2725 23200 DX = -7 * DOT%: DY = -7 * DOT%: GOSUB 2725 23225 DX = 11 * DOT%: DY = 3 * DOT%: GOSUB 2725 23250 DX = -2 * DOT%: DY = 2 * DOT%: GOSUB 2725 23275 GOSUB 2350 23300 RETURN 23325 DX% = 6 * DOT%: DY% = 4 * DOT%: GOSUB 25900 'BIG UP LEFT ARROW 23350 DX = 11 * DOT% + DX%: DY = -7 * DOT% + DY%: GOSUB 2475 23375 DX = -2 * DOT%: DY = 2 * DOT%: GOSUB 2725 23400 DX = -2 * DOT%: DY = -2 * DOT%: GOSUB 2725 23425 DX = -7 * DOT%: DY = 7 * DOT%: GOSUB 2725 23450 DX = 11 * DOT%: DY = -3 * DOT%: GOSUB 2725 23475 DX = -2 * DOT%: DY = -2 * DOT%: GOSUB 2725 23500 GOSUB 2350 23525 RETURN 23550 DX% = 3 * DOT%: DY% = 5 * DOT%: GOSUB 25900 'RIGHT DIODE ARROW 23575 DX = DX%: DY = DY%: GOSUB 2475 23600 DX = 5 * DOT%: DY = -5 * DOT%: GOSUB 2725 23625 DX = -5 * DOT%: GOSUB 2725 23650 DX = 0: DY = 10 * DOT%: GOSUB 2725 23675 GOSUB 2350 23700 RETURN 23725 DX% = 3 * DOT%: DY% = 5 * DOT%: GOSUB 25900 'LEFT DIODE ARROW 23750 DX = 6 * DOT% + DX%: DY = DY%: GOSUB 2475 23775 DX = 0: DY = -10 * DOT%: GOSUB 2725 23800 DX = -5 * DOT%: DY = 5 * DOT%: GOSUB 2725 23825 DX = 5 * DOT%: GOSUB 2725 23850 GOSUB 2350 23875 RETURN 23900 DX% = 5 * DOT%: DY% = 3 * DOT%: GOSUB 25900 'UP DIODE ARROW 23925 DX = 5 * DOT% + DX%: DY = -DOT% + DY%: GOSUB 2475 23950 DX = -5 * DOT%: DY = -5 * DOT%: GOSUB 2725 23975 DX = 10 * DOT%: DY = 0: GOSUB 2725 24000 DX = -5 * DOT%: DY = 5 * DOT%: GOSUB 2725 24025 GOSUB 2350 24050 RETURN 24075 DX% = 5 * DOT%: DY% = 3 * DOT%: GOSUB 25900 'DOWN DIODE ARROW 24100 DX = DX%: DY = DY%: GOSUB 2475 24125 DX = 10 * DOT%: DY = 0: GOSUB 2725 24150 DX = -5 * DOT%: DY = -5 * DOT%: GOSUB 2725 24175 DY = 5 * DOT%: GOSUB 2725 24200 GOSUB 2350 24225 RETURN 24250 DX% = 2 * DOT%: DY% = 3 * DOT%: GOSUB 25900 'SMALL RT ARROW 24275 DX = DX%: DY = DY%: GOSUB 2475 24300 DX = 3 * DOT%: DY = -3 * DOT%: GOSUB 2725 24325 DX = -3 * DOT%: GOSUB 2725 24350 DX = 0: DY = 6 * DOT%: GOSUB 2725 24375 GOSUB 2350 24400 RETURN 24425 DX% = 2 * DOT%: DY% = 3 * DOT%: GOSUB 25900 'SMALL LEFT ARROW 24450 DX = 4 * DOT% + DX%: DY = DY%: GOSUB 2475 24475 DX = 0: DY = -6 * DOT%: GOSUB 2725 24500 DX = -3 * DOT%: DY = 3 * DOT%: GOSUB 2725 24525 DX = 3 * DOT%: GOSUB 2725 24550 GOSUB 2350 24575 RETURN 24600 DX% = 3 * DOT%: DY% = 2 * DOT%: GOSUB 25900 'SMALL UP ARROW 24625 DX = 3 * DOT% + DX%: DY = -DOT% + DY%: GOSUB 2475 24650 DX = 3 * DOT%: DY = -3 * DOT%: GOSUB 2725 24675 DX = -6 * DOT%: DY = 0: GOSUB 2725 24700 DX = 3 * DOT%: DY = 3 * DOT%: GOSUB 2725 24725 GOSUB 2350 24750 RETURN 24775 DX% = 3 * DOT%: DY% = 2 * DOT%: GOSUB 25900 'SMALL DOWN ARROW 24800 DX = DX%: DY = DY%: GOSUB 2475 24825 DX = 6 * DOT%: DY = 0: GOSUB 2725 24850 DX = -3 * DOT%: DY = -3 * DOT%: GOSUB 2725 24875 DY = 3 * DOT%: GOSUB 2725 24900 GOSUB 2350 24925 RETURN 24950 DX% = 2 * DOT%: DY% = 2 * DOT%: GOSUB 25900 'SMALL UP RIGHT ARROW 24975 DX = DX%: DY = DY%: GOSUB 2475 25000 DX = 4 * DOT%: DY = 0: GOSUB 2725 25025 DX = 0: DY = -4 * DOT%: GOSUB 2725 25050 DX = -4 * DOT%: DY = 4 * DOT%: GOSUB 2725 25075 GOSUB 2350 25100 RETURN 25125 DX% = 2 * DOT%: DY% = 2 * DOT%: GOSUB 25900 'SMALL DOWN RIGHT ARROW 25150 DX = 4 * DOT% + DX%: DY = DY%: GOSUB 2475 25175 DX = 0: DY = -4 * DOT%: GOSUB 2725 25200 DX = -4 * DOT%: DY = 0: GOSUB 2725 25225 DX = 4 * DOT%: DY = 4 * DOT%: GOSUB 2725 25250 GOSUB 2350 25275 RETURN 25300 DX% = 2 * DOT%: DY% = 2 * DOT%: GOSUB 25900 'SMALL DOWN LEFT ARROW 25325 DX = DX%: DY = DY%: GOSUB 2475 25350 DX = 4 * DOT%: DY = -4 * DOT%: GOSUB 2725 25375 DX = -4 * DOT%: DY = 0: GOSUB 2725 25400 DX = 0: DY = 4 * DOT%: GOSUB 2725 25425 GOSUB 2350 25450 RETURN 25475 DX% = 2 * DOT%: DY% = 2 * DOT%: GOSUB 25900 'SMALL UP LEFT ARROW 25500 DX = DX%: DY = DY%: GOSUB 2475 25525 DX = 4 * DOT%: DY = 0: GOSUB 2725 25550 DX = -4 * DOT%: DY = -4 * DOT%: GOSUB 2725 25575 DX = 0: DY = 4 * DOT%: GOSUB 2725 25600 GOSUB 2350 25625 RETURN 25650 DX% = 6 * DOT%: DY% = 2 * DOT%: GOSUB 25900 'RIGHT ? ARROW 25675 DX = DX%: DY = DY%: GOSUB 2475 25700 DX = 11 * DOT%: DY = -3 * DOT%: GOSUB 2725 25725 DX = -11 * DOT%: DY = 0: GOSUB 2725 25750 DX = 0: DY = 3 * DOT%: GOSUB 2725 25775 GOSUB 2350 25800 RETURN 25825 ' 25850 ' GET RELATIVE OFFSETS DX%, DY% FOR THE ISXX COMMANDS 25875 ' 25900 ON O1% GOTO 25925, 25950, 25975, 26000, 26025, 26050, 26075, 26100, 26125 25925 DX% = -DX%: DY% = 0: RETURN 'ISTC CASE 25950 DX% = -2 * DX%: DY% = 0: RETURN 'ISTR 25975 DX% = -2 * DX%: RETURN 'ISRC 26000 DX% = -2 * DX%: DY% = 2 * DY%: RETURN'ISBR 26025 DX% = -DX%: DY% = 2 * DY%: RETURN 'ISBC 26050 DX% = 0: DY% = 2 * DY%: RETURN 'ISBL 26075 DX% = 0: RETURN 'ISLC 26100 DX% = 0: DY% = 0: RETURN 'ISTL 26125 DX% = -DX%: RETURN 'ISC 26150 DX = -2 * DOT%: DY = 0: GOSUB 2475 'BXL 26175 GOSUB 32500 26200 DX = -2 * DOT%: DY = 0: GOSUB 2475 26225 DX = XNOW - X + 4 * DOT%: DY = 0: GOSUB 2725: GOTO 2350 26250 DX = 2 * DOT%: DY = 0: GOSUB 2475 'BXR 26275 GOSUB 32500 26300 DX = 2 * DOT%: DY = 0: GOSUB 2475 26325 DX = XNOW + XL - X - 4 * DOT%: DY = 0: GOSUB 2725: GOTO 2350 26350 DX = 0: DY = 2 * DOT%: GOSUB 2475 'BYU 26375 GOSUB 32500 26400 DX = 0: DY = 2 * DOT%: GOSUB 2475 26425 DX = 0: DY = YNOW - Y - 4 * DOT%: GOSUB 2725: GOTO 2350 26450 DX = 0: DY = -2 * DOT%: GOSUB 2475 'BYL 26475 GOSUB 32500 26500 DX = 0: DY = -2 * DOT%: GOSUB 2475 26525 DX = 0: DY = YNOW - YL - Y + 4 * DOT%: GOSUB 2725: GOTO 2350 26550 GOSUB 27875 'ST 26575 SSIZE% = OP%: RETURN 26600 ' 26625 ' DRAW CIRCLE 26650 ' 26675 GOSUB 27875 'GET RADIUS 26700 R = OP% * S% 26725 DX = 0: DY = 0 26750 GOSUB 3650 26775 RETURN 26800 ' 26825 ' DRAW CIRCLE DOTS 26850 ' 26875 GOSUB 27875 'GET RADIUS 26900 R = OP% * DOT% 26925 GOTO 26725 26950 ' 26975 ' DRAW ARC 27000 ' 27025 GOSUB 27875 'GET RADIUS 27050 OP% = OP% * S% 27075 RAD% = OP% 27100 GOSUB 27875 'GET LENGTH AND DIRECTION 27125 AL% = (OP% AND 7) * 45 + 45 27150 IF (OP% AND 8) = 0 THEN AL% = -AL% 27175 DIR% = (OP% AND &H70) \ 16 27200 XC% = ACX(DIR%) * RAD% 27225 YC% = ACY(DIR%) * RAD% 27250 DX = XC%: DY = YC%: D = AL%: GOSUB 3900 27275 I% = OP% AND 15 27300 IF I% = 15 THEN I% = 7: GOTO 27350 27325 IF I% > 7 THEN I% = 14 - I% 27350 I% = I% + DIR% 27375 IF I% > 7 THEN I% = I% - 8 27400 XM% = CINT((XC% + AMX(I%) * RAD%) / 3) * 3 27425 YM% = CINT((YC% + AMY(I%) * RAD%) / 3) * 3 27450 X = X + XM%: Y = Y + YM% 27475 GOTO 2350 27500 ' 27525 ' DRAW ARC DOTS 27550 ' 27575 GOSUB 27875 'GET RADIUS 27600 OP% = OP% * DOT% 27625 GOTO 27075 27650 ' 27675 ' SET SYMBOL BROKEN LINE TYPE 27700 ' 27725 GOSUB 27875 27750 SLINTYP% = OP% 27775 RETURN 27800 ' 27825 ' PUT NEXT SYMBOL DRAWING OPERATOR OR PARAMETER 27850 ' BYTE INTO OP% 27875 ' 27900 P% = P% + 1 27925 IF P% < 17 THEN GOTO 28050 27950 ' 27975 GOSUB 1850 28000 FIELD #2, 16 * R% AS DUM$, 16 AS Z$ 28025 P% = 1 28050 OP% = ASC(MID$(Z$, P%, 1)) 28075 RETURN 28100 ' 28125 ' GET NEXT DRAWING COMMAND BYTE AND CONVERT 28150 ' TO 2'S COMPLEMENT INTEGER 28175 ' 28200 GOSUB 27875 28225 IF (OP% AND &H80) = 0 THEN RETURN 28250 OP% = OP% OR &HFF00 28275 RETURN 28300 ' 28325 ' LINE SEGMENT DEFINITION FIELD 28350 ' 28375 DFLAG% = ASC(FLAG$) AND 3 28400 AFLAG% = (ASC(FLAG$) AND &HC) / 4 28425 Z% = ASC(Z$) 28450 X1 = X + XL 'GET LINE END-POINTS 28475 Y1 = Y - YL 28500 ADX = 0: ADX1 = 0: ADY = 0: ADY1 = 0 28525 IF XL = 0 THEN 28625 28550 IF (AFLAG% AND 1) <> 0 THEN ADX = 4 * DOT% 28575 IF (AFLAG% AND 2) <> 0 THEN ADX1 = -4 * DOT% 28600 GOTO 28675 28625 IF (AFLAG% AND 1) <> 0 THEN ADY = -4 * DOT% 28650 IF (AFLAG% AND 2) <> 0 THEN ADY1 = 4 * DOT% 28675 D1 = ABS(X - XNOW) + ABS(Y - YNOW) 28700 D2 = ABS(X1 - XNOW) + ABS(Y1 - YNOW) 28725 IF D1 < D2 THEN GOTO 28900 28750 SWAP X, X1 28775 SWAP Y, Y1 28800 SWAP ADX, ADX1 28825 SWAP ADY, ADY1 28850 IF (DFLAG% = 1) OR (DFLAG% = 2) THEN DFLAG% = 3 - DFLAG% 28875 IF (AFLAG% = 1) OR (AFLAG% = 2) THEN AFLAG% = 3 - AFLAG% 28900 IF (X = XNOW) AND (Y = YNOW) THEN 28975 28925 GOSUB 2350 'MOVE XY ABS 28950 XNOW = X: YNOW = Y 28975 IF (DFLAG% AND 1) = 1 THEN GOSUB 30250 29000 IF (AFLAG% AND 1) = 1 THEN GOSUB 30375 29025 X = X1: Y = Y1 29050 IF Z% = 2 THEN GOSUB 3450: GOSUB 2600: GOSUB 3250: GOTO 29325 29075 IF Z% = 3 THEN GOSUB 3350: GOSUB 2600: GOSUB 3250: GOTO 29325 29100 IF Z% = 4 THEN GOSUB 3550: GOSUB 2600: GOSUB 3250: GOTO 29325 29125 GOSUB 2600 29150 IF Z% <> 1 THEN GOTO 29325 29175 DYB = DOT%: DXB = 0 29200 IF XL = 0 THEN SWAP DYB, DXB 29225 GOSUB 31700 'PLOT WIDE BUSS LINE 29250 IF SCALE < 1.2 THEN 29325 29275 DX = CINT(DX * .5): DY = CINT(DY * .5) 29300 GOSUB 31700 'FILL IN BUSS LINES ON EXPANDED PLOTS 29325 X = XNOW: Y = YNOW: XNOW = X1: YNOW = Y1 29350 IF (DFLAG% AND 2) = 2 THEN GOSUB 30250 29375 IF (AFLAG% AND 2) = 2 THEN GOSUB 30375 29400 GOTO 7375 29425 ' 29450 ' ALPHANUMERIC FIELD DEFINITION 29475 ' 29500 SIZE% = (ASC(ID$) AND &HE0) \ 32 29525 I% = INSTR(Z$, CHR$(0)) 29550 IF I% = 0 THEN I% = 5 ELSE I% = I% - 1 29575 ALF$ = MID$(Z$, 1, I%) 29600 FLAG% = ASC(FLAG$) AND &H7F 29625 NFLAG% = ASC(FLAG$) AND &H80 29650 IF FLAG% > 99 THEN GOTO 30150 29675 IF SIZE% = 0 THEN CH% = 5: CW% = 6: DX = 2 * DOT%: DY = -6 * DOT%: GOTO 29750 29700 IF SIZE% = 1 THEN CH% = 7: CW% = 7: DX = 2 * DOT%: DY = -9 * DOT%: GOTO 29750 29725 CH% = 9: CW% = 8: DX = DOT%: DY = -11 * DOT% 29750 GOSUB 2350: XNOW = X: YNOW = Y: GOSUB 2475: GOSUB 2850 29775 B% = B% - 1 29800 IF B% = 0 THEN GOSUB 4000: GOTO 30000 29825 GOSUB 1850 'READ NEXT BLOCK 29850 FIELD #2, R% * 16 AS DUM$, 16 AS Z$ 29875 I% = INSTR(Z$, CHR$(0)) 29900 IF I% = 1 THEN GOTO 29775 29925 IF I% = 0 THEN I% = 16 ELSE I% = I% - 1 29950 ALF$ = ALF$ + MID$(Z$, 1, I%) 29975 GOTO 29775 30000 IF NFLAG% = &H80 THEN GOTO 30075 'OVERBAR 30025 GOSUB 2350 'MOVE XY ABS 30050 GOTO 7375 30075 DY = -DY - DOT%: DX = -DOT%: GOSUB 2475 'MOVE XY REL 30100 Y = Y - DOT%: GOSUB 2600: Y = Y + DOT%: GOSUB 2350 30125 GOTO 7375 30150 B% = B% - 1 30175 IF B% = 0 THEN GOTO 7375 30200 GOSUB 1850 30225 GOTO 30150 30250 ' 30275 ' DRAW A "DOT" ON A LINE 30300 ' 30325 IF Z% = 1 THEN 32900 'LARGE DOT ON A LINE 30350 GOTO 32625 'SMALL DOT 30375 ' 30400 'DRAW ARROWS AT THE ENDS OF LINE SEGMENTS 30425 ' 30450 IF YL = 0 THEN 31050 'LINE IS HORIZONTAL 30475 IF YNOW = Y1 THEN 31025 30500 IF Y1 < Y THEN 30775 30525 DX = -3 * DOT%: DY = 11 * DOT%: GOSUB 2725 'DOWN ARROW 30550 DX = 6 * DOT%: DY = 0: GOSUB 2725 30575 DX = -3 * DOT%: DY = -11 * DOT%: GOSUB 2725 30600 DX = -2 * DOT%: DY = 11 * DOT%: GOSUB 2725 30625 DX = 4 * DOT%: DY = 0: GOSUB 2725 30650 DX = -2 * DOT%: DY = -11 * DOT%: GOSUB 2725 30675 DX = -DOT%: DY = 11 * DOT%: GOSUB 2725 30700 DX = 2 * DOT%: DY = 0: GOSUB 2725 30725 DX = -DOT%: DY = -3 * DOT%: GOSUB 2725 30750 GOTO 2850 30775 DX = -3 * DOT%: DY = -11 * DOT%: GOSUB 2725'UP ARROW 30800 DX = 6 * DOT%: DY = 0: GOSUB 2725 30825 DX = -3 * DOT%: DY = 11 * DOT%: GOSUB 2725 30850 DX = -2 * DOT%: DY = -11 * DOT%: GOSUB 2725 30875 DX = 4 * DOT%: DY = 0: GOSUB 2725 30900 DX = -2 * DOT%: DY = 11 * DOT%: GOSUB 2725 30925 DX = -DOT%: DY = -11 * DOT%: GOSUB 2725 30950 DX = 2 * DOT%: DY = 0: GOSUB 2725 30975 DX = -DOT%: DY = 11 * DOT%: GOSUB 2725 31000 GOTO 2850 31025 IF Y < Y1 THEN 30775 ELSE 30525 31050 IF XNOW = X1 THEN 31600 31075 IF X1 < X THEN 31350 31100 DX = 11 * DOT%: DY = -3 * DOT%: GOSUB 2725'LEFT ARROW 31125 DX = 0: DY = 6 * DOT%: GOSUB 2725 31150 DX = -11 * DOT%: DY = -3 * DOT%: GOSUB 2725 31175 DX = 11 * DOT%: DY = -2 * DOT%: GOSUB 2725 31200 DX = 0: DY = 4 * DOT%: GOSUB 2725 31225 DX = -11 * DOT%: DY = -2 * DOT%: GOSUB 2725 31250 DX = 11 * DOT%: DY = -DOT%: GOSUB 2725 31275 DX = 0: DY = 2 * DOT%: GOSUB 2725 31300 DX = -11 * DOT%: DY = -DOT%: GOSUB 2725 31325 GOTO 2850 31350 DX = -11 * DOT%: DY = -3 * DOT%: GOSUB 2725'RIGHT ARROW 31375 DX = 0: DY = 6 * DOT%: GOSUB 2725 31400 DX = 11 * DOT%: DY = -3 * DOT%: GOSUB 2725 31425 DX = -11 * DOT%: DY = -2 * DOT%: GOSUB 2725 31450 DX = 0: DY = 4 * DOT%: GOSUB 2725 31475 DX = 11 * DOT%: DY = -2 * DOT%: GOSUB 2725 31500 DX = -11 * DOT%: DY = -DOT%: GOSUB 2725 31525 DX = 0: DY = 2 * DOT%: GOSUB 2725 31550 DX = 11 * DOT%: DY = -DOT%: GOSUB 2725 31575 GOTO 2850 31600 IF X < X1 THEN 31350 ELSE 31100 31625 ' 31650 ' PLOT BROAD BUSS LINES 31675 ' 31700 X = X1 + DXB + ADX1: Y = Y1 + DYB + ADY1: GOSUB 2600 31725 X = XNOW + DXB + ADX: Y = YNOW + DYB + ADY: GOSUB 2600 31750 X = XNOW - DXB + ADX: Y = YNOW - DYB + ADY: GOSUB 2600 31775 X = X1 - DXB + ADX1: Y = Y1 - DYB + ADY1: GOSUB 2600 31800 X = X1: Y = Y1: GOSUB 2600 31825 RETURN 31850 ' 31875 ' FILL CENTER OF SMALL DOT 31900 ' 31925 DX = DOT%: DY = DOT%: GOSUB 2725 31950 DX = -2 * DOT%: DY = 0: GOSUB 2725 31975 SWAP DX, DY: GOSUB 2725 32000 DX = 2 * DOT%: DY = 0: GOSUB 2725 32025 SWAP DX, DY: GOSUB 2725 32050 DX = -DOT%: DY = DX: GOSUB 2475 32075 GOTO 3050 32100 ' 32125 ' DRAW BUBBLE SUBROUTINE 32150 ' 32175 DX = BX% * DOT%: DY = BY% * DOT%: GOSUB 2475 32200 DX = -BP% * DOT%: DY = 0: GOSUB 2725 32225 DX = -DOT%: DY = DX: GOSUB 2725 32250 DX = 0: DY = -BP% * DOT%: GOSUB 2725 32275 DX = DOT%: DY = -DX: GOSUB 2725 32300 DX = BP% * DOT%: DY = 0: GOSUB 2725 32325 DX = DOT%: DY = DX: GOSUB 2725 32350 DX = 0: DY = BP% * DOT%: GOSUB 2725 32375 DX = -DOT%: DY = -DX: GOSUB 2725 32400 DX = -BX% * DOT%: DY = -BY% * DOT%: GOSUB 2475 32425 GOTO 2850 32450 ' 32475 ' DRAW SMALL BUBBLE 32500 ' 32525 BX% = 1: BY% = 2: BP% = 2 32550 GOTO 32150 32575 ' 32600 ' DRAW SMALL DOT 32625 ' 32650 GOSUB 31900 'FILL CENTER 32675 GOTO 32500 'DRAW SMALL BUBBLE 32700 ' 32725 ' DRAW LARGE DOT SYMBOL (NOT ON A LINE) 32750 ' 32775 GOSUB 32625 'DRAW SMALL DOT 32800 BX% = 2: BY% = 3: BP% = 4 32825 GOTO 32150 'DRAW LARGE BUBBLE 32850 ' 32875 ' DRAW LARGE DOT ON BUSS LINE 32900 ' 32925 GOTO 32625 'DRAW SMALL DOT 32950 IF ERL = 1225 THEN PRINT "File "; F$; " not found!": RESUME 1150 32975 IF ERR = 24 THEN BEEP: BEEP: BEEP: RESUME 33000 PRINT "ERROR "; ERR; "IN LINE "; ERL: STOP 33025 IF ERL = 4300 THEN RESUME 4300 33050 STOP