10 REM Banners 20 REM (C) Allan Kelly 14/8/87 25 REM Banners Version 006. Transferred to Arc 13/07/1990 30 35 ONERROR GOTO 9900 40 DIM chars%(94,7) 50 DIM data 10 60 PROCset_up 70 PROCepson_codes 80 PROCget_fonts 90 100 MODE 7 110 REPEAT 120 REPEAT 130 CLS 140 PRINTTAB(0,0);CHR$(129);CHR$(157);CHR$(141);TAB(10,0);CHR$(131);"Printer Banners" 150 PRINTTAB(0,1);CHR$(129);CHR$(157);CHR$(141);TAB(10,1);CHR$(131);"Printer Banners" 160 PRINTTAB(7,2);"(C) Allan Kelly 1987" 170 180 PRINT''SPC(5);"S - Save settings" 190 PRINT'SPC(5);"L - Save settings" 200 PRINT'SPC(5);"C - Change settings" 210 PRINT'SPC(5);"E - Enter message" 220 PRINT'SPC(5);"P - Print banner" 230 PRINT'SPC(5);"Q - Quit" 240 250 *FX21,0 260 REPEAT key$=GET$ 270 UNTIL INSTR("SLCEPQ*",key$) OR INSTR("slcepq*",key$) 280 key=ASC(key$) AND&DF 290 300 IF key=ASC"S" PROCsave 310 IF key=ASC"L" PROCload 320 IF key=ASC"C" PROCchange 330 IF key=ASC"E" PROCmessage 340 IF key=ASC"P" MODE3:PROCprint:MODE7 350 IF key=10 PROCos 360 UNTIL key=ASC"Q" 370 UNTIL FNtest("Are you sure?") 380 END 390 400 DEFPROCos 410 LOCAL os$,key 420 REPEAT INPUT'"*"os$ 430 $&C00=os$ 440 X%=0 450 Y%=&C 460 CALL&FFF7 470 *FX21,0 480 key=GET 490 UNTIL key<>42 500 ENDPROC 510 520 DEFPROCchange 530 LOCAL key 540 CLS 550 PRINTTAB(4,0);CHR$(141);"Change Settings" 560 PRINTTAB(4,1);CHR$(141);"Change Settings" 570 PRINTTAB(0,2);"Vertical multiplier:";vm% 580 PRINTTAB(0,3);"Horizontal multiplier:";hm% 590 PRINTTAB(0,4);"Left gap:";left% 600 PRINTTAB(0,5);"Top gap:";top% 610 PRINTTAB(0,6);"Bottom gap:";bottom% 620 PRINTTAB(0,8);"Foregound character:";CHR$(out%);" ";out% 630 PRINTTAB(0,9);"Backgound character:";CHR$(back%);" ";back% 640 PRINTTAB(0,11);"Line spacing n/216:";space% 650 660 REPEAT 670 PRINTTAB(0,20);SPC(38) 680 690 vm%=FNget_value(25,2,10,1,vm%) 700 hm%=FNget_value(25,3,10,1,hm%) 710 left%=FNget_value(25,4,88,0,left%) 720 top%=FNget_value(25,5,40,0,top%) 730 bottom%=FNget_value(25,6,40,0,bottom%) 740 out%=FNget_ascii(25,8,126,32,out%) 750 back%=FNget_ascii(25,9,126,32,back%) 760 space%=FNget_value(25,11,216,1,space%) 770 PRINTTAB(0,20);"RETURN to repeat, SPACE for menu" 780 *FX21,0 790 REPEAT key=GET 800 UNTIL key=13 OR key=32 810 UNTIL key=32 820 ENDPROC 830 840 DEFPROCmessage 850 LOCAL x$ 860 CLS 870 PRINTTAB(4,1);CHR$(141);"Message" 880 PRINTTAB(4,2);CHR$(141);"Message" 890 PRINT''"Current message:"message$ 900 INPUT'';"New message:"x$ 910 IF x$<>"" message$=x$ 920 930 PRINT''"Pre message:"pre$ 940 INPUT';"Pre message:"x$ 950 IF x$<>"" pre$=x$ 960 970 PRINT''"Post message:"post$ 980 INPUT';"Post message:"x$ 990 IF x$<>"" post$=x$ 1000 ENDPROC 1010 1020 DEFPROCprint 1030 LOCAL print%,key,vh% 1040 CLS 1050 print%=FNtest("Printer on?") 1060 PRINT"Vertical (V) or Horizontal (H)?" 1070 *FX21,0 1080 REPEAT key=GET AND&DF 1090 UNTIL key=ASC"H" OR key=ASC"V" 1100 IF key=ASC"H" vh%=FALSE ELSE vh%=TRUE 1110 IF print% VDU 2,1,esc%,1,sp_code%,1,space% 1120 IF pre$<>"" PRINTpre$' 1130 IF vh% PROCvertical(message$) ELSE PROChorizontal(message$) 1140 IF post$<>"" PRINTpost$' 1150 IF print% VDU 3 1160 PROCreturn 1170 ENDPROC 1180 1190 DEFPROChorizontal(x$) 1200 LOCAL char,x%,hl%,y%,vl% 1210 FOR char=LEN(x$) TO 1 STEP -1 1220 IF top%>0 PROClines(top%) 1230 FOR x%=0 TO 7 1240 FOR hl%=1 TO hm% 1250 PRINT'SPC(left%); 1260 FOR y%=0 TO 7 1270 FOR vl%=1 TO vm% 1280 IF chars%(ASC(MID$(message$,char,1))-32,y%) AND 2^x% VDU out% ELSE VDU back% 1290 NEXT 1300 NEXT 1310 NEXT 1320 NEXT 1330 IF bottom%>0 PROClines(bottom%) 1340 NEXT 1350 ENDPROC 1360 1370 DEFPROCvertical(x$) 1380 LOCAL char,x%,hl%,y%,vl% 1390 FOR char=1 TO LEN(x$) 1400 IF top%>0 PROClines(top%) 1410 FOR x%=0 TO 7 1420 FOR hl%=1 TO hm% 1430 PRINT'SPC(left%); 1440 FOR y%=7 TO 0 STEP -1 1450 FOR vl%=1 TO vm% 1460 IF chars%(ASC(MID$(message$,char,1))-32,x%) AND 2^y% VDU out% ELSE VDU back% 1470 NEXT 1480 NEXT 1490 NEXT 1500 NEXT 1510 IF bottom%>0 PROClines(bottom%) 1520 NEXT 1530 ENDPROC 1540 1550 DEFPROCsave 1560 LOCAL file,file$ 1570 PROCcat 1580 file$=FNfile_name 1590 file=OPENIN(file$) 1600 IF file<>0 PRINT"File exists.":IF FNtest("Continue?")=FALSE ENDPROC 1610 CLOSE#file 1620 file=OPENOUT(file$) 1630 PRINT#file,vm%,hm% 1640 PRINT#file,left%,top%,bottom% 1650 PRINT#file,space%,out%,back% 1660 PRINT#file,message$,pre$,post$ 1670 CLOSE#file 1680 ENDPROC 1690 1700 DEFPROCload 1710 LOCAL file,file$ 1720 PROCcat 1730 file$=FNfile_name 1740 file=OPENIN(file$) 1750 IF file=0 PRINT"File does not exist":PROCreturn:ENDPROC 1760 1770 INPUT#file,vm%,hm% 1780 INPUT#file,left%,top%,bottom% 1790 INPUT#file,space%,out%,back% 1800 INPUT#file,message$,pre$,post$ 1810 CLOSE#file 1820 ENDPROC 1830 1840 DEFPROCcat 1850 IF FNtest("Catalogue?") THEN *. 1860 ENDPROC 1870 1880 DEFFNfile_name 1890 LOCAL x$ 1900 REPEAT 1910 INPUT'"Filename:"x$ 1920 UNTIL x$<>"" 1930 :=x$ 1940 1950 DEFPROCset_up 1960 print%=FALSE 1970 vm%=1 1980 hm%=1 1990 left%=0 2000 out%=ASC"X" 2010 back%=ASC" " 2020 message$="" 2030 pre$="" 2040 post$="" 2050 top%=0 2060 bottom%=0 2070 space%=36 2080 ENDPROC 2090 2100 DEFPROCepson_codes 2110 esc%=27 2120 REM line spacing code for n/216 2130 sp_code%=ASC"3" 2140 ENDPROC 2150 2160 DEFPROCget_fonts 2170 LOCAL get%,x 2180 PRINT''"Reading Character fonts" 2190 FOR get%=32 TO 126 2200 ?data=get% 2210 A%=10 2220 X%=data MOD 256 2230 Y%=data DIV 256 2240 CALL&FFF1 2250 FOR x=0 TO 7 2260 chars%(get%-32,x)=?(data+1+x) 2270 NEXT 2280 NEXT 2290 ENDPROC 2300 2310 DEFFNtest(x$) 2320 LOCAL key 2330 PRINT'x$ 2340 *FX21,0 2350 REPEAT key=GET AND&DF 2360 UNTIL key=ASC"Y" OR key=ASC"N" 2370 IF key=ASC"Y" :=TRUE 2380 :=FALSE 2390 2400 DEFPROCreturn 2410 PRINT'SPC(10);"Press RETURN" 2420 *FX21,0 2430 REPEAT UNTIL GET=13 2440 ENDPROC 2450 2460 DEFFNget_value(x,y,max,min,v) 2470 LOCAL z$,z 2480 PRINTTAB(x,y); 2490 INPUT z$ 2500 IF z$="" z=v ELSE z=EVAL(z$) 2510 IF z>=min OR z<=max PRINTTAB(x,y);z;" " 2520 IF z>max PRINTTAB(x,y);max;" MAX":z=max 2530 IF z=min OR z<=max PRINTTAB(x,y);CHR$(z);" " 2690 IF z>max PRINTTAB(x,y);CHR$(max);" MAX":z=max 2700 IF z