100 '*** Mini Draw *** 110 '* BY D. GRISSOM * 120 '* 12/31/03 * 130 '* Public Domain * 140 '***************** 150 CLS:DEFINT A-Z 160 ON ERROR GOTO 1130 170 T=FRE(X):T=T*.03 'MAXIMUM DATA POINTS 180 DIM C%(T),Q%(T),R%(T),X%(T),Y%(T) 190 CN%=1 200 BEEP 210 CLS:PRINT "********* MINI - DRAW *********":PRINT "by David Grissom -- 12/31/03":PRINT "THE MUST BE ""DOWN""!":PRINT "QUICK COMMANDS: MPLBXCDUER ?=MAIN HELP":PRINT"MAXIMUM DRAWING STEPS =";T:PRINT 220 INPUT "READ OR PLOT"; A$:CLS: IF (A$="r")+(A$="p") THEN BEEP:PRINT"The is UP!":BEEP:GOTO 200 230 CLS 240 IF LEFT$(A$,1)="R" THEN GOSUB 1000 250 IF LEFT$(A$,1)="?" THEN GOSUB 820:GOTO 210 260 B=0 270 'SCREEN 1 280 LINE (0,0)-(239,63),1,B 290 Q=119:R=27:X=119:Y=27'INITIAL CURSOR 300 A$=INKEY$:PSET (X,Y) 310 IF A$="Q" THEN 1040 320 IF A$="E" THEN INPUT "SURE";Q$:IF Q$="Y" THEN CLS:CN%=1:C%(CN%)=0:GOSUB 710 ELSE GOSUB 710 330 IF A$="R" THEN GOSUB 710 340 IF A$="U" THEN CN%=CN%-1:C%(CN%)=0:GOSUB 710:X=X%(CN%):Y%(CN%)=Y 350 IF A$="?" THEN GOSUB 820 360 PRESET(X,Y):IF A$="" THEN 300 370 IF A$="L" THEN B=2 380 IF A$="B" THEN B=3 390 IF A$="X" THEN B=4 400 IF A$="C" THEN B=5 410 IF B=1 THEN GOSUB 550 420 IF A$=CHR$(28) AND X<239 THEN X=X+1 430 IF A$=CHR$(6) AND X<235 THEN X=X+5 440 IF A$=CHR$(29) AND X>0 THEN X=X-1 450 IF A$=CHR$(1) AND X>4 THEN X=X-5 460 IF A$=CHR$(30) AND Y>0 THEN Y=Y-1 470 IF A$=CHR$(20) AND Y>4 THEN Y=Y-5 480 IF A$=CHR$(31) AND Y<63 THEN Y=Y+1 490 IF A$=CHR$(2) AND Y<59 THEN Y=Y+5 500 IF A$="P" THEN B=1 510 IF A$="M" THEN B=0:Q=X:R=Y:BEEP 520 IF B>=2 AND B<=5 THEN GOSUB 610 530 IF B=0 THEN 300 540 GOTO 300 550 'PLOT 560 IF CN%6 THEN 1000 ELSE IF RIGHT$(F$,3)<>"." THEN F$=F$+".DO" '** Save 1010 OPEN F$ FOR INPUT AS #1 1020 IF NOT EOF(1) THEN INPUT #1,C%(CN%),Q%(CN%),R%(CN%),X%(CN%),Y%(CN%):CN%=CN%+1:GOTO 1020 1030 CLOSE #1:GOSUB 710:RETURN 1040 CLS '** Save 1050 INPUT "SAVE BEFORE EXIT (Y/N)";A$ 1060 IF A$<>"Y" THEN 1120 1070 INPUT "FILENAME (6 CHAR-NO EXT.)";F$:IF LEN(F$)>6 THEN 1040 ELSE IF RIGHT$(F$,3)<>"." THEN F$=F$+".DO" 1080 OPEN F$ FOR OUTPUT AS #1 1090 FOR XX=1 TO CN%-1 1100 PRINT #1,C%(XX);Q%(XX);R%(XX);X%(XX);Y%(XX) 1110 NEXT XX:CLOSE #1 1120 END 'MENU 1130 IF ERR=52 THEN PRINT "**NO FILES**":BEEP:BEEP:BEEP: RESUME 1000 '** Error Traps 1140 IF ERR=55 THEN RESUME 210 1150 PRINT "ERROR! ERL,ERR";ERL;ERR:BEEP:END 1160 RD=SQR((X-Q)^2+(Y-R)^2) 'CIRCLE 1170 FOR TH=0 TO 360 STEP 32 1180 XC=Q+(RD*COS(TH)):YC=R+(RD*SIN(TH)) 1190 IF XC>239 OR XC<0 OR YC<0 OR YC>63 THEN 1210 1200 IF TH=0 THEN PSET(XC,YC) ELSE LINE -(XC,YC) 1210 NEXT TH 1220 RETURN 1225 RD=SQR((X%(XX)-Q%(XX))^2+(Y%(XX)-R%(XX))^2) 'CALC RADIUS 1230 FOR TH=0 TO 360 STEP 32 1240 XC=Q%(XX)+(RD*COS(TH)):YC=R%(XX)+(RD*SIN(TH)) 1250 IF XC>239 OR XC<0 OR YC<0 OR YC>63 THEN 1270 1260 IF TH=0 THEN PSET(XC,YC) ELSE LINE -(XC,YC) 1270 NEXT TH 1280 RETURN