home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / club100 / prt / sprint.ba < prev    next >
Text File  |  2006-10-19  |  8KB  |  201 lines

  1. 0 'SPRINT.BA - Author unknown
  2. 1 'Club 100 Library - 415/939-1246 BBS,    937-5039 NEWSLETTER, 932-8856 VOICE
  3. 2 '  *** SPRINT.BA ***   
  4. 3 CLEAR1000:CLS:MAXFILES=3:GOSUB144 'INITIALIZE
  5. 4 GOSUB139 'GET USER OPTIONS
  6. 5 IFSP=YTHENGOSUB138:GOTO7'RS-232
  7. 6 OPEN"LPT:"FOROUTPUTAS2
  8. 7 GOTO9
  9. 8 LC$=CH$:IFEOF(1)THEN134
  10. 9 CH$=INPUT$(1,1):IFCM=-1THEN12
  11. 10 IFCH$<>CHR$(152)THEN12
  12. 11 IFCM=1OREOF(1)THEN134ELSEGOSUB104:CM=1:LC=0:GOTO9
  13. 12 IFLC$<>"\"THEN17
  14. 13 'LOOKFORHEADER/FOOTERBLOCKS
  15. 14 IFCH$<>"["THEN17 'NOT A BLOCK
  16. 15 CH$=INPUT$(1,1):IFCH$="H"ORCH$="F"THENGOSUB36ELSEER=1:GOTO195
  17. 16 LC$="\":GOTO9 'DONE COPYING H/F
  18. 17 IF LC$<>CHR$(10)ANDLC$<>CHR$(175)ANDLC$<>"\"THEN25
  19. 18 IFCH$<>">"THEN25
  20. 19 'HANDLE FORMAT LINES
  21. 20 LINEINPUT#1,FM$:GOSUB49:GOSUB133:CH$=CHR$(10):GOTO8
  22. 21 FP=INSTR(FM$,S$):IFFP=0THENRETURN
  23. 22 FV=VAL(MID$(FM$,FP+LEN(S$))):FC$=MID$(FM$,FP+LEN(S$),1):IFS$="H="ORS$="F="ORS$=",F="THENRETURN
  24. 23 IFFC$="Y"THENFV=1ELSEIFFC$="N"THENFV=0
  25. 24 RETURN
  26. 25 IFCH$=CHR$(13)THEN8 'IGNORE CR
  27. 26 'HANDLE CURRENT CHARACTER
  28. 27 IFCH$<>CHR$(10)THEN30
  29. 28 IFLP>1THENLP=LP-1
  30. 29 GOSUB104:GOTO8 'NEW LINE
  31. 30 IFCH$=CHR$(175)THENGOSUB97:GOTO8 'NEW PARAGRAPH
  32. 31 IFCH$<>"\"THEN34
  33. 32 IFLC=0THENGOSUB93
  34. 33 GOSUB84:GOTO8
  35. 34 GOSUB69 'PUT CHAR IN LINE BUFFER
  36. 35 GOTO8 'LOOP FOR NEXT CHAR
  37. 36 ER=1:I1=0:IFCH$="F"THENI1=1
  38. 37 CH$=INPUT$(1,1):IFCH$="O"THENI2=0ELSEIFCH$="E"THENI2=1ELSEIFCH$="S"THENI2=2ELSE195
  39. 38 CH$=INPUT$(1,1):IFCH$<>">"THEN195
  40. 39 LINEINPUT#1,HF$(I1,I2,0):FORI=1TO16:HF$(I1,I2,I)="":BC=1
  41. 40 CH$=INPUT$(1,1):IFCH$="["THENBC=BC+1ELSEIFCH$="]"THENBC=BC-1
  42. 41 IFBC=0THENHL(I1,I2)=I-1:I=16:GOTO43
  43. 42 HF$(I1,I2,I,I)+CH$:IFCH$<>CHR$(10)THEN40
  44. 43 NEXTI:IFCH$<>"]"THENER=2:GOTO195ELSERETURN
  45. 44 IFP=NTHENRETURN
  46. 45 IFCM=0THEN48
  47. 46 IFVL=-1THENPRINT#2,CHR$(13);ELSEPRINT#3,CHR$(13);
  48. 47 IFLF=YTHENIFVL=-1THENPRINT#2,CHR$(10);ELSE PRINT#3,CHR$(10);
  49. 48 LC=LC+1:RETURN
  50. 49 IF LEFT$(FM$,1)="*" THEN RETURN
  51. 50 FM$=" "+FM$:S$="PL=":GOSUB21:IFFP<>0THENPL=FV
  52. 51 S$="LM=":GOSUB21:IFFP<>0THENLM=FV
  53. 52 S$="RM=":GOSUB21:IFFP<>0THENRM=FV
  54. 53 S$="TM=":GOSUB21:IFFP<>0THENTM=FV
  55. 54 S$="BM=":GOSUB21:IFFP<>0THENBM=FV
  56. 55 S$="LS=":GOSUB21:IFFP<>0THENLS=FV
  57. 56 S$="PF=":GOSUB21:IFFP<>0THENPF=FV
  58. 57 S$="J=":GOSUB21:IFFP<>0THENJ=FV
  59. 58 S$=" C=":GOSUB21:IFFP<>0THENC=FV
  60. 59 S$=",C=":GOSUB21:IFFP<>0THENC=FV
  61. 60 S$="FR=":GOSUB21:IFFP<>0THENFR=FV
  62. 61 S$="VC=":GOSUB21:IFFP<>0THENVC=FV
  63. 62 S$=BP=":GOSUB280:IFFP<>0THENP=FV":S$="WS=":GOSUB21:IFFP<>0THENWS=FV
  64. 63 S$="H=":GOSUB21:IFFP<>0THENIFFV<>0 THENH$=STR$(FV)ELSEH$=FC$
  65. 64 S$=" F=":GOSUB21:IFFP<>0THENIFFV<>0THENF$=STR$(FV)ELSEF$=FC$
  66. 65 S$=",F=":GOSUB21:IFFP<>0THENIFFV<>0THENF$=STR$(FV)ELSEF$=FC$
  67. 66 S$="PN=":GOSUB21:IFFP<>0THENPN=FV
  68. 67 S$="PI=":GOSUB21:IFFP<>0THENPI=FV
  69. 68 RETURN
  70. 69 IFLP=0THENMID$(LB$,1,LM)=SPACE$(LM):LP=LM+1
  71. 70 IFCH$<>CHR$(9)THEN73
  72. 71 CH$=" ":PO=8-((LP-1)MOD8):FORI=1TOPO:GOSUB83:IFLP=RM+1THENI=PO
  73. 72 NEXT:GOTO74
  74. 73 GOSUB83
  75. 74 IFLP<RM+1THENRETURN
  76. 75 IFMID$(LB$,RM,1)=" "THEN82
  77. 76 IFMID$(LB$,(RM-1),1)<>" "THEN78
  78. 77 XC$=MID$(LB$,RM,1):GOTO81
  79. 78 II=RM:FORI=RM-1TOLM+1STEP-1:IFMID$(LB$,I,1)=" "ORMID$(LB$,I,1)="-"THENII=I:I=1
  80. 79 NEXT:IFII=RMTHEN77
  81. 80 XC$=MID$(LB$,(II+1),(RM-II)):MID$(LB$,(II+1),(RM-II))=SPACE$(RM-II)
  82. 81 LP=RM-1:GOSUB104:MID$(LB$,LM+1,LEN(XC$))=XC$:LP=LM+LEN(XC$)+1:RETURN
  83. 82 LP=RM-1:GOSUB104:RETURN
  84. 83 MID$(LB$,LP,1)=CH$:LP=LP+1:RETURN
  85. 84 IFHF=1THENRETURN
  86. 85 IFVL>-1THENGOSUB191
  87. 86 GOSUB185:IFLC=BM-HLTHEN88
  88. 87 K=BM-HL-LC:FORI=1TO K:GOSUB44:NEXT
  89. 88 GOSUB157'DO FOOTER
  90. 89 IFLC<PLTHENFORI=LCTOPL-1:GOSUB44:NEXT
  91. 90 PN=PN+1:LC=0:IFPP=NOREOF(1)THENRETURN
  92. 91 PRINT:PRINT"Press any key to resume printing..."
  93. 92 IFINKEY$=""THEN92ELSERETURN
  94. 93 IFTM=0THEN95
  95. 94 FORI=1TOTM:GOSUB44:NEXT
  96. 95 GOSUB146'DO HEADER
  97. 96 RETURN
  98. 97 CH$=" ":IFPI=0THEN99
  99. 98 FORI=1TOPI:GOSUB69:NEXT
  100. 99 GOSUB174:IFLC=TM+HLORLC=0ORPF<2THEN102
  101. 100 GOSUB185:FORI=2TOPF*LS:GOSUB44:IFLC=>BM-HLTHENI=PF
  102. 101 NEXT
  103. 102 GOSUB185:IFLC=>BM-HL-LSANDWS=YTHENGOSUB84
  104. 103 CH$=" ":RETURN
  105. 104 IFP=NORCM=0THENLP=0:GOTO126
  106. 105 IFLM>=RMORTM>=BMORBM>PLTHENER=4:GOTO195
  107. 106 IFVC=NTHEN109
  108. 107 IFVL=-1THENOPEN"VCTEXT"FOROUTPUTAS 3:VL=0
  109. 108 GOTO111
  110. 109 IFVL=-1THEN111
  111. 110 CLOSE3:IFVL=0THENVL=-1
  112. 111 IFMID$(LB$,LP,1)<>" "THEN113
  113. 112 LP=LP-1:IFLP=0THEN127ELSE111
  114. 113 IFC=NTHEN115
  115. 114 L=(RM-LP-1)\2:PB$=SPACE$(LM)+SPACE$(L)+MID$(LB$,(LM+1),(LP-LM)):LP=LEN(PB$):GOTO127
  116. 115 IFFR=NTHEN117
  117. 116 PB$=SPACE$(LM)+SPACE$(RM-LP-1)+MID$(LB$,(LM+1),(LP-LM)):LP=RM-1:GOTO127
  118. 117 IFJ=NORCH$=CHR$(10)THEN126
  119. 118 R=RM-1-LP:IFR<1THEN126
  120. 119 FORI=LM+1TORM:IFMID$(LB$,I,1)<>" "THENL=I:I=RM
  121. 120 NEXT:IFINSTR(MID$(LB$,L,(LP-L))," ")=0THEN126
  122. 121 JP=LP
  123. 122 JP=JP-1:IFJP=LTHEN121
  124. 123 IFMID$(LB$,JP,1)<>" "THEN122
  125. 124 JP=JP-1:IFMID$(LB$,JP,1)=" "THEN124
  126. 125 JP=JP+1:LL=LEN(LB$):LB$=LEFT$(LB$,JP)+" "+MID$(LB$,(JP+1),(LL-JP-1)):LP=LP+1:R=R-1:IFR<>0THEN122
  127. 126 PB$=LB$
  128. 127 IFLC=0ANDHF=0THENGOSUB93
  129. 128 IFLP=0THEN131
  130. 129 FORI=1TOLP:IFVL=-1THENPRINT#2,MID$(PB$,I,1);ELSEPRINT#3,MID$(PB$,I,1);
  131. 130 NEXT
  132. 131 FORIX=1TOLS:GOSUB44:IFHF=0THENGOSUB185:IFLC=>BM-HLTHENGOSUB84:IX=LS
  133. 132 NEXTIX
  134. 133 LB$=SPACE$(140):LP=LM+1:RETURN
  135. 134 IFLP>LM+1THENGOSUB104
  136. 135 IFLC<>0THENGOSUB84
  137. 136 CLOSE:ONERRORGOTO137:KILL"VCTEXT.DO"
  138. 137 MENU
  139. 138 OPEN"COM:87I1D"FOROUTPUTAS2:RETURN
  140. 139 FILES:PRINT:INPUT"Print which file";FN$:OPENFN$FORINPUTAS1:PRINT:INPUT"Pause between pages (Y/N)";A$:IFA$="Y"ORA$="y"THENPP=Y
  141. 140 PRINT:INPUT"Print to (S)erial or (P)arallel port";A$:IFA$="S"ORA$="s"THENSP=Y
  142. 141 PRINT:PRINT"Need a line-feed character":INPUT"with each carriage return (Y/N)";A$:IFA$="Y"ORA$="y"THENLF=Y
  143. 142 PRINT:INPUT"Did you put 'copy markers' in the text (Y/N)";A$:IFA$="Y"ORA$="y"THENCM=0ELSECM=-1
  144. 143 PRINT:PRINT"Please wait...":RETURN
  145. 144 DEFINTA-Z:Y=1:N=0:VL=-1:PL=66:TM=6:BM=60:VC=N:H$="1":F$="1":PN=1:PI=5:LC$=CHR$(92):LB$=SPACE$(140):DIM HF$(1,2,16),HL(1,2):LP=1
  146. 145 LM=12:RM=72:LS=1:PF=1:J=Y:C=N:FR=N:P=Y:WS=Y::RETURN
  147. 146 IF H$="N" THENRETURNELSEI1=0
  148. 147 HP=VAL(H$):IFHP=0THEN153
  149. 148 IFPN<HPTHENRETURN
  150. 149 IFPNMOD2=1THEN152
  151. 150 IFHL(I1,1)<>0THENI2=1:GOTO163
  152. 151 IFHL(I1,2)<>0THENI2=2:GOTO163ELSERETURN
  153. 152 IFHL(I1,0)<>0THENI2=0:GOTO163ELSE151
  154. 153 IFH$="Y"THEN149
  155. 154 IFH$="O"THENF$="E":GOTO152
  156. 155 IFH$="E"THENH$="O":GOTO150
  157. 156 RETURN
  158. 157 IFF$="N"THENRETURNELSEI1=1
  159. 158 HP=VAL(F$):IFHP<>0THN1920
  160. 159 IFF$="Y"THEN149
  161. 160 IFF$="O"THENF$="E":GOTO152
  162. 161 IFF$="E"THENF$="O":GOTO150
  163. 162 RETURN
  164. 163 X1=I1:X2=I2:GOSUB185:Z=HL:GOSUB174:IFZ+HL>BM-TMTHENER=4:GOTO195
  165. 164 I1=X1:I2=X2:FM$=HF$(I1,I2,0):X1=LM:X2=RM:X3=LS:X4=PF:X5=J:X6=C:X7=FR:X8=P:X9=WS:XP=LP:XB$=PB$:ZB$=LB$:GOSUB145:GOSUB49:HF=1:FORZ=1TO16:LB$=HF$(I1,I2,Z):IFLEN(LB$)=0THENZ=16:GOTO173
  166. 165 IFLEFT$(LB$,1)=CHR$(13)THENFORZZ=1TOLS:GOSUB44:NEXT:GOTO173
  167. 166 LB$=SPACE$(LM)+LB$:PB=INSTR(LB$,"[P>"):IFPB=0THEN172ELSEER=3
  168. 167 PE=INSTR(PR,LB$,"]"):IFPE=0ORPE=PB+3THEN195
  169. 168 FORI=PB+3TOPE-1:IFMID$(LB$,I,1)<>"#"THEN195
  170. 169 NEXT:LB=PE-PB+1:ND=LB-4:IFND<1ORND>5THEN195
  171. 170 PN$=STR$(PN):PN$=RIGHT$(PN$,LEN(PN$)-1):IFLEN(PN$)>NDTHENPN$=RIGHT$(PN$,ND)
  172. 171 LB$=LEFT$(LB$,PB-1)+PN$+MID$(LB$,(PE+1))
  173. 172 LP=INSTR(LB$,CHR$(13))-1:GOSUB104
  174. 173 NEXT:LM=X1:RM=X2:LS=X3:PF=X4:J=X5:C=X6:FR=X7:P=X8:WS=X9:LP=XP:PB$=XB$:LB$=ZB$:XB$="":ZB$="":HF=0:RETURN
  175. 174 HL=0:IFH$="N"THENRETURNELSEI1=0
  176. 175 HL=0:IFF$="N"THENRETURNELSEI1=1
  177. 176 IFPN<HPTHENRETURN
  178. 177 IFPNMOD2=1THENRETURN
  179. 178 HL=HL(I1,1):IFHL<>0THENRETURN
  180. 179 HL=HL(I1,2):RETURN
  181. 180 HL=HL(I1,0):IFHL<>0THENRETURNELSE179
  182. 181 IFH$="Y"THEN177
  183. 182 IFH$="0"THEN180
  184. 183 IFH$]"E"THEN178
  185. 184 RETURN
  186. 185 HL=0:IFF$="N"THENRETURNELSEI1=1
  187. 186 HP=VAL(F$):IFHP<>0THEN176
  188. 187 IFH$="Y"THEN177
  189. 188 IFH$="O"THEN180
  190. 189 IFH$="E"THEN178
  191. 190 RETURN
  192. 191 CLOSE3:VL=-1:IFLC=0THENRETURN
  193. 192 GOSUB185:FORI=1TO(BM-LC-HL)\2:GOSUB44:NEXT:OPEN"VCTEXT"FORINPUTAS3
  194. 193 VC$=INPUT$(1,3):PRINT#2,VC$;:IFNOTEOF(3)THEN193
  195. 194 CLOSE3:RETURN
  196. 195 PRINT:IFER=1THENPRINT"Header or footer begins: [";CH$
  197. 196 IFER=2THENPRINT"Header or footer too long."
  198. 197 IFER=3THENPRINT"Page number format error."
  199. 198 IFER=4THENPRINT"Margin format error."
  200. 199 CLOSE:END
  201.