10 REM ************** 20 REM Draw 2000 30 REM By Tim Surtell 40 REM ************** 50 REM NC200 Version 3.6 60 REM Downloaded from Tim's NC Users' Site 70 REM http://www.ncus.org.uk 80 CLS 90 X=240:Y=64:OS=1:IS=0:TS=1:L=FALSE:R=FALSE 100 DIMlx%(500),ly%(500) 110 MOVE1,7:DRAW478,7:DRAW478,112:DRAW1,112:DRAW1,7 120 VDU14:PRINTTAB(0,0)"Draw 2000 | Press A,L,D,R,C,S,F,T,P,Q or MENU for help. ":VDU15 130 PROCINPUT 140 IF G=65 PROCTEXT:GOTO120 150 IF G=76 PROCLINE:GOTO120 160 IF G=68 PROCDRAW:GOTO120 170 IF G=82 PROCRECT:GOTO120 180 IF G=67 PROCCIRCLE:GOTO120 190 IF G=83 PROCSTYLE:GOTO120 200 IF G=70 PROCFILE:GOTO120 210 IF G=84 PROCTEXTMEN:GOTO120 220 IF G=80 PROCFILL:GOTO120 230 IF G=134 PROCHELP(1):GOTO120 240 IF G=81 PROCQUIT:GOTO120 250 GOTO130 260 DEF PROCINPUT 270 MOVEX,Y-5:PLOT6,X,Y+5:MOVEX-5,Y:PLOT6,X+5,Y 280 IF L=TRUE MOVELX,LY:PLOT6,X,Y 290 IF R=TRUE MOVERX,RY:PLOT102,X,Y 300 G=GET 310 MOVEX,Y-5:PLOT6,X,Y+5:MOVEX-5,Y:PLOT6,X+5,Y 320 IF L=TRUE MOVELX,LY:PLOT6,X,Y 330 IF R=TRUE MOVERX,RY:PLOT102,X,Y 340 IF G=240 AND Y<111 Y=Y+1 350 IF G=241 AND Y>8 Y=Y-1 360 IF G=242 AND X>2 X=X-1 370 IF G=243 AND X<477 X=X+1 380 IF G=244 Y=111 390 IF G=245 Y=8 400 IF G=246 X=2 410 IF G=247 X=477 420 IF G=99 X=240:Y=64 430 ENDPROC 440 DEF PROCHELP(H) 450 VDU14 460 IF H=1 PRINTTAB(12,0)"A-Text L-Line D-Draw R-Rectangle C-Circle S-Styles F-File Menu":G=GET:PRINTTAB(12,0)"T-Text Menu Q-Quit the program. " 470 IF H=2 PRINTTAB(12,0)"Type in your text. CONTROL and S for Styles. Press ";CHR$255;" to exit." 480 IF H=3 PRINTTAB(12,0)"Press SPACE to select start of line. S-Styles F-File Menu ";CHR$255;"-exit." 490 IF H=4 PRINTTAB(12,0)"Press SPACE to select end of line. S-Styles F-File Menu ";CHR$255;"-exit." 500 IF H=5 PRINTTAB(12,0)"Press CONTROL-cursor keys to draw. S-Styles F-File Menu ";CHR$255;"-exit." 510 IF H=6 PRINTTAB(12,0)"Press SPACE to select first corner. S-Styles F-File Menu ";CHR$255;"-exit." 520 IF H=7 PRINTTAB(12,0)"Press SPACE to select last corner. S-Styles F-File Menu ";CHR$255;"-exit." 530 IF H=8 PRINTTAB(0,0)"Print-Print picture Save-Save onto memory Load-Load from memory. " 540 IF H=9 PRINTTAB(12,0)"Press SPACE to select centre. F=File Menu S-Styles ";CHR$255;"-exit." 550 IF H=10 PRINTTAB(12,0)"Press SPACE to select radius. F=File Menu S-Styles ";CHR$255;"-exit." 560 G=GET 570 ENDPROC 580 DEF PROCTEXT 590 TX=1:TY=2:GX=6:GY=104 600 VDU14:PRINTTAB(0,0)"Draw 2000 | Press A-Z etc., ";CHR$255;", CONTROL-S, or MENU for help. ":VDU15 610 MOVEGX,GY:PLOT102,GX+5,GY+7 620 G=GET 630 MOVEGX,GY:PLOT102,GX+5,GY+7 640 IF G=127 GOTO600 650 IF G=13 ENDPROC 660 IF G=134 PROCHELP(2):GOTO600 670 IF G=19 PROCTEXTMEN:GOTO600 680 IF G=240 AND TY>2 TY=TY-1:GY=GY+8:GOTO600 690 IF G=241 AND TY<14 TY=TY+1:GY=GY-8:GOTO600 700 IF G=242 AND TX>1 TX=TX-1:GX=GX-6:GOTO600 710 IF G=243 AND TX<78 TX=TX+1:GX=GX+6:GOTO600 720 IF G=240 AND TY=2 GOTO600 730 IF G=241 AND TY=14 GOTO600 740 IF G=242 AND TX=1 GOTO600 750 IF G=243 AND TX=78 GOTO600 760 IF TS=2 VDU17 770 IF TS=3 VDU19 780 IF TS=4 VDU14 790 IF TS=5 VDU17:VDU19 800 IF TS=6 VDU17:VDU14 810 IF TS=7 VDU19:VDU14 820 IF TS=8 VDU17:VDU19:VDU14 830 PRINTTAB(TX,TY)CHR$G 840 VDU15:VDU20:VDU18 850 IF TY<14 AND TX=78 TY=TY+1:GY=GY-8 860 IF TY=14 AND TX=78 GOTO600 870 IF TX=78 TX=1:GX=6 ELSE TX=TX+1:GX=GX+6 880 GOTO610 890 DEF PROCLINE 900 VDU14:PRINTTAB(0,0)"Draw 2000 | Press S,F,SPACEBAR,";CHR$255;", or MENU for help. ":VDU15 910 PROCINPUT 920 IF G=83 PROCSTYLE:GOTO900 930 IF G=70 PROCFILE:GOTO900 940 IF G=134 AND L=FALSE PROCHELP(3):GOTO900 950 IF G=134 AND L=TRUE PROCHELP(4):GOTO900 960 IF G=32 AND L=FALSE L=TRUE:LX=X:LY=Y:GOTO900 970 IF G=32 AND L=TRUE AND OS=1 MOVELX,LY:DRAWX,Y:L=FALSE:GOTO900 980 IF G=32 AND L=TRUE AND OS=2 MOVELX,LY:PLOT7,X,Y:L=FALSE:GOTO900 990 IF G=13 L=FALSE:ENDPROC 1000 GOTO910 1010 DEF PROCDRAW 1020 VDU14:PRINTTAB(0,0)"Draw 2000 | Press CONTROL-cursor keys,S,F,";CHR$255;", or MENU for help. ":VDU15 1030 PROCINPUT 1040 IF G=83 PROCSTYLE:GOTO1020 1050 IF G=70 PROCFILE:GOTO1020 1060 IF G=134 PROCHELP(5):GOTO1020 1070 IF G=248 AND Y<111 AND OS=1 Y=Y+1:PLOT69,X,Y 1080 IF G=249 AND Y>8 AND OS=1 Y=Y-1:PLOT69,X,Y 1090 IF G=250 AND X>2 AND OS=1 X=X-1:PLOT69,X,Y 1100 IF G=251 AND X<477 AND OS=1 X=X+1:PLOT69,X,Y 1110 IF G=248 AND Y<111 AND OS=2 Y=Y+1:PLOT71,X,Y 1120 IF G=249 AND Y>8 AND OS=2 Y=Y-1:PLOT71,X,Y 1130 IF G=250 AND X>2 AND OS=2 X=X-1:PLOT71,X,Y 1140 IF G=251 AND X<477 AND OS=2 X=X+1:PLOT71,X,Y 1150 IF G=13 ENDPROC 1160 GOTO1030 1170 DEF PROCRECT 1180 VDU14:PRINTTAB(0,0)"Draw 2000 | Press S,F,SPACEBAR,";CHR$255;", or MENU for help. ":VDU15 1190 PROCINPUT 1200 IF G=83 PROCSTYLE:GOTO1180 1210 IF G=70 PROCFILE:GOTO1180 1220 IF G=134 AND R=FALSE PROCHELP(6):GOTO1180 1230 IF G=134 AND R=TRUE PROCHELP(7):GOTO1180 1240 IF G=32 AND R=FALSE R=TRUE:RX=X:RY=Y:GOTO1180 1250 IF G=32 AND R=TRUE AND IS=1 MOVERX,RY:PLOT101,X,Y 1260 IF G=32 AND R=TRUE AND IS=2 MOVERX,RY:PLOT103,X,Y 1270 IF G=32 AND R=TRUE AND OS=1 MOVERX,RY:DRAWX,RY:DRAWX,Y:DRAWRX,Y:DRAWRX,RY 1280 IF G=32 AND R=TRUE AND OS=2 MOVERX,RY:PLOT103,X,RY:PLOT103,X,Y:PLOT103,RX,Y:PLOT103,RX,RY 1290 IF G=32 AND R=TRUE R=FALSE 1300 IF G=13 R=FALSE:ENDPROC 1310 GOTO1190 1320 DEF PROCCIRCLE 1330 VDU14:PRINTTAB(0,0)"Draw 2000 | Press SPACEBAR,F,S,";CHR$255;", or MENU for help. " 1340 PROCINPUT 1350 IF G=83 PROCSTYLE:GOTO1330 1360 IF G=134 PROCHELP(9):GOTO1330 1370 IF G=32 GOTO1400 1380 IF G=13 VDU15:ENDPROC 1390 GOTO1340 1400 RR=1 1410 PRINTTAB(0,0)"Draw 2000 | Press CURSOR KEYS,F,S,";CHR$255;",SPACEBAR or MENU for help. " 1420 MOVEX-RR,Y-RR:PLOT6,X+RR,Y-RR:PLOT6,X+RR,Y+RR:PLOT6,X-RR,Y+RR:PLOT6,X-RR,Y-RR 1430 G=GET 1440 MOVEX-RR,Y-RR:PLOT6,X+RR,Y-RR:PLOT6,X+RR,Y+RR:PLOT6,X-RR,Y+RR:PLOT6,X-RR,Y-RR 1450 IF G=242 AND RR>1 RR=RR-1 1460 IF G=243 AND Y+RR<111 AND Y-RR>8 AND X-RR>2 AND X+RR<477 RR=RR+1 1470 IF G=134 PROCHELP(10):GOTO1410 1480 IF G=83 PROCSTYLE:GOTO1410 1490 IF G=70 PROCFILE:GOTO1410 1500 IF G=32 PROCDRAWCIRC:GOTO1330 1510 IF G=13 VDU15:ENDPROC 1520 GOTO1420 1530 DEF PROCDRAWCIRC 1540 MOVEX+RR,Y 1550 FORT=0 TO 360 STEP 10 1560 IF IS=1 MOVEX,Y:PLOT85,X+RR*COS(RAD(T)),Y+RR*SIN(RAD(T)) 1570 IF IS=2 MOVEX,Y:PLOT87,X+RR*COS(RAD(T)),Y+RR*SIN(RAD(T)) 1580 NEXT 1590 MOVEX+RR,Y 1600 FORT=0 TO 360 STEP 10 1610 IF OS=1 DRAWX+RR*COS(RAD(T)),Y+RR*SIN(RAD(T)) 1620 IF OS=2 PLOT7,X+RR*COS(RAD(T)),Y+RR*SIN(RAD(T)) 1630 NEXT 1640 ENDPROC 1650 DEF PROCFILL 1660 VDU14:PRINTTAB(0,0)"Draw 2000 : Press SPACE to select centre, ";CHR$255;" to exit. ":VDU15 1670 PROCINPUT 1680 IF G=13 ENDPROC 1690 IF G=32 FORI=1 TO 500:lx%(I)=X:ly%(I)=Y:NEXT:PROCfill:GOTO1660 1700 GOTO1670 1710 DEF PROCfill:f%=1:L%=0:b%=POINT(X,Y):PROCf(X,Y):REPEAT:PROCu:PROCf(x%,y%+1):PROCf(x%,y%-1):PROCf(x%+1,y%):PROCf(x%-1,y%):UNTILf%=(l%+1) MOD 500:ENDPROC 1720 DEF PROCf(x%,y%):IF POINT(x%,y%)<>b% ENDPROC 1730 IF b%=0 PLOT69,x%,y% ELSE PLOT71,x%,y% 1740 PROCl(x%,y%):ENDPROC 1750 DEF PROCl(x%,y%):l%=(l%+1) MOD 500:lx%(l%)=x%:ly%(l%)=y%:ENDPROC 1760 DEF PROCu:x%=lx%(f%):y%=ly%(f%):f%=(f%+1) MOD 500:ENDPROC 1770 DEF PROCSTYLE 1780 C=12 1790 VDU14:PRINTTAB(0,0)"STYLE MENU : Inside : Outside : Press cursor keys,";CHR$255 1800 IF IS=0 PRINTTAB(22,0)"NO FILLING" 1810 IF IS=1 PRINTTAB(22,0)"BLACK " 1820 IF IS=2 PRINTTAB(22,0)"WHITE " 1830 IF OS=1 PRINTTAB(44,0)"BLACK" 1840 IF OS=2 PRINTTAB(44,0)"WHITE" 1850 PRINTTAB(C,0)"*" 1860 G=GET 1870 PRINTTAB(C,0)" " 1880 IF G=242 C=12:GOTO1800 1890 IF G=243 C=33:GOTO1800 1900 IF G=240 AND C=12 AND IS>0 IS=IS-1:GOTO1800 1910 IF G=240 AND C=12 AND IS=0 IS=2:GOTO1800 1920 IF G=241 AND C=12 AND IS=2 IS=0:GOTO1800 1930 IF G=241 AND C=12 AND IS<2 IS=IS+1:GOTO1800 1940 IF G=240 AND C=33 AND OS=1 OS=2:GOTO1800 1950 IF G=240 AND C=33 AND OS=2 OS=1:GOTO1800 1960 IF G=241 AND C=33 AND OS=2 OS=1:GOTO1800 1970 IF G=241 AND C=33 AND OS=1 OS=2:GOTO1800 1980 IF G=13 ENDPROC 1990 GOTO1800 2000 DEF PROCTEXTMEN 2010 VDU14:PRINTTAB(0,0)"TEXT STYLES MENU : Press cursor keys,";CHR$255;" " 2020 IF TS=1 PRINTTAB(19,0)"NORMAL " 2030 IF TS=2 PRINTTAB(19,0)"BOLD " 2040 IF TS=3 PRINTTAB(19,0)"UNDERLINED " 2050 IF TS=4 PRINTTAB(19,0)"INVERSE " 2060 IF TS=5 PRINTTAB(19,0)"BOLD and UNDERLINED " 2070 IF TS=6 PRINTTAB(19,0)"BOLD and INVERSE " 2080 IF TS=7 PRINTTAB(19,0)"UNDERLINED and INVERSE" 2090 IF TS=8 PRINTTAB(19,0)"ALL STYLES " 2100 G=GET 2110 IF G=240 AND TS>1 TS=TS-1:GOTO2020 2120 IF G=240 AND TS=1 TS=8:GOTO2020 2130 IF G=241 AND TS<8 TS=TS+1:GOTO2020 2140 IF G=241 AND TS=8 TS=1:GOTO2020 2150 IF G=13 VDU15:ENDPROC 2160 GOTO2020 2170 DEF PROCFILE 2180 C=12 2190 VDU14:PRINTTAB(0,0)"FILE MENU : Print Save Load Use cursor keys,SPACEBAR,";CHR$255;", or MENU for help." 2200 PRINTTAB(C,0)"*" 2210 G=GET 2220 PRINTTAB(C,0)" " 2230 IF G=242 AND C>12 C=C-7 2240 IF G=243 AND C<26 C=C+7 2250 IF G=134 PROCHELP(8):GOTO2190 2260 IF G=32 AND C=12 VDU15:PROCPRINT:ENDPROC 2270 IF G=32 AND C=19 VDU15:PROCSAVE:ENDPROC 2280 IF G=32 AND C=26 VDU15:PROCLOAD:ENDPROC 2290 IF G=13 VDU15:ENDPROC 2300 GOTO2200 2310 DEF PROCPRINT 2320 VDU14:PRINTTAB(0,0)"Draw 2000 | Are you sure you want to print ? Press Y or N... " 2330 YN$=GET$ 2340 IF YN$="Y" GOTO2370 2350 IF YN$="N" VDU15:ENDPROC 2360 GOTO2330 2370 PRINTTAB(0,0)"Draw 2000 | Printing... Please Wait... ":VDU15 2380 VDU2 2390 VDU1,27,1,65,1,8 2400 FORYY=104 TO 7 STEP -8 2410 VDU1,27,1,76,1,184,1,3 2420 FORXX=2 TO 477 2430 F=1:B=0 2440 FORI=0 TO 7 2450 B=B+F*POINT(XX,YY+I) 2460 F=F+F 2470 NEXT 2480 VDU1,B,1,B 2490 NEXT 2500 VDU1,10 2510 NEXT 2520 VDU1,27,1,50 2530 VDU3 2540 ENDPROC 2550 DEF PROCSAVE 2560 VDU14 2570 PRINTTAB(0,0)"Draw 2000 | Save picture Type in filename : " 2580 INPUTTAB(45,0)F$ 2590 K=OPENOUT(F$) 2600 PRINTTAB(0,0)"Draw 2000 | Please wait...Saving Picture... " 2610 FORYY=104 TO 8 STEP -8 2620 FORXX=2 TO 477 2630 B=0 2640 B=128*POINT(XX,YY+7)+64*POINT(XX,YY+6)+32*POINT(XX,YY+5)+16*POINT(XX,YY+4)+8*POINT(XX,YY+3)+4*POINT(XX,YY+2)+2*POINT(XX,YY+1)+1*POINT(XX,YY) 2650 PRINT#K,B 2660 NEXT 2670 NEXT 2680 CLOSE#K 2690 VDU15 2700 ENDPROC 2710 DEF PROCLOAD 2720 VDU14 2730 PRINTTAB(0,0)"Draw 2000 | Load Picture Type in file name : " 2740 INPUTTAB(46,0)F$ 2750 K=OPENIN(F$) 2760 PRINTTAB(0,0)"Draw 2000 | Please wait...Loading Picture... " 2770 MOVE2,8:PLOT103,477,111 2780 FORYY=104 TO 8 STEP -8 2790 FORXX=2 TO 477 2800 INPUT#K,B 2810 IF B=0 AND YY<>8 NEXT 2820 IF B AND 128 PLOT69,XX,YY+7 2830 IF B AND 64 PLOT69,XX,YY+6 2840 IF B AND 32 PLOT69,XX,YY+5 2850 IF B AND 16 PLOT69,XX,YY+4 2860 IF B AND 8 PLOT69,XX,YY+3 2870 IF B AND 4 PLOT69,XX,YY+2 2880 IF B AND 2 PLOT69,XX,YY+1 2890 IF B AND 1 PLOT69,XX,YY 2900 NEXT 2910 NEXT 2920 CLOSE#K 2930 VDU15 2940 ENDPROC 2950 DEF PROCQUIT 2960 VDU14:PRINTTAB(0,0)"QUIT : Are you sure you wish to quit ? Press Y or N ":VDU15 2970 YN$=GET$ 2980 IF YN$="Y" CLS:END 2990 IF YN$="N" ENDPROC 3000 GOTO2970