1 REM Simple preprocessor. Public domain. Author: Tim Peters; CIS 72227,2416 2 MAXFILES=2:CLEAR2E3:DEFINTA-Z:GOTO34 3 LINEINPUT#1,I$:IL=IL+1:PRINT@41,"In line"IL;:RETURN 4 T$=Z$+S$+O$:FORK=0TOS:L=INSTR(S$(K),T$):IFLTHENL=L+LEN(T$):V$=MID$(S$(K),L,INSTR(L,S$(K),Z$)-L):K=S 8 NEXT:RETURN 9 GOSUB4:IFLTHENCLS:PRINTRV$S$NV$" already has value "RV$V$NV$:GOTO33 11 IFLEN(S$)+LEN(V$)+LEN(S$(S))>253THENS=S+1:S$(S)=Z$ 12 S$(S)=Z$+S$+O$+V$+S$(S):RETURN 13 IFI$=""ORLEFT$(I$,2)="/ "THENRETURN 14 IFLEFT$(I$,1)<>"/"THENOL=OL+1:RETURN 15 I=INSTR(I$,"--"):IFITHENI$=LEFT$(I$,I-1) 16 J=LEN(I$):FORI=JTO1STEP-1:IFMID$(I$,I,1)<>" "THENIFI=JTHENELSEI$=LEFT$(I$,I)ELSENEXT 18 I=INSTR(I$," "):IFITHENV$=MID$(I$,I+1):I=I-2ELSEV$=MID$(STR$(OL+1),2):I=LEN(I$)-1 20 S$=MID$(I$,2,I):GOTO9 21 PRINT"of"IM:IFI$=""THENRETURN 22 IFLEFT$(I$,1)="/"THENRETURN 23 OL=OL+1:PRINT@81,"Out line"OL"of"OM:PRINT#2,MID$(STR$(OL),2);:I=0 25 I=I+1:J=INSTR(I,I$,"["):IFJTHENPRINT#2,MID$(I$,I,J-I);ELSEPRINT#2,MID$(I$,I):RETURN 27 I=INSTR(J,I$,"]"):IFI=0THEN31 28 S$=MID$(I$,J+1,I-J-1):GOSUB4:IFLTHENPRINT#2,V$;:GOTO25 29 CLS:PRINT"Symbol unknown:":PRINTLEFT$(I$,J)RV$S$NV$MID$(I$,I):GOSUB33:PRINT#2,"["S$"]";:GOTO25 31 PRINT#2,MID$(I$,J):CLS:PRINT"Missing ]:":PRINTLEFT$(I$,J-1)RV$MID$(I$,J)NV$ 33 BEEP:PRINT:PRINT"In line"IL:PRINT"Hit key or BREAK"INPUT$(1):CLS:RETURN 34 DIMI,J,I$,S$(9):Z$=CHR$(0):O$=CHR$(1):S$(0)=Z$:CLS:FILES:INPUT"Source file";F$:OPENF$FORINPUTAS1 38 CLS:RV$=CHR$(27)+"p":NV$=CHR$(27)+"q":FORX=0TO-1STEP-1:GOSUB3:GOSUB13:X=EOF(1):NEXT:CLS:IM=IL:OM=OL:IL=0:OL=0 43 CLOSE:OPENF$FORINPUTAS1:OPEN"XX"FOROUTPUTAS2:FORX=0TO-1STEP-1:GOSUB3:GOSUB21:X=EOF(1):NEXT:CLOSE:END