10
20
30
40
50
60
70
80
90
100
110
120
130
140
150 :
160 MODE&87:VDU23;3,55;0;0;0:ver$="0.21":PROCinit:
170 ONERRORIFFNerr:END
180 REPEATUNTILFNmenu:PRINT:IFpc%:*Quit
190 END
200 :
210 DEFPROCinit:A%=0:X%=1:os%=(USR&FFF4 AND &FF00)DIV256
220 pc%=os%=32:max%=HIMEM-TOP-2000+2000*(HIMEM>&FFFF):DIM mem% max%
230 t1$=CHR$132+CHR$157+CHR$135+CHR$141:t2$=CHR$134+CHR$157+CHR$129:t3$=CHR$129+CHR$157+CHR$135
240 IFpc%:t1$=" ":t2$=" ":t3$=t2$
250 lpp%=66:cr0%=2:vex%=TRUE
260 ENDPROC
270 :
280 DEFFNmenu:CLS
290 FOR z%=-1 TO pc%:PRINTt1$;"Rich Text Format File Convertor":NEXT
300 PRINTt2$"Version ";ver$;" (C)1995-98 J.G.Harston"
310 PRINTt3$;SPC(11-LENFNsz(max%)/2);"Memory free: "FNsz(max%)
320 PRINT'" Paper size: A4 (80chars x 70lines)"'" Page length: ";lpp%;" Extended View: "FNonf(vex%)
330
340 PRINT'SPC10"(V)iew to RTF"'SPC10"(L)ines per page"
350 PRINTSPC10"(E)xtended View On/Off"
360 PRINTSPC10"E(x)it"'SPC10"(*)command"
370 PRINT'SPC10"Press a key:";
380 REPEATK%=GET:IFK%>96:K%=K%-32
390 IFK%=ASC"*":INPUTLINE"*"A$:OSCLIA$:PRINT":";
400 UNTILINSTR("LERVX "+CHR$13,CHR$K%):PRINTCHR$K%'
410 IFK%=ASC"L":INPUT"Lines per page: "lpp%:IFlpp%<60 OR lpp%>70:lpp%=66
420 IFK%=ASC"L":=0
430 IFK%=ASC"V":PROCVtoR:=0
440 IFK%=ASC"R":PROCRtoV:=0
450 IFK%=ASC"E":vex%=NOTvex%:=0
460 =K%=ASC"X"
470 :
480 DEFPROCVtoR
490 PRINT"Convert View to RTF file":type%=1
500 eol$=CHR$13+CHR$10
510 INPUT"Input View file: "in$
520 in%=OPENIN(in$)
530 IFin%=0:IFpc%:in$=in$+".":in%=OPENIN(in$)
540 IFin%=0:IFpc%:in$=in$+"TXT":in%=OPENIN(in$)
550 IFin%=0:PRINT"File '";in$;"' not found":A%=GET:ENDPROC
560 INPUT"Output RTF file: "out$
570 IFpc%:IFINSTR(out$,".")=0:out$=out$+".RTF"
580 ext%=EXT#in%:IFext%<max%:ptr%=0:CLOSE#in%:in%=0:OSCLI"LOAD "+in$+" "+STR$~mem%
590 PRINT"Input file size: ";FNsz(ext%)'"Output approx size: ";FNsz(1.4*ext%)
600 IFext%*2.5>max%:OSCLI"SAVE "+out$+" 0+"+STR$~(ext%*1.4)+LEFT$(" FFFF0000 FFFFFF00",NOTpc%):out%=OPENOUT(out$) ELSE out%=0:optr%=mem%+ext%
610 PROCpre:eof%=FALSE
620 REPEATPROCdo(FNg):UNTILeof%
630 PROCpost:IFout%=0:OSCLI"SAVE "+out$+" "+STR$~(mem%+ext%)+" "+STR$~(optr%)+LEFT$(" FFFF0000 FFFFFF00",NOTpc%) ELSE CLOSE#out%:out%=0
640 IFin%<>0:CLOSE#in%:in%=0
650 IFos%=6:OSCLI"Stamp "+out$
660 OSCLI"SetType "+out$+" C32"
670 ENDPROC
680 :
690 DEFPROCpre:IFtype%<>1:ENDPROC
700 ul%=FALSE:bd%=FALSE:code$="":cr%=cr0%:last1%=0:last0%=0
710 PROCout("{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\fmodern Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}{\f3\froman Courier;}}"+eol$)
720 PROCout("\paperw11909\paperh16834\margl360\margr360\margt"+STR$(108*(70-lpp%))+"\margb"+STR$(108*(70-lpp%))+"\gutter0"+eol$)
730 PROCout("\sectd \linex0\headery709\footery709\colsx709 \f0\fs24\pard\plain \qj")
740 FORz%=1 TO 10:PROCout("\tx"+STR$(144*(z%*8-1))):NEXT:PROCout(eol$)
750 ENDPROC
760 :
770 DEFPROCpost
780 IFtype%=1:PROCout("}"+eol$):ENDPROC
790 ENDPROC
800 :
810 DEFPROCdo(A%):IFA%=10:PRINTCHR$13;" CHR$10! ";:ENDPROC
820 IFA%=13:IFcr%:cr%=cr%-1:ENDPROC
830 IF last0%=13 AND last1%<>13 AND A%>32:PROCout(" ")
840 last1%=last0%:last0%=A%
850 IF last1%=13 AND A%=13:PROCout("\par \par "+eol$):ENDPROC
860 IF last1%=13 AND (A%=9 OR A%=32):PROCout("\par "+eol$)
870 IF A%=13:PROCso:ENDPROC
880 :
890 :
900
910 IFA%=ASC"\":PROCout("\\"):ENDPROC
920 IFA%=ASC"{":PROCout("\{"):ENDPROC
930 IFA%=ASC"}":PROCout("\}"):ENDPROC
940 IFA%=ASC"`":PROCout("\'a3"):ENDPROC
950 IFA%>127:PROCout("\'"+STR$~A%):ENDPROC
960 IFA%=9:PROCout("\tab "):ENDPROC
970 IFA%=26:PROCout(" "):ENDPROC
980 IFA%=28:IFul%:PROCrem("\ul "):PROCout("\plain "+code$+"\f0"):ul%=FALSE:ENDPROC
990 IFA%=28:PROCout("\ul "):ul%=TRUE:code$=code$+"\ul ":ENDPROC:
1000 IFA%<>29:PROCout(CHR$A%):ENDPROC
1010 IFNOTvex%:IFbd%:PROCout("\f0\fs24\plain "):bd%=FALSE:ENDPROC
1020 IFNOTvex%:bd%=TRUE:PROCout("\f3\fs24\b "):ENDPROC
1030 A%=FNg
1040 IFA%<64:PROCout("["+FNh0(A%,2)+"]"):ENDPROC
1050 IFA%=ASC"Q":PROCout("\fs96 "):ENDPROC:
1060 IFA%=ASC"q":PROCout("\fs24 "):cr%=3:last0%=13:ENDPROC
1070 IFA%=ASC"X":PROCout("\fs48 "):ENDPROC:
1080 IFA%=ASC"x":PROCout("\fs24 "):cr%=1:last0%=13:ENDPROC
1090 IFA%=ASC"D":PROCout("\fs32 "):ENDPROC:
1100 IFA%=ASC"d":PROCout("\fs24 "):ENDPROC
1110 IFA%=ASC"B":PROCout("\f3\fs24\b "):ENDPROC:
1120 IFA%=ASC"b":PROCout("\f0\fs24\plain "):ENDPROC
1130 IFA%=ASC"E"ORA%=ASC"e":A%=A%-3:
1140
1150 IFA%>95:PROCrem("\"+CHR$A%+" "):PROCout("\f0\plain "+code$):ENDPROC
1160 PROCout("\f0\"+CHR$(A%+32)+" "):code$=code$+"\"+CHR$(A%+32)+" ":ENDPROC
1170 :
1180 DEFPROCrem(a$):I%=INSTR(code$,a$):IFI%=0:ENDPROC
1190 code$=LEFT$(code$,I%-1)+MID$(code$,I%+LENa$):ENDPROC
1200 :
1210 DEFPROCRtoV
1220 PRINT"Convert RTF to VIEW file":type%=1
1230 INPUT"Input RTF file: "in$
1240 INPUT"Output VIEW file: "out$
1250 PRINT"Not yet";:A%=GET:ENDPROC
1260 in%=OPENIN(in$):IFin%=0:PRINTin$;" not found":in%=GET:ENDPROC
1270 out%=OPENOUT(out$)
1280 ul%=FALSE:code$=""
1290 REPEAT:A%=FNg
1300 IFA%=ASC"\":PROCod
1310 IFINSTR("\{}",CHR$A%)=0 AND A%>31:PROCout(CHR$A%)
1320 PROCso
1330 UNTILeof%
1340 ENDPROC
1350 :
1360 DEFPROCod:a$=CHR$FNg
1370 IFINSTR("\{}",a$):PROCout(a$):ENDPROC
1380 REPEATa$=a$+FNg:UNTILINSTR("\{} ",RIGHT$(a$,1))
1390 b$=RIGHT$(a$,1):a$=LEFT$(a$,LENa$-1)
1400 IFa$="\tab":PROCout(CHR$9)
1410 IFa$="\par":PROCout(CHR$13)
1420 IFa$="\ul":PROCout(CHR$28):ul%=NOTul%
1430 IFa$="\b":::
1440 IFa$="\i":::
1450 IFa$="\plain":::
1460 IFb$="\":PROCod
1470 ENDPROC
1480 :
1490 DEFPROCout(a$):IFa$="":ENDPROC
1500 IFout%=0:$optr%=a$:optr%=optr%+LENa$:ENDPROC
1510 REPEAT:BPUT#out%,ASCa$:a$=MID$(a$,2):UNTILa$="":ENDPROC
1520 :
1530 DEFFNg:IFin%=0:IFptr%>=ext%-1:eof%=TRUE:=mem%?(ptr%-1)
1540 IFin%=0:ptr%=ptr%+1:=mem%?(ptr%-1)
1550 IFEOF#in%:eof%=TRUE:=254
1560 =BGET#in%
1570 :
1580 DEFPROCso:IFin%=0:PRINTCHR$13;FNd0(100*ptr%DIVext%,2);"%";:ENDPROC
1590 PRINTCHR$13;FNd0(100*PTR#in%DIVEXT#in%,2);"%";:ENDPROC
1600 :
1610 DEFFNsz(A%):="&"+STR$~A%+", "+STR$A%+" bytes"
1620 DEFFNh0(A%,N%)=RIGHT$("0000000"+STR$~A%,N%)
1630 DEFFNd0(A%,N%)=RIGHT$("00000000"+STR$A%,N%)
1640 DEFFNonf(A%):IFA%:="ON" ELSE ="OFF"
1650 :
1660 DEFFNerr:REPORT:CLOSE#0:IFERR<>17:K%=GET
1670 =K%<0 AND INKEY(os%>0)
1680 :
1690 DEFFNOS_GetEnv:LOCAL A$,A%,X%,Y%
1700 A%=0:X%=1:os%=(USR &FFF4 AND &FF00)DIV256
1710 IFos%=32:A$=$&100:?&100=13:=MID$(A$,INSTR(A$+" "," ")+1)
1720 IFos%=6 AND HIMEM>&8000:SYS "OS_GetEnv" TO A$:A$=MID$(A$,INSTR(A$," ",1+INSTR(A$," ",1+INSTR(A$," ")))):=A$
1730 X%=TOP+200:Y%=X%DIV256:?X%=0:X%!1=TOP+220:!(X%!1)=0:A%=9:CALL&FFD1:X%=TOP+220:IF!X%:X%?(1+?X%)=13:=$(X%+1)
1740 =""