10 PRINT"Typeset... by K.M. Simons ¤1990. - the eccentric dot-matrix upgrading program! 15 FOR a=1 TO 2000:NEXT:WIDTH 255:DEFINT A-Z 20 za$="L":o=8:z=1:s5=0 22 s7=-1 30 x$=CHR$(27):sp$=STRING$(o,CHR$(0)) 35 text$="Please use cursor keys to select the file you desire to print, then press [ENTER]":search$="*.*":GOSUB 2040:f$=z$ 40 OPEN "i",1,f$ 50 PRINT "File name: "f$:PRINT "Please type the information below, then press [RETURN]." 51 INPUT "Printer width? (Maximum 850, Minimum 250) ",w:IF w>850 OR w<250 THEN 51 52 WIDTH LPRINT 255 53 INPUT "Line spacing? (Suggested Minimum is 24) ",llss:IF llss<1 OR llss>250 THEN 53 ELSE LPRINT CHR$(27)"3"CHR$(llss); 54 PRINT "Lines per page? (Maximum is"INT(10*216/(2+llss));") ";:INPUT"", llpp:IF llpp>INT(10*216/(2+llss)) OR llpp<2 THEN 54 55 OPTION NOT TAB 56 text$="To print "+f$+", use cursor keys to select the font, then press [ENTER]":search$="*.ft":GOSUB 2040:text$=z$:fontfile$=z$ 60 GOSUB 3000:GOSUB 2000:PRINT "Font loaded..." 70 j=-1:WHILE NOT EOF(1) 80 GOSUB 140:'get a line 84 IF s7 THEN s7=0:GOTO 90:'IF s5 THEN GOSUB 400:GOTO 90 85 LPRINT x$;za$;CHR$(t MOD 256)CHR$(t\256);:t=0 86 FOR cc=0 TO c:PRINT cc;:LPRINT a$(3,cc);:NEXT:LPRINT:PRINT"":ERASE a$ 87 llpp1=llpp1+1:IF llpp1>=llpp THEN LPRINT CHR$(12);:llpp1=0 90 IF j THEN GOSUB 350 100 GOSUB 250:'print it 110 WEND 120 CLOSE 1,2 124 IF s5 THEN GOSUB 400:GOTO 130 125 LPRINT x$;za$;CHR$(t MOD 256)CHR$(t\256);:t=0 126 FOR cc=0 TO c:PRINT cc;:LPRINT a$(3,cc);:NEXT:LPRINT:ERASE a$ 130 GOSUB 3000:LPRINT CHR$(12);:PRINT "Finished... do you want to start again? (Press Y if you desire to run the program again. Any other key if not.)":IF UPPER$(INPUT$(1))="Y" THEN RUN ELSE 25000 140 sl%=sq%:l$=q$:q$="" 150 IF NOT EOF(1) THEN z$=INPUT$(1,1) ELSE j=0:RETURN 160 IF ASC(z$)>127 THEN 150:'except the pound symbol, eventually! 170 IF z$>" " THEN 210 180 IF z$=" " THEN IF LEN(l$)=0 THEN 150 ELSE s=s+1 190 IF z$=CHR$(13) THEN PRINT "CR";:j=0:sq%=0:RETURN 200 IF z$<" " THEN 150 210 sl%=sl%+d%(ASC(z$)-32):l$=l$+z$:IF sl%<=w OR z$=" " THEN 150'else prune the sentence 220 sq%=0:PRINT ".";:WHILE RIGHT$(l$,1)<>" " 230 sq%=sq%+d%(ASC(RIGHT$(l$,1))-32):sl%=sl%-d%(ASC(RIGHT$(l$,1))-32):q$=RIGHT$(l$,1)+q$:l$=LEFT$(l$,LEN(l$)-1):WEND 240 WHILE RIGHT$(l$,1)=" ":l$=LEFT$(l$,LEN(l$)-1):s=s-1:sl%=sl%-d%(0):WEND:RETURN 250 DIM a$(3,10):c=0:FOR p=1 TO LEN(l$):IF LEN(a$(1,c))>200 THEN c=c+1 260 r=ASC(MID$(l$,p,1))-32:IF r=0 THEN GOSUB 310:GOTO 275 270 a$(1,c)=a$(1,c)+d$(1,r):a$(2,c)=a$(2,c)+d$(2,r):a$(3,c)=a$(3,c)+d$(3,r):t=t+LEN(d$(1,r)) 275 NEXT:IF t=0 THEN t=1:c=1:a$(1,0)=CHR$(0):a$(2,0)=CHR$(0):a$(3,0)=CHR$(0) 276 PRINT"["t;sl%;w;"]"; 280 PRINT "*";:LPRINT x$;za$;CHR$(t MOD 256)CHR$(t\256); 290 FOR cc=0 TO c:PRINT cc;:LPRINT a$(1,cc);:NEXT:LPRINT CHR$(13)x$"J"CHR$(z); 294 PRINT "*";:LPRINT x$;za$;CHR$(t MOD 256)CHR$(t\256); 295 FOR cc=0 TO c:PRINT cc;:LPRINT a$(2,cc);:NEXT:LPRINT CHR$(13)x$"J"CHR$(z); 296 PRINT CHR$(13);l$; 300 j=-1:s=0:PRINT "¼":RETURN 310 IF j=0 THEN FOR cc=1 TO 3:a$(cc,c)=a$(cc,c)+sp$:NEXT:t=t+d%(0):RETURN 320 IF s2>0 THEN s3=s1+1:s2=s2-1:ELSE s3=s1 330 FOR cc=1 TO 3:a$(cc,c)=a$(cc,c)+STRING$(s3,CHR$(0)):NEXT 340 t=t+s3:RETURN 350 s4=w-(sl%-(s*8)):s1=s4\s:s2=s4 MOD s:RETURN 400 IF q=0 THEN RETURN ELSE FOR cccc=1 TO 2:LPRINT x$;za$;CHR$(t MOD 256)CHR$(t\256); 410 FOR cc=0 TO c:LPRINT a$(q,cc); 430 NEXT:LPRINT CHR$(13)x$"J"CHR$(z); 440 NEXT:IF q=1 THEN LPRINT x$"J"CHR$(21);:q=2:ELSE LPRINT:ERASE a$:t=0 450 RETURN 500 FOR cc=32 TO 128:GET 2:FOR o1=1 TO 8:d1$(cc-32)=d1$(cc-32)+STRING$(2,MID$(d1$,o1,1)) 510 d2$(cc-32)=d2$(cc-32)+STRING$(2,MID$(d2$,o1,1)):NEXT:NEXT:CLOSE 2 520 PRINT "Font loaded...":RETURN 2000 OPEN "r",2,text$,37:FIELD 2,12 AS d1$,12 AS d2$,12 AS d3$,1 AS dd$ 2010 DIM d$(3,97),d%(97):FOR cc=32 TO 128:GET 2:d%(cc-32)=ASC(dd$):d$(1,cc-32)=LEFT$(d1$,d%(cc-32))::d$(2,cc-32)=LEFT$(d2$,d%(cc-32)):d$(3,cc-32)=LEFT$(d3$,d%(cc-32)):NEXT:CLOSE 2 2020 d%(0)=8:RETURN 2030 text$=" Please use cursor keys to select file, then press [ENTER] to confirm":search$="*.*" 2040 x$=CHR$(27):Win1$=x$+"X >z":win2$=x$+"X !>y"'Win1$ is no window - default,win2$=left margin=1 2050 PRINT x$"f"x$"E"win2$;:FILES search$:PRINT win1$ 2060 PRINT x$"0"x$"Y? ";text$;:y=0:x=0 2070 DEF FNa$(a$,b$)=x$+"Y"+CHR$(y+32)+CHR$((x*14)+32)+a$+x$+"Y"+CHR$(y+32)+CHR$((x*14)+45)+b$ 2080 PRINT FNa$(x$+"p"+"*","*"+x$+"q"):z$=INPUT$(1):PRINT FNa$(" "," ") 2090 IF z$=CHR$(6) THEN x=MIN(x+1,5) 2100 IF z$=CHR$(1) THEN x=MAX(0,x-1) 2110 IF z$=CHR$(30) THEN y=MIN(y+1,29) 2120 IF z$=CHR$(31) THEN y=MAX(0,y-1) 2130 IF z$=CHR$(13) THEN z$=STRIP$(FIND$(search$,(y*6)+(x+1))):IF z$="" THEN PRINT CHR$(7);: ELSE PRINT x$"1"x$"e"x$"E"x$"H":RETURN:REM Selected: z$ 2140 GOTO 2080 3000 PRINT CHR$(27)"E"CHR$(27)"H":PRINT "File being printed"TAB(40);f$ 3010 PRINT"Typestyle"TAB(40);fontfile$ 3020 PRINT"Printer width"TAB(40);w 3030 PRINT"Line spacing"TAB(40);llss 3040 PRINT"Lines per page"TAB(40);llpp 3050 PRINT"Please be patient. This is quite a slow program!":RETURN 25000 IF FIND$("M:$$$$$$$$.&&&")<>"" THEN OPTION STOP:PRINT "[Press any key to return to main menu or press (STOP) to stop]":z$=INPUT$(1):RUN "M:$$$$$$$$.&&&":ELSE END OP