10 REM ************** 20 REM PCB CAD 30 REM By Tim Surtell 40 REM ************** 50 REM NC200 Version 2.51 : 10/95 60 REM *THIS PROGRAM IS UNFINISHED AND MAY CONTAIN ERRORS* 70 REM Downloaded from Tim's NC Users' Site 80 REM http://www.ncus.org.uk 90 ONERRORVDU15:CLOSE#0:VDU3:REPORT:PRINT" @ line ";ERL:END 100 CLS:PRINTCHR$14 110 num=1:warn=FALSE:DIMtype(200),xpos(200),ypos(200),v1(200),v2(200),v3(200),byte(424) 120 line=2:blob=2:xinc=8:yinc=6:align=FALSE:orient=1 130 X=240:Y=60 140 MOVE0,0:DRAW479,0:DRAW479,118:DRAW0,118:DRAW0,0:MOVE54,0:DRAW54,118 150 FORI=2 TO 82 STEP 16:MOVE2,I:DRAW18,I:NEXT:MOVE2,84:DRAW18,84:MOVE2,116:DRAW18,116:MOVE2,2:DRAW2,82:MOVE18,2:DRAW18,82:MOVE2,84:DRAW2,116:MOVE18,84:DRAW18,116 160 FORI=17 TO 81 STEP 16:MOVE18,I:PLOT21,52,I:MOVE18,I-10:PLOT21,52,I-10:NEXT 170 MOVE6,95:DRAW10,91:DRAW14,95:DRAW12,95:DRAW12,110:DRAW8,110:DRAW8,95:DRAW6,95:MOVE4,89:PLOT101,16,90 180 PROCBLOB(10,74,2,1):MOVE4,57:PLOT101,16,59:PROCBLOB(47,76,2,1):MOVE44,59:PLOT101,50,61 190 MOVE5,38:DRAW15,38:MOVE5,42:DRAW15,42:MOVE5,46:DRAW15,46:MOVE6,37:DRAW6,47:MOVE10,37:DRAW10,47:MOVE14,37:DRAW14,47 200 MOVE4,26:DRAW7,26:MOVE15,25:DRAW15,27:MOVE9,22:DRAW12,30 210 MOVE4,6:DRAW16,6:MOVE14,4:DRAW14,15 220 VDU15:PRINTTAB(4,6)"B-2"TAB(4,8)"L-2"TAB(4,10)"ON"TAB(4,12)"VERT"TAB(4,14)"OFF":VDU14 230 PRINTTAB(0,0)SPC80TAB(0,0)"WELCOME to PCB CAD : Press one of A,B,C,F,G,I,L,O,P,Q,T,U,+ or H for help...":GOTO250 240 PRINTTAB(0,0)SPC80TAB(0,0)"Press one of A,B,C,F,G,I,L,O,P,Q,T,U,+ or H for help..." 250 MOVE20,84:PLOT101,52,116:G$=GET$ 260 PRINTTAB(0,0)SPC80 270 IF G$="I" OR G$="i" PROCIC 280 IF G$="B" OR G$="b" PROCbsize 290 IF G$="L" OR G$="l" PROClsize 300 IF G$="T" OR G$="t" PROCTRACK 310 IF G$="C" OR G$="c" PROCCOMP 320 IF G$="G" OR G$="g" PROCgrid 330 IF G$="O" OR G$="o" PROCorient 340 IF G$="A" OR G$="a" PROCalign 350 IF G$="P" OR G$="p" PROCPRINT 360 IF G$="+" OR G$="=" PROCPLUS 370 IF G$="F" OR G$="f" PROCFILE 380 IF G$="H" OR G$="h" PROCHELP(0) 390 IF G$="U" OR G$="u" PROCUNDO 400 IF G$=CHR$127 PROCDELETE 410 IF INSTR("ABCFGHILOPQTU+abcfghlopqtu="+CHR$127,G$) GOTO260 ELSE GOTO240 420 DEF PROCBLOB(x,y,blob,p) 430 IF p=0 AND orient=1 MOVEx-1-blob,y-blob:PLOT102,x+1+blob,y+blob:PLOT70,x-1-blob,y-blob:PLOT70,x+1+blob,y-blob:PLOT70,x+1+blob,y+blob:PLOT70,x-1-blob,y+blob:PLOT70,x,y 440 IF p=1 AND orient=1 MOVEx-1-blob,y-blob:PLOT101,x+1+blob,y+blob:PLOT71,x-1-blob,y-blob:PLOT71,x+1+blob,y-blob:PLOT71,x+1+blob,y+blob:PLOT71,x-1-blob,y+blob:PLOT71,x,y 450 IF p=0 AND orient=2 MOVEx-blob,y-1-blob:PLOT102,x+blob,y+1+blob:PLOT70,x-blob,y-1-blob:PLOT70,x+blob,y-1-blob:PLOT70,x+blob,y+1+blob:PLOT70,x-blob,y+1+blob:PLOT70,x,y 460 IF p=1 AND orient=2 MOVEx-blob,y-1-blob:PLOT101,x+blob,y+1+blob:PLOT71,x-blob,y-1-blob:PLOT71,x+blob,y-1-blob:PLOT71,x+blob,y+1+blob:PLOT71,x-blob,y+1+blob:PLOT71,x,y 470 ENDPROC 480 DEF PROCALIGN(x,y) 490 IF num>180 AND warn=FALSE:PRINTTAB(0,0)SPC80TAB(0,0)"The program has limited memory available.":VDU7,7,7:warn=TRUE 500 IF num=201 PRINTTAB(0,0)"The program has run out of memory...You cannot add any more components.":VDU7,7,7:GOTO250 510 IF align=FALSE ENDPROC 520 MOVE56,y:PLOT6,477,y:MOVEx,2:PLOT6,x,116 530 ENDPROC 540 DEF PROCalign 550 VDU15:IF align=FALSE align=TRUE:PRINTTAB(4,14)"ON " ELSE align=FALSE:PRINTTAB(4,14)"OFF" 560 VDU14:G$="" 570 ENDPROC 580 DEF PROCorient 590 VDU15:IF orient=1 orient=2:PRINTTAB(4,12)"HORI" ELSE orient=1:PRINTTAB(4,12)"VERT" 600 VDU14:G$="" 610 ENDPROC 620 DEF PROCgrid 630 VDU15:IF xinc>1 AND yinc>1 xinc=1:yinc=1:PRINTTAB(4,10)"OFF" ELSE X=X-(X MOD 8):Y=Y-(Y MOD 6):xinc=8:yinc=6:PRINTTAB(4,10)"ON " 640 VDU14:G$="" 650 ENDPROC 660 DEF PROCbsize 670 VDU15 680 PRINTTAB(6,6)"-" 690 G$=INKEY$(50) 700 IF VAL(G$)>0 AND VAL(G$)<4 GOTO750 ELSE IF G$="H" PROCHELP(1) ELSE IF G$<>"" G$=STR$(blob):GOTO750 710 PRINTTAB(6,6);blob 720 G$=INKEY$(50) 730 IF VAL(G$)>0 AND VAL(G$)<4 GOTO750 ELSE IF G$="H" PROCHELP(1) ELSE IF G$<>"" G$=STR$(blob):GOTO750 740 GOTO680 750 blob=VAL(G$):PRINTTAB(6,6);blob:VDU14:MOVE43,73:PLOT103,51,79:dumo=orient:orient=1:PROCBLOB(47,76,blob,1):orient=dumo 760 ENDPROC 770 DEF PROClsize 780 VDU15 790 PRINTTAB(6,8)"-" 800 G$=INKEY$(50) 810 IF VAL(G$)>0 AND VAL(G$)<4 GOTO860 ELSE IF G$="H" PROCHELP(2) ELSE IF G$<>"" G$=STR$(line):GOTO860 820 PRINTTAB(6,8);line 830 G$=INKEY$(50) 840 IF VAL(G$)>0 AND VAL(G$)<4 GOTO860 ELSE IF G$="H" PROCHELP(2):IF G$<>"" G$=STR$(line):GOTO860 850 GOTO790 860 line=VAL(G$):PRINTTAB(6,8);line:VDU14:MOVE44,58:PLOT103,50,62 870 IF line=1 MOVE44,60:PLOT101,50,61 ELSE IF line=2 MOVE44,59:PLOT101,50,61 ELSE MOVE44,58:PLOT101,50,62 880 ENDPROC 890 DEF PROCUNDO 900 IF num=1 ENDPROC 910 MOVE22,86:PLOT6,50,114:MOVE50,86:PLOT6,22,114 920 num=num-1 930 PROCREDRAW:G=0:G$="" 940 MOVE22,86:PLOT6,50,114:MOVE50,86:PLOT6,22,114 950 ENDPROC 960 DEF PROCIC 970 MOVE20,84:PLOT101,52,116 980 dumo=orient:orient=1:FORI=90 TO 108 STEP 6:PROCBLOB(24,I,2,0):PROCBLOB(48,I,2,0):NEXT:orient=dumo 990 PRINTTAB(0,0)"INSERT DIL IC : Type in the number of pins and press ENTER :":INPUTTAB(61,0)pins:pins=pins DIV 2 1000 IF pins=0 G$="":ENDPROC 1010 PRINTTAB(5,3);pins*2 1020 PRINTTAB(0,0)SPC80TAB(0,0)"INSERT DIL IC : Position IC and press ENTER..." 1030 IF orient=1 FORI=Y TO Y+(6*pins)-6 STEP 6:PROCBLOB(X,I,blob,0)PROCBLOB(X+24,I,blob,0):NEXT:PROCALIGN(X,Y+(6*pins)-6) 1040 IF orient=2 FORI=X TO X+(8*pins)-8 STEP 8:PROCBLOB(I,Y,blob,0)PROCBLOB(I,Y+18,blob,0):NEXT:PROCALIGN(X+(8*pins)-8,Y+18) 1050 G=GET 1060 IF orient=1 FORI=Y TO Y+(6*pins)-6 STEP 6:PROCBLOB(X,I,blob,0)PROCBLOB(X+24,I,blob,0):NEXT:PROCALIGN(X,Y+(6*pins)-6) 1070 IF orient=2 FORI=X TO X+(8*pins)-8 STEP 8:PROCBLOB(I,Y,blob,0)PROCBLOB(I,Y+18,blob,0):NEXT:PROCALIGN(X+(8*pins)-8,Y+18) 1080 IF G=242 X=X-xinc 1090 IF G=243 X=X+xinc 1100 IF G=240 Y=Y+yinc 1110 IF G=241 Y=Y-yinc 1120 IF G=13 PROCdIC 1130 IF G=13 type(num)=1:xpos(num)=X:ypos(num)=Y:v1(num)=blob:v2(num)=pins:v3(num)=orient:num=num+1 1140 IF G=79 OR G=111 PROCorient 1150 IF G=66 OR G=98 PROCbsize 1160 IF G=65 OR G=97 PROCalign 1170 IF G=71 OR G=97 PROCgrid 1180 IF G=76 OR G=108 PROClsize 1190 IF G=85 OR G=117 PROCUNDO 1200 IF G=72 OR G=104 PROCHELP(3) 1210 IF INSTR("CFIPQT+cfipqt="+CHR$127,CHR$G) G$=CHR$G:ENDPROC 1220 GOTO1030 1230 DEF PROCdIC 1240 IF orient=1 FORI=Y TO Y+(6*pins)-6 STEP 6:PROCBLOB(X,I,blob,1):PROCBLOB(X+24,I,blob,1):NEXT 1250 IF orient=2 FORI=X TO X+(8*pins)-8 STEP 8:PROCBLOB(I,Y,blob,1):PROCBLOB(I,Y+18,blob,1):NEXT 1260 ENDPROC 1270 DEF PROCTRACK 1280 MOVE20,84:PLOT101,52,116:MOVE22,90:PLOT103,50,93:MOVE35,90:PLOT103,36,114 1290 PRINTTAB(0,0)SPC80TAB(0,0)"INSERT TRACK : Select start of track and press ENTER..." 1300 SS=FALSE 1310 PROCALIGN(X,Y):IF align=FALSE MOVEX,Y-3:PLOT6,X,Y+3:MOVEX-3,Y:PLOT6,X+3,Y 1320 IF SS=TRUE MOVEsx,sy:PLOT6,X,Y 1330 G=GET 1340 PROCALIGN(X,Y):IF align=FALSE MOVEX,Y-3:PLOT6,X,Y+3:MOVEX-3,Y:PLOT6,X+3,Y 1350 IF SS=TRUE MOVEsx,sy:PLOT6,X,Y 1360 IF G=242 X=X-xinc 1370 IF G=243 X=X+xinc 1380 IF G=240 Y=Y+yinc 1390 IF G=241 Y=Y-yinc 1400 IF G=13 AND SS=FALSE SS=TRUE:sx=X:sy=Y:PRINTTAB(0,0)SPC80TAB(0,0)"INSERT TRACK : Select end of track and press ENTER...":GOTO1310 1410 IF G=13 AND SS=TRUE PROCdTRACK:type(num)=2:xpos(num)=sx:ypos(num)=sy:v1(num)=X:v2(num)=Y:v3(num)=line:num=num+1:GOTO1290 1420 IF G=76 OR G=108 PROClsize 1430 IF G=65 OR G=97 PROCalign 1440 IF G=71 OR G=97 PROCgrid 1450 IF G=79 OR G=111 PROCorient 1460 IF G=66 OR G=98 PROCbsize 1470 IF G=72 OR G=104 PROCHELP(4) 1480 IF G=85 OR G=117 PROCUNDO 1490 IF INSTR("CFIPQT+cfipqt="+CHR$127,CHR$G) G$=CHR$G:ENDPROC 1500 GOTO1310 1510 DEF PROCdTRACK 1520 IF X>sx dx=X-sx 1530 IF Xsy dy=Y-sy 1560 IF Y45 OR tan=dy GOTO1680 1620 IF line=1 AND X>sx FORI=0 TO 1:MOVEX+1,Y+I:DRAWsx,sy+I:NEXT:GOTO1740 1630 IF line=1 AND Xsx FORI=-1 TO 1:MOVEX+1,Y+I:DRAWsx-1,sy+I:NEXT:GOTO1740 1650 IF line=2 AND Xsx FORI=-2 TO 2:MOVEX+2,Y+I:DRAWsx-2,sy+I:NEXT:GOTO1740 1670 IF line=3 AND Xsy FORI=0 TO 1:MOVEX+I,Y+1:DRAWsx+I,sy:NEXT 1690 IF line=1 AND Ysy FORI=-1 TO 1:MOVEX+I,Y+1:DRAWsx+I,sy-1:NEXT 1710 IF line=2 AND Ysy FORI=-2 TO 2:MOVEX+I,Y+2:DRAWsx+I,sy-2:NEXT 1730 IF line=3 AND Y99 PROCBLOB(X,Y,blob,0):IF add1>0 AND add1<>99 PROCBLOB(X,Y+add1,blob,0) 1890 IF orient=2 AND add2<>99 PROCBLOB(X,Y,blob,0):IF add2>0 AND add2<>99 PROCBLOB(X+add2,Y,blob,0) 1900 IF orient=1 AND add1=99 PROCBLOB(X,Y,blob,0):PROCBLOB(X+16,Y,blob,0):PROCBLOB(X+8,Y+30,blob,0) 1910 IF orient=2 AND add2=99 PROCBLOB(X,Y,blob,0):PROCBLOB(X,Y+12,blob,0):PROCBLOB(X+40,Y+6,blob,0) 1920 PROCALIGN(X,Y) 1930 G=GET 1940 IF orient=1 AND add1<>99 PROCBLOB(X,Y,blob,0):IF add1>0 AND add1<>99 PROCBLOB(X,Y+add1,blob,0) 1950 IF orient=2 AND add2<>99 PROCBLOB(X,Y,blob,0):IF add2>0 AND add2<>99 PROCBLOB(X+add2,Y,blob,0) 1960 IF orient=1 AND add1=99 PROCBLOB(X,Y,blob,0):PROCBLOB(X+16,Y,blob,0):PROCBLOB(X+8,Y+30,blob,0) 1970 IF orient=2 AND add2=99 PROCBLOB(X,Y,blob,0):PROCBLOB(X,Y+12,blob,0):PROCBLOB(X+40,Y+6,blob,0) 1980 PROCALIGN(X,Y) 1990 IF G=242 X=X-xinc 2000 IF G=243 X=X+xinc 2010 IF G=240 Y=Y+yinc 2020 IF G=241 Y=Y-yinc 2030 IF G=13 AND orient=1 PROCdCOMP:type(num)=3:xpos(num)=X:ypos(num)=Y:v1(num)=add1:v2(num)=blob:v3(num)=orient:num=num+1 2040 IF G=13 AND orient=2 PROCdCOMP:type(num)=3:xpos(num)=X:ypos(num)=Y:v1(num)=add2:v2(num)=blob:v3(num)=orient:num=num+1 2050 IF G=79 OR G=111 PROCorient 2060 IF G=66 OR G=98 PROCbsize 2070 IF G=76 OR G=108 PROClsize 2080 IF G=65 OR G=97 PROCalign 2090 IF G=71 OR G=97 PROCgrid 2100 IF G=85 OR G=117 PROCUNDO 2110 IF G=72 OR G=104 PROCHELP(5) 2120 IF INSTR("CFIPQT+cfipqt="+CHR$127,CHR$G) G$=CHR$G:ENDPROC 2130 GOTO1880 2140 DEF PROCdCOMP 2150 IF orient=1 AND add1<>99 PROCBLOB(X,Y,blob,1):IF add1>0 AND add1<>99 PROCBLOB(X,Y+add1,blob,1) 2160 IF orient=2 AND add2<>99 PROCBLOB(X,Y,blob,1):IF add2>0 AND add2<>99 PROCBLOB(X+add2,Y,blob,1) 2170 IF orient=1 AND add1=99 PROCBLOB(X,Y,blob,1):PROCBLOB(X+16,Y,blob,1):PROCBLOB(X+8,Y+30,blob,1) 2180 IF orient=2 AND add2=99 PROCBLOB(X,Y,blob,1):PROCBLOB(X,Y+12,blob,1):PROCBLOB(X+40,Y+6,blob,1) 2190 ENDPROC 2200 DEF PROCDELETE 2210 MOVE20,84:PLOT101,52,116:MOVE22,86:PLOT7,50,114:MOVE50,86:PLOT7,22,114 2220 PRINTTAB(0,0)SPC80TAB(0,0)"DELETION SQUARE : Press DELETE to delete..." 2230 MOVEX-4,Y-3:PLOT6,X+4,Y-3:PLOT6,X+4,Y+3:PLOT6,X-4,Y+3:PLOT6,X-4,Y-3 2240 G=GET 2250 MOVEX-4,Y-3:PLOT6,X+4,Y-3:PLOT6,X+4,Y+3:PLOT6,X-4,Y+3:PLOT6,X-4,Y-3 2260 IF G=242 X=X-xinc 2270 IF G=243 X=X+xinc 2280 IF G=240 Y=Y+yinc 2290 IF G=241 Y=Y-yinc 2300 IF G=127 PROCdDEL:type(num)=4:xpos(num)=X:ypos(num)=Y:num=num+1 2310 IF G=72 OR G=104 PROCHELP(6) 2320 IF INSTR("ABCFGILOPQTU+abcfgilopqtu="+CHR$127,CHR$G) G$=CHR$G:ENDPROC 2330 GOTO2230 2340 DEF PROCdDEL 2350 MOVEX-4,Y-3:PLOT103,X+4,Y+3 2360 ENDPROC 2370 DEF PROCPRINT 2380 PRINTTAB(0,0)SPC80TAB(0,0)"PRINTING : Press P to commence printing...":G$=GET$ 2390 IF G$="H" OR G$="h" PROCHELP(7):GOTO2380 2400 IF G$<>"P" AND G$<>"p" G$="":ENDPROC 2410 PRINTTAB(0,0)SPC80TAB(0,0)"PRINTING : Please wait..." 2420 MOVE55,0:PLOT7,479,0:PLOT7,479,118:PLOT7,55,118:PLOT7,55,0 2430 VDU2 2440 FORy=112 TO 0 STEP -8 2450 VDU3:PRINTTAB(0,0)"Scanning image...":VDU2 2460 FORx=55 TO 478 2470 F=1:B=0 2480 FORI=0 TO 7 2490 B=B+F*POINT(x,y+I) 2500 F=F+F 2510 NEXT 2520 byte(x-54)=B 2530 NEXT 2540 FORJ=1 TO 3 2550 VDU3:PRINTTAB(0,0)"Printing image...":VDU2 2560 VDU1,27,1,42,1,4,1,167,1,1 2570 FORL=1 TO 423 2580 VDU1,byte(L) 2590 NEXT 2600 VDU1,27,1,43,1,1,1,10 2610 NEXT 2620 VDU1,27,1,43,1,47,1,10 2630 NEXT 2640 VDU3 2650 G$="":VDU7,7,7:ENDPROC 2660 DEF PROCPLUS 2670 PRINTTAB(0,0)SPC80TAB(0,0)"INSERT POSITIVE SIGN : Position sign and press ENTER..." 2680 MOVEX,Y-2:PLOT6,X,Y+2:MOVEX-2,Y:PLOT6,X+2,Y 2690 PROCALIGN(X,Y) 2700 G=GET 2710 MOVEX,Y-2:PLOT6,X,Y+2:MOVEX-2,Y:PLOT6,X+2,Y 2720 PROCALIGN(X,Y) 2730 IF G=240 Y=Y+yinc 2740 IF G=241 Y=Y-yinc 2750 IF G=242 X=X-xinc 2760 IF G=243 X=X+xinc 2770 IF G=13 type(num)=5:xpos(num)=X:ypos(num)=Y:num=num+1:PROCdPLUS 2780 IF G=71 OR G=103 PROCgrid 2790 IF G=65 OR G=97 PROCalign 2800 IF G=66 OR G=98 PROCbsize 2810 IF G=76 OR G=108 PROClsize 2820 IF G=79 OR G=111 PROCorient 2830 IF G=85 OR G=117 PROCUNDO 2840 IF G=72 OR G=104 PROCHELP(8) 2850 IF INSTR("CFIPQT+cfipqt="+CHR$127,CHR$G) G$=CHR$G:ENDPROC 2860 GOTO2680 2870 ENDPROC 2880 DEF PROCdPLUS 2890 MOVEX,Y-2:DRAWX,Y+2:MOVEX-2,Y:DRAWX+2,Y 2900 ENDPROC 2910 DEF PROCFILE 2920 MOVE20,84:PLOT101,52,116 2930 PRINTTAB(0,0)SPC80TAB(0,0)"FILE MENU : Press S to save or L to load..." 2940 REPEAT:G$=GET$:UNTILINSTR("SsLsHh"+CHR$13,G$) 2950 IF G$=CHR$13 G$="":ENDPROC 2960 IF G$="H" OR G$="h" PROCHELP(9):GOTO2940 2970 IF G$="S" OR G$="s" PROCSAVE:G$="":ENDPROC 2980 IF G$="L" OR G$="l" PROCLOAD:G$="":ENDPROC 2990 DEF PROCSAVE 3000 PRINTTAB(0,0)SPC80TAB(0,0)"SAVE PCB : Please type in your filename :":INPUTTAB(42,0)f$ 3010 PRINTTAB(0,0)SPC80TAB(0,0)"SAVE PCB : Please wait..." 3020 K=OPENOUT(f$) 3030 PRINT#K,num-1 3040 FORI=1 TO num-1 3050 PRINT#K,type(I),xpos(I),ypos(I),v1(I),v2(I),v3(I) 3060 NEXT 3070 CLOSE#0 3080 ENDPROC 3090 DEF PROCLOAD 3100 PRINTTAB(0,0)SPC80TAB(0,0)"LOAD PCB : Please type in your filename :":INPUTTAB(42,0)f$ 3110 PRINTTAB(0,0)SPC80TAB(0,0)"LOAD PCB : Please wait..." 3120 K=OPENIN(f$) 3130 INPUT#K,num 3140 FORJ=1 TO num 3150 INPUT#K,type(J),xpos(J),ypos(J),v1(J),v2(J),v3(J) 3160 NEXT 3170 num=num+1 3180 CLOSE#0 3190 PROCREDRAW 3200 ENDPROC 3210 DEF PROCREDRAW 3220 MOVE55,1:PLOT103,478,117:dumx=X:dumy=Y:dumo=orient:dumb=blob:duml=line 3230 IF num=1 ENDPROC 3240 FOR J=1 TO num-1 3250 IF type(J)=1 X=xpos(J):Y=ypos(J):blob=v1(J):pins=v2(J):orient=v3(J):PROCdIC 3260 IF type(J)=2 sx=xpos(J):sy=ypos(J):X=v1(J):Y=v2(J):line=v3(J):PROCdTRACK 3270 IF type(J)=3 AND v3(J)=1 X=xpos(J):Y=ypos(J):add1=v1(J):add2=0:blob=v2(J):orient=v3(J):PROCdCOMP 3280 IF type(J)=3 AND v3(J)=2 X=xpos(J):Y=ypos(J):add2=v1(J):add1=0:blob=v2(J):orient=v3(J):PROCdCOMP 3290 IF type(J)=4 X=xpos(J):Y=ypos(J):PROCdDEL 3300 IF type(J)=5 X=xpos(J):Y=ypos(J):PROCdPLUS 3310 NEXT 3320 X=dumx:Y=dumy:orient=dumo:blob=dumb:line=duml 3330 ENDPROC 3340 DEF PROCHELP(H) 3350 MOVE55,1:PLOT103,478,117 3360 PRINTTAB(26,2)CHR$15CHR$17"PCB"TAB(27,3)"A"TAB(27,4)"D"CHR$18 3370 RESTORE 3380 IF H=0 PRINTTAB(32,3)"List of help topics"TAB(32,4)"-------------------" 3390 IF H=0 PRINTTAB(13,14)"Press the key of your choice, or ENTER to return..." 3400 IF H=0 PRINTTAB(13,6)"I ---- Insert IC"TAB(13,7)"C ---- Insert component"TAB(13,8)"T ---- Insert track"TAB(13,9)"+ ---- Insert + sign"TAB(13,10)"DEL -- Delete"TAB(13,11)"A ---- Align feature" 3410 IF H=0 PRINTTAB(43,6)"G ---- Snap to grid of 0.1";CHR$34 TAB(43,7)"B ---- Change blob size"TAB(43,8)"L ---- Change line size"TAB(43,9)"O ---- Change component orientation"TAB(43,10)"P ---- Print"TAB(43,11)"F ---- File menu"TAB(43,12)"U ---- Undo" 3420 IF H=0 G$=GET$ 3430 IF H=0 AND INSTR("BLITC"+CHR$127+"P+FGAOU",G$)>0 H=INSTR("BLITC"+CHR$127+"P+FGAOU",G$):GOTO3350 3440 IF H=0 AND INSTR("blitc"+CHR$127+"p=fgaou",G$)>0 H=INSTR("blitc"+CHR$127+"p=fgaou",G$):GOTO3350 3450 IF H=0 AND G$=CHR$13 GOTO3550 3460 IF H=0 GOTO3420 3470 FORI=1 TO H 3480 READtitle$,line1$,line2$,line3$ 3490 NEXT 3500 PRINTTAB(32,3)title$ TAB(32,4)STRING$(LEN(title$),"-") 3510 PRINTTAB(11,7)line1$ TAB(11,8)line2$ TAB(11,9)line3$ 3520 PRINTTAB(11,12)"Press L for a list of topics, or press ENTER to return..." 3530 REPEAT:G=GET:UNTILG=13 OR G=76 OR G=108 3540 IF G=76 OR G=108 H=0:GOTO3350 3550 PROCREDRAW:VDU14:G=0:G$="" 3560 ENDPROC 3570 DATA"Change blob size","B,1,2,3 -- Press B and 1,2 or 3. 1 is the smallest blob,"," 3 is the largest. The selected size is shown as a "," number and as a picture by the line icon." 3580 DATA"Change line size","L,1,2,3 -- Press L and 1,2 or 3. 1 is the smallest line,"," 3 is the largest. The selected size is shown as a "," number and as a picture by the line icon." 3590 DATA"Insert IC","I,pins,ENTER -- Press I and enter the number of pins on the chip,"," then press ENTER. Move the chip to where you want"," it and press ENTER." 3600 DATA"Insert track","T,ENTER,ENTER -- Press T and press ENTER on the start of the line."," Then press ENTER at the end of the line.","" 3610 DATA"Insert component","C,spaces/P,ENTER -- Press C and the number of spaces"," between blobs, or P for a preset."," Position component and press ENTER." 3620 DATA"Deletion square","DEL,DEL -- When DEL is pressed the sqaure under the cursor is"," deleted.","" 3630 DATA"Printing","P,P -- Press P to commence printing. Computer will beep when"," printing is finished.","" 3640 DATA"Insert positive sign","+,ENTER -- Press +, position sign and press ENTER.","","" 3650 DATA"File menu - saving & loading","F,S/L,filename,ENTER -- Press F, and then S to save PCB,"," or L to load PCB. Then type in the"," filename and press ENTER." 3660 DATA"Snap to grid","G -- When ON components are fitted to a 0.1inch grid."'" When OFF components can be inserted precisely.","" 3670 DATA"Align feature","A -- When ON two lines track the component so that it can be"," aligned.","" 3680 DATA"Change orientation","O -- When shown as HORI, components are inserted horizontally."," When shown as VERT, components are inserted vertically.","" 3690 DATA"Undo command","U -- Deletes the last component/track you put on the PCB,"'" and can even un-delete deletions!",""