10 REM ****************** 20 REM Card Compiler 30 REM By Timothy Surtell 40 REM ****************** 50 REM NC200 Version 3.5 (Condensed) 60 REM Downloaded from Tim's NC Users' Site 70 REM http://www.ncus.org.uk 80 F$=" ":P=0:PL=65:EJECT=TRUE:SPACE=1 90 ONERRORVDU15:CLOSE#0:PROCIERROR:OSCLI("QUIT") 100 CLS:PROCBOX(20,6,60,8):PRINTTAB(21,8)"Please wait...Loading printer setup" 110 DIMID(30),L$(30),s(30,16),d(30,16),S1(30),S2(30),STY$(16),NON1(16),NON2(16),NON3(16),NOF1(16),NOF2(16),NOF3(16),IN$(40) 120 FORI=1 TO 30:S1(I)=35:S2(I)=0:NEXT 130 K=OPENIN("PRINTER.CCP") 140 INPUT#K,P$,NS 150 FORI=1 TO 16:INPUT#K,STY$(I),NON1(I),NON2(I),NON3(I),NOF1(I),NOF2(I),NOF3(I):NEXT 160 CLOSE#0 170 ONERRORVDU15:PROCQUIT:GOTO170 180 PROCHEADER("Main Menu") 190 PROCBOX(0,8,26,14):PROCBOX(53,8,79,14):PROCBOX(0,1,26,7):PROCBOX(27,1,52,7):PROCBOX(53,1,79,7) 200 MOVE206,94DRAW268,94DRAW247,115DRAW206,94 210 PRINTTAB(36,2)CHR$17"C"CHR$18"ard"TAB(36,3)CHR$17"C"CHR$18"ompiler"TAB(28,5)"Business Card Program."TAB(28,6)"NC200 Version 3.5"TAB(28,7)"Programmed By T.Surtell." 220 IFF$<>" "PRINTTAB(28,10)"Press RED, GREEN, BLUE,"TAB(28,11)"or WHITE to continue,"TAB(28,12)"or press "CHR$17"Stop"CHR$18" to exit..." 230 IFF$=" "PRINTTAB(28,10)"Press RED or BLUE to"TAB(28,11)"continue, or press "CHR$17"Stop "CHR$18TAB(28,12)"to exit..." 240 PRINTTAB(10,3)"To "CHR$17"Edit"CHR$18TAB(4,4)"Your Business Cards"TAB(8,5)"Press RED." 250 IFF$<>" "PRINTTAB(62,3)"To "CHR$17"Print"CHR$18TAB(57,4)"Your Business Cards"TAB(60,5)"Press GREEN." 260 IFF$=" "PRINTTAB(62,2)"To "CHR$17"Print"CHR$18TAB(57,3)"Your Business Cards"TAB(60,4)"Press GREEN."TAB(57,6)"No cards to print!":PROCBORD(56,8,76,10) 270 PRINTTAB(7,10)"To "CHR$17"Save/Load"CHR$18TAB(4,11)"Your Business Cards"TAB(8,12)"Press BLUE." 280 IFF$<>" "PRINTTAB(63,10)"To "CHR$17"View"CHR$18TAB(57,11)"Your Business Cards"TAB(60,12)"Press WHITE." 290 IFF$=" "PRINTTAB(63,9)"To "CHR$17"View"CHR$18TAB(57,10)"Your Business Cards"TAB(60,11)"Press WHITE."TAB(57,13)"No cards to view!":PROCBORD(56,1,76,3) 300 IFP$="***No Printer***"PRINTTAB(5,15)"***There is no printer setup- press S to get to the setup menu...***"; 310 G=INKEY(10) 320 PROCTIME 330 IFG=242PROCEDITING:GOTO170 340 IFG=243ANDF$<>" "PROCPRINT:GOTO170 350 IFG=243ANDF$=" "VDU7 360 IFG=241PROCFILE:GOTO170 370 IFG=240ANDF$<>" "PROCVIEW:GOTO170 380 IFG=240ANDF$=" "VDU7 390 IFG=83ANDP$="***No Printer***"PROCSETUP:GOTO170 400 IFG=222PROCPASS:GOTO170 410 GOTO310 420 END 430 DEF PROCHEADER(H$) 440 CLS:VDU14:PRINTSPC80TAB(0,0)"NC200 Card Compiler ";CHR$186;" ";H$TAB(41,0);CHR$186;" File in memory : "; 450 IFF$=" "PRINT;"**None**"ELSEPRINT;F$ 460 PRINTTAB(69,0)CHR$186 470 VDU15 480 ENDPROC 490 DEF PROCBOX(X1,Y1,X2,Y2) 500 X1=(X1+1)*6-3:X2=(X2+1)*6-3:Y1=Y1*8+4:Y2=Y2*8+4 510 MOVEX1-3,Y1-6:PLOT103,X2+3,Y2+3 520 MOVEX1,Y1:DRAWX2,Y1:DRAWX2,Y2:DRAWX1,Y2:DRAWX1,Y1 530 MOVEX1+1,Y1-1:DRAWX2+1,Y1-1:DRAWX2+1,Y2-1 540 MOVEX1+2,Y1-2:PLOT21,X2+2,Y1-2:PLOT21,X2+2,Y2-2 550 ENDPROC 560 DEF PROCBORD(X1,Y1,X2,Y2) 570 X1=(X1+1)*6-3:X2=(X2+1)*6-3:Y1=Y1*8+4:Y2=Y2*8+4 580 MOVEX1,Y1+2:DRAWX2,Y1+2:DRAWX2,Y2-2:DRAWX1,Y2-2:DRAWX1,Y1+2 590 ENDPROC 600 DEF PROCTIME 610 VDU14:PRINTTAB(72,0)RIGHT$(TIME$,8):VDU15 620 ENDPROC 630 DEF PROCTEXT1 640 N=8 650 FORI=S TO S+5 660 IFID(I)=0PRINTTAB(2,N)SPC35 670 IFID(I)=1PRINTTAB(2,N)SPC35TAB(2,N)L$(I) 680 IFID(I)=2PRINTTAB(2,N)SPC35TAB(2,N)CHR$17"***Logo***"CHR$18 690 N=N+1 700 NEXT 710 ENDPROC 720 DEF PROCTEXT2 730 N=10 740 FORI=S TO S+3 750 IFd(L,I)=1VDU17:PRINTTAB(2,N)SPC35TAB(2,N)STY$(I):VDU18 ELSE PRINTTAB(2,N)SPC35TAB(2,N)STY$(I) 760 N=N+1 770 NEXT 780 ENDPROC 790 DEF PROCTEXT3 800 N=12 810 FORI=S TO S+1 820 PRINTTAB(3,N)SPC34TAB(3,N)STY$(I) 830 N=N+1 840 NEXT 850 PRINTTAB(44,12)SPC30TAB(44,12)"On Numbers : ";NON1(S+(Y-12));",";NON2(S+(Y-12));",";NON3(S+(Y-12)) 860 PRINTTAB(43,13)SPC31TAB(43,13)"Off Numbers : ";NOF1(S+(Y-12));",";NOF2(S+(Y-12));",";NOF3(S+(Y-12)) 870 ENDPROC 880 DEF PROCTEXT4 890 N=7 900 FORI=S TO S+6 910 IFI=0PRINTTAB(2,N)CHR$218;STRING$(35,CHR$196);CHR$191:GOTO960 920 IFI=NUM+1PRINTTAB(2,N)CHR$192;STRING$(35,CHR$196);CHR$217:GOTO960 930 IFI1ANDIN$(XX)=""PRINTTAB(X+XX,Y)CHR$176:XX=XX-1:VDU14:PRINTTAB(XX+X,Y)IN$(XX):VDU15:GOTO1020 1070 IFG=242ANDXX>1ANDIN$(XX)<>""PRINTTAB(X+XX,Y)IN$(XX):XX=XX-1:VDU14:PRINTTAB(XX+X,Y)IN$(XX):VDU15:GOTO1020 1080 IFG=243ANDIN$(XX+1)=""ANDIN$(XX)<>""ANDXX""ANDXX""ORI=1 1160 IFI=LIM ENDPROC 1170 FORZ=I TO XX STEP -1:IN$(Z+1)=IN$(Z):NEXT 1180 IN$(XX)=CHR$G 1190 IFP=0ORP=2FORZ=XX TO I+1:PRINTTAB(X+Z,Y)IN$(Z):NEXTELSEIFP=1FORZ=XX TO I+1:PRINTTAB(X+Z,Y)"*":NEXT 1200 XX=XX+1:IFIN$(XX)=""VDU14:PRINTTAB(X+XX,Y)CHR$176:VDU15ELSEVDU14:PRINTTAB(X+XX,Y)IN$(XX):VDU15 1210 ENDPROC 1220 DEF PROCDEL 1230 I=LIM+1:REPEAT:I=I-1:UNTILIN$(I)<>""ORI=1 1240 IFXX=1ENDPROC 1250 IFIN$(XX)=""PRINTTAB(X+XX,Y)CHR$176 1260 XX=XX-1 1270 FORZ=XX TO I:IN$(Z)=IN$(Z+1):NEXT 1280 IN$(I)="" 1290 FORZ=XX TO I:PRINTTAB(X+Z,Y)IN$(Z):NEXT 1300 PRINTTAB(X+I,Y)CHR$176 1310 IFIN$(XX)=""VDU14:PRINTTAB(X+XX,Y)CHR$176:VDU15ELSEVDU14:PRINTTAB(X+XX,Y)IN$(XX):VDU15 1320 ENDPROC 1330 DEF PROCVAR 1340 I=LIM+1:REPEAT:I=I-1:UNTILIN$(I)<>""ORI=1 1350 IFP=2VAR$="" 1360 FORZ=1 TO I:VAR$=VAR$+IN$(Z):NEXT 1370 IFIN$(XX)=""PRINTTAB(X+XX,Y)CHR$176ELSEPRINTTAB(X+XX,Y)IN$(XX) 1380 ENDPROC 1390 DEF PROCEDITING 1400 ONERRORVDU15:GOTO170 1410 PROCHEADER("Edit Cards") 1420 PROCBOX(0,11,79,14):PROCBOX(0,0,39,10):PROCBORD(1,1,37,8):PROCBOX(42,5,79,10):PROCBORD(43,7,54,9):PROCBORD(55,7,66,9):PROCBORD(67,7,78,9):PROCBOX(42,0,79,4) 1430 PRINTTAB(2,2)"Use ";:VDU27,24,27,25:PRINT" to select line, ";:VDU27,27,27,26:PRINT" to select command. Press L to edit a logo or J for"TAB(2,3)"justification. Press ";CHR$255;" to continue or "CHR$17"Stop"CHR$18" to exit." 1440 PRINTTAB(47,7)"Edit"TAB(56,7)"Add Before"TAB(70,7)"Delete" 1450 NUM=31:REPEAT:NUM=NUM-1:UNTILID(NUM)<>0 OR NUM=0:PRINTTAB(58,12)CHR$19"Status"CHR$20TAB(44,13)CHR$17"No. of lines : "CHR$18;NUM:G=0:FORI=1 TO 30:G=G+LEN(L$(I)):NEXT:PRINTTAB(44,14)CHR$17"No. of characters : "CHR$18;G 1460 S=1:X=49:Y=8 1470 PRINTTAB(38,Y);:VDU27,27:PRINTTAB(X,9);:VDU27,24:PRINTTAB(2,6)CHR$17"Current line : "CHR$18;S+(Y-8);" " 1480 PROCTEXT1 1490 G=INKEY(10) 1500 PROCTIME 1510 IFG=240ANDS>1ANDY=8S=S-1:PROCTEXT1 1520 IFG=241ANDS+5<30ANDY=13S=S+1:PROCTEXT1 1530 IFG=240ANDY>8PRINTTAB(38,Y);" ":Y=Y-1:PRINTTAB(38,Y);:VDU27,27 1540 IFG=241ANDY<13PRINTTAB(38,Y);" ":Y=Y+1:PRINTTAB(38,Y);:VDU27,27 1550 IFG=240ORG=241PRINTTAB(2,6)CHR$17"Current line : "CHR$18;S+(Y-8);" " 1560 IFG=242ANDX>49PRINTTAB(X,9);" ":X=X-12:PRINTTAB(X,9);:VDU27,24 1570 IFG=243ANDX<73PRINTTAB(X,9);" ":X=X+12:PRINTTAB(X,9);:VDU27,24 1580 IFG=13ANDX=49PROCEDIT:GOTO1400 1590 IFG=13ANDX=61PROCADD:GOTO1400 1600 IFG=13ANDX=73PROCDELETE:GOTO1400 1610 IFG=76ANDID(S+(Y-8))=2PROCELOGO:GOTO1400 1620 IFG=74PROCJUST:GOTO1400 1630 GOTO1490 1640 DEF PROCEDIT 1650 L=S+(Y-8) 1660 ONERRORVDU15:GOTO1400 1670 PROCHEADER("Edit Line") 1680 IF ID(L)=1 GOTO1750 ELSE IF ID(L)=2 PROCLOGO:GOTO1950 1690 PROCBOX(0,12,79,14):PRINTTAB(2,2)"Do you want text or a logo on line ";L;" ? Press T or L..." 1700 G$=INKEY$(1) 1710 PROCTIME 1720 IF G$="T" GOTO1750 1730 IF G$="L" PROCLOGO:GOTO1950 1740 GOTO1700 1750 PROCBOX(0,12,79,14):PROCBOX(0,9,79,11) 1760 IF L$(L)="" PRINTTAB(2,2)"Line ";L;" is empty." ELSE PRINTTAB(2,2)"Line ";L;" reads '";L$(L);"'." 1770 PRINTTAB(2,5)"Please type in the new line ";L;" : " 1780 VAR$=L$(L):P=2:PROCINPUT(35,5,35):P=0 1790 PROCBOX(0,0,40,8):PROCBOX(42,0,79,8):PROCBORD(1,1,38,6) 1800 PRINTTAB(2,8)"List of styles and fonts :"TAB(44,10)"Use ";:VDU27,24,27,25:PRINT" to move, SPACEBAR to select,"TAB(44,11)CHR$255" to finish, or press "CHR$17"Stop "CHR$18TAB(44,12)"to exit..." 1810 S=1:Y=10 1820 PRINTTAB(39,Y);:VDU27,27 1830 FORI=1 TO 9:d(L,I)=s(L,I):NEXT 1840 PROCTEXT2 1850 G=INKEY(10) 1860 PROCTIME 1870 IF G=240 AND S>1 AND Y=10 S=S-1:PROCTEXT2 1880 IFG=241ANDS+310PRINTTAB(39,Y);" ":Y=Y-1:PRINTTAB(39,Y);:VDU27,27 1900 IFG=241ANDY<13PRINTTAB(39,Y);" ":Y=Y+1:PRINTTAB(39,Y);:VDU27,27 1910 IFG=32ANDd(L,S+(Y-10))=0 d(L,S+(Y-10))=1:PROCTEXT2:G=0 1920 IFG=32ANDd(L,S+(Y-10))=1 d(L,S+(Y-10))=0:PROCTEXT2:G=0 1930 IFG=13logo=FALSE:GOTO1950 1940 GOTO1850 1950 IFF$=" "F$="Untitled" 1960 IFlogo=FALSE ID(L)=1:L$(L)=VAR$:S1(L)=((35-LEN(L$(L)))DIV2):S2(L)=(35-(S1(L)+LEN(L$(L)))) 1970 IFlogo=TRUE AND(ID(L)=1 OR ID(L)=0) ID(L)=2:L$(L)=STRING$(N*6,CHR$(0)):S1(L)=((35-N)DIV2):S2(L)=(35-(S1(L)+N)) 1980 IFlogo=TRUE ANDID(L)=2ANDS1(L)+S2(L)N S1(L)=((35-N)DIV2):S2(L)=(35-(S1(L)+N)):L$(L)=L$(L)+LEFT$(L$(L),N*6) 2000 FORI=1 TO NS 2010 s(L,I)=d(L,I) 2020 NEXT 2030 ENDPROC 2040 DEF PROCADD 2050 L=S+(Y-8) 2060 ONERRORVDU15:GOTO1400 2070 PROCHEADER("Add Line Before") 2080 IFL$(30)<>""PROCBOX(1,6,78,9):PRINTTAB(2,7)"Sorry, there will be too many lines if one more is added."TAB(2,8)"Press "CHR$17"Stop "CHR$18"to exit...":G=GET:ENDPROC 2090 PROCBOX(0,12,79,14):PRINTTAB(2,2)"Do you want text or a logo on the new line ";L;" ? Press T or L..." 2100 G$=INKEY$(1) 2110 PROCTIME 2120 IFG$="T"GOTO2150 2130 IFG$="L"PROCLOGO:GOTO2350 2140 GOTO2100 2150 PROCBOX(0,12,79,14):PROCBOX(0,9,79,11) 2160 PRINTTAB(2,2)"This will be the new line ";L;"." 2170 PRINTTAB(2,5)"Please type in the new line ";L;" : " 2180 PROCINPUT(35,5,35) 2190 PROCBOX(0,0,40,8):PROCBOX(42,0,79,8):PROCBORD(1,1,38,6) 2200 PRINTTAB(2,8)"List of styles and fonts : "TAB(44,10)"Use ";:VDU27,24,27,25:PRINT" to move, SPACEBAR to select,"TAB(44,11)CHR$255" to finish, or press "CHR$17"Stop "CHR$18TAB(44,12)"to exit..." 2210 S=1:Y=10 2220 FORI=1 TO NS:d(L,I)=0:NEXT 2230 PRINTTAB(39,Y);:VDU27,27 2240 PROCTEXT2 2250 G=INKEY(10) 2260 PROCTIME 2270 IFG=240ANDS>1ANDY>1ANDY=10S=S-1:PROCTEXT2 2280 IFG=241ANDS+310PRINTTAB(39,Y);" ":Y=Y-1:PRINTTAB(39,Y);:VDU27,27 2300 IFG=241ANDY<13PRINTTAB(39,Y);" ":Y=Y+1:PRINTTAB(39,Y);:VDU27,27 2310 IFG=32ANDd(L,S+(Y-10))=0d(L,S+(Y-10))=1:PROCTEXT2:G=0 2320 IFG=32ANDd(L,S+(Y-10))=1d(L,S+(Y-10))=0:PROCTEXT2:G=0 2330 IFG=13logo=FALSE:GOTO2350 2340 GOTO2250 2350 IFF$=" "F$="Untitled" 2360 PROCBOX(15,3,65,5):PRINTTAB(17,11)"Please wait...Re-arranging lines..." 2370 FORI=29 TO L STEP -1 2380 ID(I+1)=ID(I):L$(I+1)=L$(I):S1(I+1)=S1(I):S2(I+1)=S2(I) 2390 FORA=1 TO NS:s(I+1,A)=s(I,A):NEXT 2400 NEXT 2410 IFlogo=FALSE ID(L)=1:L$(L)=VAR$:S1(L)=((35-LEN(L$(L)))DIV2):S2(L)=(35-(S1(L)+LEN(L$(L)))) 2420 IFlogo=TRUE ID(L)=2:L$(L)=STRING$(N*6,CHR$(0)):S1(L)=((35-N)DIV2):S2(L)=(35-(S1(L)+N)) 2430 FORI=1 TO NS 2440 s(L,I)=d(L,I) 2450 NEXT 2460 ENDPROC 2470 DEF PROCDELETE 2480 L=S+(Y-8) 2490 ONERRORVDU15:GOTO1400 2500 PROCHEADER("Delete Line") 2510 PROCBOX(0,11,79,14) 2520 IFID(L)=1PRINTTAB(1,2)"Line ";L;" reads '";L$(L);"'."TAB(1,3)"ARE YOU SURE THAT YOU WANT TO DELETE LINE ";L;" ? Press Y or N..." 2530 IFID(L)=2PRINTTAB(1,2)"Line ";L;" is a logo."TAB(1,3)"ARE YOU SURE THAT YOU WANT TO DELETE LINE ";L;" ? Press Y or N..." 2540 IFID(L)=0PRINTTAB(1,2)"Line ";L;" is empty."TAB(1,3)"ARE YOU SURE THAT YOU WANT TO DELETE LINE ";L;" ? Press Y or N..." 2550 G$=INKEY$(1) 2560 PROCTIME 2570 IFG$="Y"GOTO2600 2580 IFG$="N"ENDPROC 2590 GOTO2550 2600 PROCBOX(15,3,65,5):PRINTTAB(17,11)"Please wait...Re-arranging lines..." 2610 IFL=30GOTO2660 2620 FORI=L TO 29 2630 ID(I)=ID(I+1):L$(I)=L$(I+1):S1(I)=S1(I+1):S2(I)=S2(I+1) 2640 FORA=1 TO NS:s(I,A)=s(I+1,A):NEXT 2650 NEXT 2660 ID(30)=0:L$(30)="":S1(30)=0:S2(30)=0:FORI=1 TO 9:s(30,I)=0:NEXT 2670 NUM=31:REPEAT:NUM=NUM-1:UNTILID(NUM)<>0ORNUM=0 2680 IFNUM=0F$=" " 2690 ENDPROC 2700 DEF PROCELOGO 2710 T=S+(Y-8) 2720 ONERRORVDU15:GOTO1400 2730 B=T 2740 IFID(T+1)=2ANDS1(T+1)=S1(T)B=B+1ELSE GOTO2770 2750 IFID(T+2)=2ANDS1(T+2)=S1(T)B=B+1ELSE GOTO2770 2760 IFID(T+3)=2ANDS1(T+3)=S1(T)B=B+1ELSE GOTO2770 2770 PROCHEADER("Edit Logo") 2780 PROCBOX(0,10,79,14):PROCBOX(0,0,79,9) 2790 PRINTTAB(2,2)"Edit the logo. Use ";:VDU27,24,27,25,27,27,27,26:PRINT" to move, SPACEBAR to mark and remove, or "CHR$255" to"TAB(2,3)"finish. Use < and > for line shift feature. Press "CHR$17"Stop "CHR$18"to exit..." 2800 X=1:Y=1:WLIM=(35-(S1(T)+S2(T)))*6:HLIM=(B-(T-1))*8:L=B 2810 MOVE9,7:PLOT103,WLIM*2+10,HLIM*2+8:MOVE9,7:DRAWWLIM*2+10,7:DRAWWLIM*2+10,HLIM*2+8:DRAW9,HLIM*2+8:DRAW9,7 2820 PRINTTAB(2,4)"Please wait, re-drawing logo..." 2830 gy=-8:FORI=B TO T STEP -1:gy=gy+16:GX=8:FORA=1 TO WLIM:GY=gy:GX=GX+2:BIT=1:FORK=1 TO 8 2840 IF (ASC(MID$(L$(I),A,1)) AND BIT) MOVEGX,GY:PLOT101,GX+1,GY+1 2850 BIT=BIT*2:GY=GY+2:NEXT:NEXT:NEXT 2860 PRINTTAB(2,4)SPC35 2870 GX=10:GY=8:BIT=1 2880 FSH=FALSE 2890 MOVEGX,GY:PLOT102,GX+1,GY+1 2900 G=INKEY(25) 2910 PROCTIME 2920 IFFSH=TRUE FSH=FALSE ELSEFSH=TRUE 2930 IFG>-1ANDFSH=FALSE MOVEGX,GY:PLOT102,GX+1,GY+1:FSH=TRUE 2940 IFG=240ANDY1MOVEGX,GY:PLOT102,GX+1,GY+1:Y=Y-1:GY=GY-2:MOVEGX,GY:PLOT102,GX+1,GY+1:BIT=BIT/2:IF Y MOD 8=0 L=L+1:BIT=128 2960 IFG=242ANDX>1MOVEGX,GY:PLOT102,GX+1,GY+1:X=X-1:GX=GX-2:MOVEGX,GY:PLOT102,GX+1,GY+1 2970 IFG=243ANDX0 Z=TRUE 3090 IF z=2 AND ASC(RIGHT$(L$(I),1))>0 Z=TRUE 3100 NEXT 3110 IF Z=TRUE =TRUE ELSE =FALSE 3120 DEF PROCMARK 3130 C=ASC(MID$(L$(L),X,1)) 3140 IF(C ANDBIT)C=C-BIT:MOVEGX,GY:PLOT103,GX+1,GY+1:GOTO3160 3150 C=C+BIT:MOVEGX,GY:PLOT101,GX+1,GY+1 3160 L$(L)=LEFT$(L$(L),X-1)+CHR$(C)+MID$(L$(L),X+1) 3170 ENDPROC 3180 DEF PROCJUST 3190 L=S+(Y-8) 3200 ONERRORVDU15:GOTO1400 3210 PROCHEADER("Justification") 3220 PROCBOX(0,8,79,14):PRINTTAB(2,2)"Use ";:VDU27,27,27,26:PRINT" to move, "CHR$255" to finish..." 3230 PROCBORD(2,9,18,11):PROCBORD(20,9,36,11):PROCBORD(38,9,54,11):PRINTTAB(3,5)"Left justified"TAB(25,5)"Centred"TAB(39,5)"Right justified":X=14:MOVEX,77:PLOT102,X+98,91 3240 G=INKEY(10) 3250 PROCTIME 3260 IFG=242ANDX>14MOVEX,77:PLOT102,X+98,91:X=X-108:MOVEX,77:PLOT102,X+98,91 3270 IFG=243ANDX<230MOVEX,77:PLOT102,X+98,91:X=X+108:MOVEX,77:PLOT102,X+98,91 3280 IFG=13ANDX=14ANDID(L)<2S1(L)=0:S2(L)=(35-LEN(L$(L))):ENDPROC 3290 IFG=13ANDX=230ANDID(L)<2S1(L)=(35-LEN(L$(L))):S2(L)=0:ENDPROC 3300 IFG=13ANDX=122ANDID(L)<2S1(L)=((35-LEN(L$(L)))DIV2):S2(L)=(35-(S1(L)+LEN(L$(L)))):ENDPROC 3310 IFG=13ANDX=14ANDID(L)=2S1(L)=0:S2(L)=(35-(LEN(L$(L))/6)):ENDPROC 3320 IFG=13ANDX=230ANDID(L)=2S1(L)=(35-(LEN(L$(L))/6)):S2(L)=0:ENDPROC 3330 IFG=13ANDX=122ANDID(L)=2S1(L)=((35-(LEN(L$(L))/6))DIV2):S2(L)=(35-(S1(L)+(LEN(L$(L))/6))):ENDPROC 3340 GOTO3240 3350 END 3360 DEF PROCPRINT 3370 ONERRORVDU15:GOTO170 3380 PROCHEADER("Print Cards") 3390 N=2 3400 PROCBOX(0,6,79,14):PROCBOX(0,0,79,5) 3410 PRINTTAB(1,2)"Press ";:VDU27,24,27,25:PRINT" to move, ";:VDU27,27,27,26:PRINT" to change, S for printer setup, ";CHR$255;" to print, or press "CHR$17"Stop"CHR$18TAB(1,3)"to exit..." 3420 PRINTTAB(4,5)"Number of cards to be printed :"TAB(14,6)"Page length (Lines) :"TAB(21,7)"Line spacing : ";SPACE TAB(8,8)"Eject page after printing : ";:IFEJECT=TRUE PRINT"Yes" ELSE PRINT"No" 3430 PRINTTAB(33,11)CHR$19CHR$17"Print Status"CHR$20CHR$18TAB(1,13)"Current Printer : ";P$ TAB(1,14)"Number of lines :"TAB(40,13)"Number of cards per page :"TAB(49,14)"Number of pages :" 3440 Y=5:PROCRECALC:PRINTTAB(2,5);:VDU27,26 3450 G=INKEY(10) 3460 PROCTIME 3470 IFG=240ANDY>5PRINTTAB(2,Y)" ":Y=Y-1:PRINTTAB(2,Y);:VDU27,26 3480 IFG=241ANDY<8PRINTTAB(2,Y)" ":Y=Y+1:PRINTTAB(2,Y);:VDU27,26 3490 IFG=242ANDN>2ANDY=5 N=N-2:PROCRECALC 3500 IFG=243ANDN<1000ANDY=5 N=N+2:PROCRECALC 3510 IFG=242ANDPL>1ANDY=6 PL=PL-1:PROCRECALC 3520 IFG=243ANDPL<1000ANDY=6 PL=PL+1:PROCRECALC 3530 IFG=242ANDY=7 SPACE=1:PRINTTAB(36,7);SPACE;" ":PROCRECALC 3540 IFG=243ANDY=7 SPACE=2:PRINTTAB(36,7);SPACE;" ":PROCRECALC 3550 IFG=242ANDY=8 EJECT=FALSE:PRINTTAB(36,8)"No " 3560 IFG=243ANDY=8 EJECT=TRUE:PRINTTAB(36,8)"Yes" 3570 IFG=83PROCSETUP:GOTO3370 3580 IFG=13GOTO3600 3590 GOTO3450 3600 ONERRORVDU6:VDU15:VDU3:GOTO170 3610 PROCHEADER("Print Cards"):PROCBOX(13,5,67,8):PRINTTAB(15,8)"Now printing '";F$;"' on the ";P$:PRINTTAB(15,9)"Press "CHR$17"Stop "CHR$18"to cancel..." 3620 n=0:nn=0 3630 VDU2:VDU21 3640 PRINTCHR$218;STRING$(35,CHR$196);CHR$194;STRING$(35,CHR$196);CHR$191 3650 FORI=1 TO NUM 3660 VDU3:VDU6:PROCTIME:VDU2:VDU21 3670 FORA=1 TO NS 3680 IFs(I,A)=1VDU1,NON1(A),1,NON2(A),1,NON3(A) 3690 NEXT 3700 IFID(I)=0PRINTCHR$179;SPC35;CHR$179;SPC35;CHR$179 3710 IFID(I)=1PRINTCHR$179;SPC(S1(I));L$(I);SPC(S2(I));CHR$179;SPC(S1(I));L$(I);SPC(S2(I));CHR$179 3720 IFID(I)=2ANDI+1<30ANDID(I+1)=2VDU1,27,1,65,1,8 3730 IFID(I)=2b=(35-(S1(I)+S2(I)))*12DIV256:l=(35-(S1(I)+S2(I)))*12MOD256 3740 IFID(I)=2PRINTCHR$179;SPCS1(I);:VDU1,27,1,76,1,l,1,b:FORi=1TOl DIV2:VDU1,ASC(MID$(L$(I),i)),1,ASC(MID$(L$(I),i)):NEXT:PRINTSPCS2(I);CHR$179; 3750 IFID(I)=2PRINTSPCS1(I);:VDU1,27,1,76,1,l,1,b:FORi=1TOl DIV2:VDU1,ASC(MID$(L$(I),i)),1,ASC(MID$(L$(I),i)):NEXT:PRINTSPCS2(I);CHR$179 3760 IFID(I)=2ANDI+1<30ANDID(I+1)=2VDU1,27,1,50 3770 FORA=1 TO NS 3780 IFs(I,A)=1VDU1,NOF1(A),1,NOF2(A),1,NOF3(A) 3790 NEXT 3800 IFSPACE=2PRINTCHR$179;SPC35;CHR$179;SPC35;CHR$179 3810 NEXT 3820 n=n+2:nn=nn+2 3830 IFn=N ANDEJECT=TRUE PRINTCHR$192;STRING$(35,CHR$196);CHR$193;STRING$(35,CHR$196);CHR$217:VDU1,12,3,6:PRINTTAB(15,9)"Finished Printing. Press any key...":REPEAT:PROCTIME:UNTILINKEY(10)<>-1:ENDPROC 3840 IFn=N ANDEJECT=FALSE PRINTCHR$192;STRING$(35,CHR$196);CHR$193;STRING$(35,CHR$196);CHR$217:VDU3,6:PRINTTAB(15,9)"Finished Printing. Press any key...":REPEAT:PROCTIME:UNTILINKEY(10)<>-1:ENDPROC 3850 IFnn=NF PRINTCHR$192;STRING$(35,CHR$196);CHR$193;STRING$(35,CHR$196);CHR$217:VDU1,12 3860 IFnn=NF VDU3,6:PRINTTAB(15,9)"Press any key to print next page...":G=GET:PRINTTAB(15,9)"Press "CHR$17"Stop "CHR$18"to cancel..."SPC12:VDU2,21:nn=0:GOTO3640 3870 IFnn0 OR NUM=0:PRINTTAB(19,14);NUM 3910 NF=(((PL-1)DIV(NUM+1)))*2 3920 IFSPACE=2NF=NF DIV2 3930 np=((N-1)DIVNF) 3940 PRINTTAB(67,13);NF;" "TAB(67,14);np+1;" " 3950 PRINTTAB(36,5);N;" "TAB(36,6);PL;" " 3960 ENDPROC 3970 DEF PROCSETUP 3980 S=1:Y=12 3990 ONERRORVDU15:GOTO3370 4000 PROCHEADER("Printer Setup") 4010 PROCBOX(0,10,79,14):PROCBOX(0,7,79,9):PROCBOX(0,0,40,6):PROCBOX(41,0,79,6):PROCBORD(2,1,39,4) 4020 IFP$<>"***No Printer***"PRINTTAB(1,2)"The current printer is ";P$;". ";NS;" styles have been set up."ELSEPRINTTAB(1,2)"***There is no printer set up for the program***" 4030 PRINTTAB(1,4)"Press ";:VDU27,24,27,25:PRINT" to move, "CHR$255" to change. Press "CHR$17"Stop "CHR$18"to exit..."TAB(3,10)CHR$17"Style number : "CHR$18"1"TAB(54,10)CHR$17CHR$19"Style Setup"CHR$18CHR$20TAB(2,7)"Current Printer : "P$ 4040 PRINTTAB(1,Y);:VDU27,26 4050 PROCTEXT3 4060 G=INKEY(10) 4070 PROCTIME 4080 IFG=240ANDS=1ANDY=12PRINTTAB(1,Y);" ":Y=7:PRINTTAB(1,Y);:VDU27,26:GOTO4060 4090 IFG=241ANDY=7PRINTTAB(1,Y);" ":Y=12:PRINTTAB(1,Y);:VDU27,26:GOTO4060 4100 IFG=240ANDS>1ANDY=12 S=S-1:PROCTEXT3 4110 IFG=241ANDS+1<16ANDY=13S=S+1:PROCTEXT3 4120 IFG=240ANDY>12PRINTTAB(1,Y);" ":Y=Y-1:PRINTTAB(1,Y);:VDU27,26:PROCTEXT3 4130 IFG=241ANDY<13PRINTTAB(1,Y);" ":Y=Y+1:PRINTTAB(1,Y);:VDU27,26:PROCTEXT3 4140 IF(G=240ORG=241)ANDY>7PRINTTAB(18,10);S+(Y-12);" " 4150 IFG=13ANDY=7PROCPNAME:PROCSSAVE:GOTO3990 4160 IFG=13ANDY>11PROCSNAME:PROCSSAVE:GOTO3990 4170 GOTO4060 4180 DEF PROCPNAME 4190 ONERRORVDU15:Y=12:GOTO3990 4200 PROCBOX(3,4,76,7) 4210 PRINTTAB(5,9)"Old printer was '"P$"'."TAB(5,10)"Type in the name of the new printer :":PROCINPUT(43,10,20):P$=VAR$:Y=12 4220 ENDPROC 4230 DEF PROCSNAME 4240 ONERRORVDU15:Y=12:GOTO3990 4250 PROCBOX(3,1,76,11):PROCBOX(4,7,75,10):PROCBOX(4,2,75,6) 4260 PRINTTAB(6,6)"Old name of style ";S+(Y-12);" was '"STY$(S+(Y-12));"'."TAB(6,7)"Type in the new name :":PROCINPUT(29,7,16):s$=VAR$ 4270 PRINTTAB(5,10)"Please enter the three control codes needed to turn on the style."TAB(5,11)"If the style only requires two codes, press "CHR$255" for the third." 4280 PRINTTAB(5,12)"Code 1 :":PROCINPUT(14,12,3):non1=VAL(VAR$):PRINTTAB(20,12)"Code 2 :":PROCINPUT(29,12,3):non2=VAL(VAR$):PRINTTAB(35,12)"Code 3 :":PROCINPUT(44,12,3):non3=VAL(VAR$) 4290 PRINTTAB(5,12)SPC50TAB(5,10)"Please enter the three control codes needed to turn off the style."TAB(5,11)"If the style only requires two codes, press "CHR$255" for the third." 4300 PRINTTAB(5,12)"Code 1 :":PROCINPUT(14,12,3):nof1=VAL(VAR$):PRINTTAB(20,12)"Code 2 :":PROCINPUT(29,12,3):nof2=VAL(VAR$):PRINTTAB(35,12)"Code 3 :":PROCINPUT(44,12,3):nof3=VAL(VAR$) 4310 NON1(S+(Y-12))=non1:NON2(S+(Y-12))=non2:NON3(S+(Y-12))=non3:NOF1(S+(Y-12))=nof1:NOF2(S+(Y-12))=nof2:NOF3(S+(Y-12))=nof3:STY$(S+(Y-12))=s$ 4320 ENDPROC 4330 DEF PROCSSAVE 4340 NS=17:REPEAT:NS=NS-1:UNTILSTY$(NS)<>"" OR NS=0 4350 K=OPENOUT("PRINTER.CCP") 4360 PRINT#K,P$,NS 4370 FORI=1 TO 16 4380 PRINT#K,STY$(I),NON1(I),NON2(I),NON3(I),NOF1(I),NOF2(I),NOF3(I) 4390 NEXT 4400 CLOSE#K 4410 ENDPROC 4420 DEF PROCFILE 4430 PROCHEADER("File Handling") 4440 ONERRORVDU15:GOTO170 4450 PROCBOX(0,5,79,8) 4460 IFF$=" "PRINTTAB(1,8)"Do you want to Load some cards or get a Directory ?"TAB(1,9)"Press L or D"; ELSE PRINTTAB(1,8)"Do you want to Load some cards, Save your cards, or get a Directory ?"TAB(1,9)"Press L,S or D"; 4470 PRINT", or press "CHR$17"Stop "CHR$18"to exit..." 4480 G=INKEY(10) 4490 PROCTIME 4500 IFG=68OSCLI("CAT"):GOTO4430 4510 IFG=76PROCLOAD:ENDPROC 4520 IFG=83ANDF$<>" "PROCSAVE:ENDPROC 4530 IFG=83ANDF$=" "VDU7:GOTO4480 4540 GOTO4480 4550 DEF PROCLOAD 4560 PROCHEADER("Load Cards") 4570 ONERRORVDU15:CLOSE#0:PROCFERROR:GOTO4430 4580 PROCBOX(0,5,79,8) 4590 PRINTTAB(1,8)"If you do not want to delete the cards in memory, press "CHR$17"Stop"CHR$18" now."TAB(1,9)"Please type in the filename :":PROCINPUT(31,9,8) 4600 PROCBOX(0,1,79,4):PRINTTAB(1,12)"Please wait, loading '"VAR$"'." 4610 K=OPENIN(VAR$+".CAR") 4620 FORI=1 TO 30 4630 INPUT#K,ID(I),L$(I),S1(I),S2(I) 4640 FORA=1 TO 16 4650 INPUT#K,s(I,A) 4660 NEXT 4670 NEXT 4680 CLOSE#0 4690 F$=VAR$ 4700 ENDPROC 4710 DEF PROCSAVE 4720 ONERRORVDU15:CLOSE#0:PROCFERROR:GOTO4430 4730 PROCBOX(0,5,79,8) 4740 IFF$<>" "AND F$<>"Untitled" PRINTTAB(1,8)"Do you want to save your cards as '"F$;"' ? Press Y or N..." ELSE GOTO4800 4750 G=INKEY(10) 4760 PROCTIME 4770 IFG=89f$=F$:GOTO4810 4780 IFG=78GOTO4800 4790 GOTO4750 4800 PRINTTAB(1,9)"Please type in the filename :":PROCINPUT(31,9,8):f$=VAR$ 4810 PROCBOX(0,2,40,4):PRINTTAB(1,12)"Please wait, saving '"f$"'." 4820 K=OPENOUT(f$+".CAR") 4830 FORI=1 TO 30 4840 PRINT#K,ID(I),L$(I),S1(I),S2(I) 4850 FORA=1 TO 16 4860 PRINT#K,s(I,A) 4870 NEXT 4880 NEXT 4890 CLOSE#0 4900 F$=f$ 4910 ENDPROC 4920 DEF PROCFERROR 4930 IFERR=27ENDPROC 4940 IFERR=190ENDPROC 4950 PROCBOX(0,2,40,4) 4960 IFERR=222PRINTTAB(1,12)"File does not exist...":FORI=1 TO 5000:NEXT:ENDPROC 4970 IFERR=198PRINTTAB(1,12)"The memory is full...":FORI=1 TO 5000:NEXT:ENDPROC 4980 ENDPROC 4990 DEF PROCIERROR 5000 PROCBOX(0,1,60,4) 5010 IFERR=222PRINTTAB(1,12)"Printer setup file 'PRINTER.CCP' not found in memory."TAB(1,13)"Load onto memory from disk. Press any key...":G=GET:ENDPROC 5020 IF ERR=11 PRINTTAB(1,12)"There is not enough memory to run the program."TAB(1,13)"Delete some files to create space. Press any key...":G=GET:ENDPROC 5030 ENDPROC 5040 DEF PROCVIEW 5050 ONERRORVDU15:GOTO170 5060 PROCHEADER("View Cards") 5070 PROCBOX(0,12,79,14):PROCBOX(0,0,42,11):PROCBOX(43,0,79,11):PROCBORD(1,1,40,9) 5080 PRINTTAB(1,2)"Press ";:VDU27,24,27,25:PRINT" or press "CHR$17"Stop "CHR$18"to exit..."TAB(1,5)"Your business card :"TAB(44,5)CHR$19"The styles used :"CHR$20 5090 NUM=31:REPEAT:NUM=NUM-1:UNTILID(NUM)<>0 OR NUM=0 5100 S=0:Y=8:PRINTTAB(41,8);:VDU27,27 5110 PROCTEXT4:PROCSTYLES 5120 G=INKEY(10) 5130 PROCTIME 5140 IFG=240ANDS>0ANDY=8 S=S-1:PROCTEXT4 5150 IFG=241ANDS+58PRINTTAB(41,Y);" ":Y=Y-1:PRINTTAB(41,Y);:VDU27,27 5170 IFG=241ANDY<12ANDS+(Y-7)3MOVEI,69:PLOT102,I+20,83:N=N-2:I=I-24:MOVEI,69:PLOT102,I+20,83 5630 IFG=243ANDN<35MOVEI,69:PLOT102,I+20,83:N=N+2:I=I+24:MOVEI,69:PLOT102,I+20,83 5640 IFG=13GOTO5660 5650 GOTO5600 5660 logo=TRUE 5670 ENDPROC