20 L$=SYS(CHR$(7%)) : K7$=L$ 10020 ON ERROR GOTO 11220 10060 DIM #4%, P0%(2%), P1$(31%)=16%, P2$(63%)=4%, P3%(63%,8%) 10080 DIM Q%(31%), Q0%(63%) 10100 DIM M%(30%) 10120 C$='!RDF"'+"'" 10140 OPEN 'KB:' AS FILE #3%, RECORD SIZE 300% 10160 OPEN 'LEADS0:FUNCS.VCA' FOR INPUT AS FILE #4% 10180 IF L$='' THEN PRINT 'FILE'; : INPUT LINE L$ 10200 I8%=INSTR(1%,L$,'.') : I9%=INSTR(1%,L$,'=') 10220 IF I9% THEN I$=LEFT(L$,I9%-1%) : O$=RIGHT(L$,I9%+1%) : GOTO 10260 10240 I$=L$ : IF I8% THEN O$=LEFT(L$,I8%-1%) ELSE O$=I$ 10260 I$=I$+'.LD3' UNLESS INSTR(1%,I$,'.') 10280 O$=O$+'.BAS' UNLESS INSTR(1%,O$,'.') 10300 OPEN I$ FOR INPUT AS FILE #1% : OPEN O$ FOR OUTPUT AS FILE #2% 10320 Q%(0%),Q1%(0%)=-1% 10340 L0$='' 10360 INPUT LINE #1%, L$ : L0$=L0$+L$ : GOTO 10360 UNLESS ASCII(RIGHT(L$,LEN(L$))) 10380 L$=CVT$$(L0$,-1%) : L%=LEN(L$) : FIELD #3%, L% AS L1$ : LSET L1$=L$ 10400 FOR L0%=0% TO L%-1% : FIELD #3%, L0% AS L2$, 1% AS I8$ : ON 1%+INSTR(1%,C$,I8$) GOTO 10520,10560,10420,10440,10460,10500,10500 10420 FIELD #3%, L0% AS L2$, 3% AS I8$ : IF I8$='REM' THEN 10560 ELSE 10520 10440 FIELD #3%, L0% AS L2$, 4% AS I8$ : IF I8$='DATA' THEN 10540 ELSE 10520 10460 FIELD #3%, L0% AS L2$, 2% AS I8$, 3% AS I9$ : GOTO 10520 IF I8$<>'FN' OR I9$='END' : L0%=L0%+1% : F$=FNC$ : I8$=FNC$ : IF I8$>='0' AND I8$<='9' THEN F$=F$+I8$ : I8$=FNC$ 10480 F$=F$+I8$ IF I8$='$' OR I8$='%' : GOSUB 10700 : GO TO 10520 10500 Q$=I8$ : I8%=I8% UNTIL FNC$=Q$ : GOTO 10520 10520 NEXT L0% 10540 L2$=L1$ 10560 I8%=VAL(L2$) : GOTO 10340 10580 PRINT #2%, L2$ : GOTO 10340 10620 DEF FNL%(I%,I8%) 10640 IF Q0%(I%)=0% THEN Q%(P3%(I%,0%)),Q0%(I%)=-1% : I9%=FNL%(P3%(I%,I8%),I8%) FOR I8%=1% UNTIL P3%(I%,I8%)=0% 10660 FNEND 10700 GOTO 10720 IF F$=P2$(I8%) FOR I8%=1% TO P0%(2%) : RETURN 10720 I8%=FNL%(I8%,I8%) 10740 RETURN 10760 DEF FNC$ 10780 L0%=L0%+1% 10800 GOTO 10560 IF L0%=L% 10820 FIELD #3%, L0% AS L2$, 1% AS I8$ 10840 FNC$=I8$ : C%=ASCII(I8$) 10860 FNEND 10880 CLOSE #1%, #2%, #3% 10920 I8%=0% 10940 I8$='PK'+NUM$(I8%)+':' : OPEN I8$ AS FILE #1% : PUT #1%, RECORD 4%, COUNT 0% : I8% = I8% + 1% : CLOSE 1% : GO TO 10940 10960 CHANGE SYS(CHR$(6%)+CHR$(14%)) TO M% : I8$=CHR$(3%)+'HELLO'+NUM$(M%(8%))+'/'+NUM$(M%(7%))+CHR$(27%) + RAD$(M%(9%)+SWAP%(M%(10%))) + RAD$(M%(11%)+SWAP%(M%(12%)))+CHR$(27%) 10980 FIELD #1%, LEN(I8$) AS I9$ : LSET I9$=I8$ : PUT #1%, RECORD 9%, COUNT LEN(I8$) : SLEEP 2% 11000 I8$ = FNO$('SWITCH BAS4F') : I8$=FNO$('OLD'+CVT$$(O$,6%)) 11020 I8$=FNO$('APPEND'+P1$(I%)) IF Q%(I%) FOR I%=1% TO 31% : I8$=FNO$('APPEND'+P1$(0%)) : I8%=INSTR(1%,O$,'.') : C$=LEFT(O$,I8%-1%) 11024 I8$=FNO$('COMPILE'+C$) 11040 I8$=FNO$('BYE/F') 11045 PUT #1%, RECORD 4%, COUNT 0% : SLEEP 5% : GO TO 11045 11060 CLOSE #1% 11080 KILL K7$+'.LD1' : KILL K7$+'.LD3' : PRINT 'COMPILATION COMPLETED AT ';TIME$(0%) : CHAIN C$ 11120 DEF FNO$(L$) 11140 GET #1% : FIELD #1%, RECOUNT AS I8$ 11160 PUT #1%, RECORD 6% 11180 I8%=1%+LEN(L$) : FIELD #1%, I8% AS I8$ : LSET I8$=L$+CHR$(13%) : PUT #1%, RECORD 10%, COUNT I8% : SLEEP 5% 11200 FNEND 11220 IF ERR=11% AND ERL=10360% THEN RESUME 10880 11240 IF ERR=52% AND ERL=10560% THEN RESUME 10580 11260 IF ERR=3% AND ERL=11160% THEN SLEEP 5% : RESUME 11140 11265 IF ERR = 5% AND ERL = 10940% THEN RESUME 10960 11280 IF ERR=28% AND ERL=11160% THEN FIELD #1%, 1% AS I8$ : LSET I8$=CHR$(3%) : PUT #1%, RECORD 8%, COUNT 1% : SLEEP 1% : RESUME 11140 11300 IF ERR=11% AND ERL=11140% THEN RESUME 11160 11320 IF ERR=8% AND ERL=10940% THEN I8%=I8%+1% : RESUME 10940 11330 IF ERR=5% AND ERL=11045% THEN RESUME 11060 11340 IF ERR=3% AND ERL=11045% THEN SLEEP 5% : RESUME 11045% 11999 ON ERROR GOTO 0 32766 STOP 32767 END