1 REM Ins{nd av Leopold Lundstr|m <2694> 1986-09-05 09.18.55 (DUMP)
1 REM TVMAIN4F 860730 <2694> LL
10 ; 'H[R SKALL TVRAD10.BAC "MERGAS" IN'
11 ; 'SPAR SEDAN MED SAVE TVMAIN' : STOP
1000 IF F% THEN 1200 ELSE F%=-1%
1010 DIM C$=1%,C1$=500%,Q$=2000%,F$=20%,X$=20%,S$=20%,M4$=60%,A$=4%,B$=41%,[$=1%
1020 M9%=FNA%(65063%) : M9%=M9%-FNA%(65056%) : M9%=M9%-350%
1050 DIM M$=M9%
1060 S$=' ' : A$=CUR(23%,0%) : B$=CHR$(13%)+SPACE$(39%)+CHR$(13%) : R%=70% : I%=65063%
1090 I%=FNA%(I%+2%) : IF I%=0% THEN 1130
1100 IF FNA%(I%)=19954% THEN M8%=I%
1105 IF FNA%(I%)=20978% THEN Q8%=I%
1110 IF FNA%(I%)=17170% THEN L8%=I%
1120 GOTO 1090
1130 IF M8%=0% OR L8%=0% THEN ; "?Hittar ej variablerna" : STOP
1140 M7%=FNA%(M8%+6%) : L7%=FNA%(L8%+6%) : Q7%=FNA%(Q8%+6%) : N9%=FNA%(65056%)
1160 POKE 65056%,N9%+12%,SWAP%(N9%+12%)
1170 DEFFNA%(A%)=PEEK(A%)+SWAP%(PEEK(A%+1%))
1180 DEFFNR%(A%)=A%-(32% AND (A%>95%))
1200 ONERRORGOTO 3300
1210 A%=0% : P%=0% : L%=0% : S%=0%
1230 GOSUB 1310 : GOSUB 1610 : IF E% THEN 1230
1260 GOSUB 1690 : GOSUB 1560 : GOTO 1230
1310 POKE 63488%,S%,SWAP%(S%),P%,SWAP%(P%),M7%,SWAP%(M7%),LEN(M$),SWAP%(LEN(M$))
1320 L%=CALL(63504%) : RETURN
1350 E%=-1%
1360 IF C%<>8% AND C%<>9% THEN 1480
1370 P%=P%+2%*C%-17%
1390 IF PEEK(M7%+P%)=10% THEN 1370 ELSE 1540
1480 IF (C%=13% AND A%=0%) OR C%=94% THEN P1%=P% : ON (C% AND 1%)+1% GOSUB 3740,3690 : P%=P1% : GOTO 1540
1481 IF C%=64% OR C%=0% THEN GOSUB 3820 : A%=0% : GOTO 1540
1482 IF C%=30% THEN P1%=P% : GOSUB 3690 : P%=P1% : GOTO 1540
1483 IF NOT A% IF C%=60% OR C%=43% OR C%=95% THEN GOSUB 3835 : E%=-1% : RETURN
1485 IF C%=1% OR C%=19% THEN A%=C%-1% : GOTO 1540
1487 IF C%=17% P%=0% : GOTO 1560
1488 IF C%=23% P%=LEN(M$) : GOTO 1560
1489 IF C%=27% THEN D%=P% : F1%=-1% : RETURN
1490 IF C%=4% IF F1%<>0 THEN N%=D%-P% : F1%=0% : GOSUB 1980 : GOTO 1540 ELSE RETURN
1500 IF C%=2% THEN P1%=(L%+S%)/2% : GOSUB 3740 : P%=P1% : GOTO 1540
1510 IF C%=12% THEN GOSUB 3790 : RETURN
1520 IF ((C%=32% AND A%=0%) OR C%=5%) AND L% P1% GOSUB 3690 : N%=N%+1% : GOTO 2344 ELSE 1710
2347 N%=M9%-LEN(M$) : GOTO 1710
2370 ; A$;MID$(C1$,2%,1%);N%; : GOTO 1710
2390 ON INSTR(1%,'SRJ;',C$)+1% GOTO 3280,2420,2420,2680,2880
2420 Z3%=INSTR(Z1%,C1$,CHR$(9%)) : IF Z3%>Z1% THEN S$=MID$(C1$,Z1%,Z3%-Z1%)
2440 Z1%=Z3%+1% : Z3%=INSTR(Z1%,C1$,CHR$(9%)) : IF Z3%=0% THEN Z3%=Z1%
2450 P1%=INSTR(P%+1%,M$,S$)-1%
2460 IF P1%<0% THEN 3320
2465 IF C$='R' THEN 2580
2480 P%=P1%+LEN(S$) : GOTO 1700
2580 P%=P1% : IF P%>L% GOSUB 3790
2585 IF N%<0% GOSUB 1310 : ; A$'byta? (J/N)'; : GET [$ : IF (ASC([$) AND 95%)<>74% THEN P%=P%+LEN(S$) : GOTO 2450
2590 M5%=Z3%-Z1%-LEN(S$) : GOSUB 3350 : IF E% THEN RETURN ELSE GOSUB 3560
2620 IF N%<0% THEN N%=N%+1% ELSE N%=N%-1%
2630 IF N%<>0% THEN 2450
2640 Z1%=Z3%+1% : GOTO 1700
2680 P%=0% : GOTO 1700
2695 IF N%<0% THEN M5%=P%-P1% : P%=P1% ELSE M5%=P1%-P%
2696 N1%=M5% : IF N1%>2000% THEN ; A$;"Fel! Fler tecken {n 2000"; : RETURN
2697 N2%=Q7% : N3%=M7%+P% : N4%=176% : GOSUB 3640 : POKE Q8%+8%,M5%,SWAP%(M5%) : GOTO 1700
2830 IF N%<0% THEN M5%=P1%-P% : P%=P1% ELSE M5%=P%-P1%
2840 GOSUB 3350 : IF E% THEN RETURN ELSE 1700
2880 C$=CHR$(FNR%(ASC(MID$(C1$,Z1%,1%)))) : Z1%=Z1%+1%
2890 ON INSTR(1%,'YMSP',C$)+1% GOTO 3252,2895,3103,3121,3126
2895 IF N8%=9999% X$=''
2900 ; A$;N8%;' Infil: ';
2910 INPUTLINE F$ : F$=LEFT$(F$,LEN(F$)-2%)
2912 IF F$='' IF LEN(X$) THEN F$=X$ : ; F$ : N8%=N8%+1% : GOTO 2930 ELSE 3060
2913 IF LEN(F$)>3% IF LEFT$(F$,4%)='CAS:' OR LEFT$(F$,4%)='cas:' THEN N8%=-1% : GOTO 2930
2915 IF INSTR(1%,F$,'.')=0% THEN F$=F$+'.TXT'
2916 IF F$<>X$ THEN X$=F$
2920 ONERRORGOTO 3050
2923 ; A$;N8%' Vilket startblock'; : INPUT C1$ : IF C1$='' THEN N8%=-1% ELSE N8%=VAL(C1$)
2930 OPEN F$ ASFILE 1%
2941 IF N8%=-1% GOTO 2950
2943 ; A$;N8%; : Z%=CALL(28666%,1%)+CALL(28668%,N8%)
2944 N7%=N7%+1% : IF N7%=5% THEN 3050
2945 IF LEFT$(Q0$,7%)=STRING$(6%,0%)+CHR$(3%) THEN N8%=9999% : GOTO 3050
2946 IF C1$=Q0$ THEN 2943 ELSE C1$=Q0$ : GOSUB 4000 : GOTO 3040
2950 INPUTLINE #1%,C1$
2960 M6%=LEN(M$)+LEN(C1$)
2970 IF M6%>M9% THEN CLOSE 1% : GOTO 3530
2980 N1%=LEN(C1$) : N2%=M7%+LEN(M$) : N3%=FNA%(L8%+6%) : N4%=176% : GOSUB 3640
3030 POKE M8%+8%,M6%,SWAP%(M6%)
3040 IF N8%>=0 IF M9%-M6%>500% THEN N8%=N8%+1% : N7%=0% : GOTO 2943 ELSE 3050 ELSE 2950
3050 CLOSE 1% : IF ERRCODE=21% THEN 3090 ELSE IF ERRCODE<>34% GOTO 3300
3060 ; B$;
3070 ONERRORGOTO 3300 : P%=0% : POKE 65080%,-1% : RETURN
3090 ; A$;"Hittar ej filen: ";F$; : GOTO 3070
3103 IF P%=LEN(M$) THEN RETURN
3105 C1$=M4$ : Z2%=LEN(C1$) : Z1%=1 : GOTO 1710
3121 P%=1% : P1%=P% : N%=0%
3122 IF P1% P%-(L%-S%)/2% AND P1%>0% GOSUB 3740 : GOTO 3805
3810 S%=P1% : RETURN
3820 IF LEN(M$)-P%<3% THEN P%=LEN(M$) : RETURN
3821 P1%=P%+4% : GOSUB 3740
3825 N%=P1% : GOSUB 3690
3827 IF P1%-N%Z2% THEN RETURN ELSE IF A% GOTO 1860
1720 C$=CHR$(FNR%(ASC(MID$(C1$,Z1%,1%)))) : Z1%=Z1%+1%
1740 IF C$<' ' THEN 1700
1750 IF C$=' ' THEN 1710
1760 IF NOT (C$='-' OR C$>='0' AND C$<='9') THEN 1835
1780 Z3%=Z1%-1% : N%=-1%
1790 C$=MID$(C1$,Z1%,1%) : Z1%=Z1%+1%
1800 IF C$>='0' AND C$<='9' THEN 1790
1810 Z1%=Z1%-1% : ONERRORGOTO 1825 : N%=VAL(MID$(C1$,Z3%,Z1%-Z3%))
1825 ONERRORGOTO 3300 : A9%=1% : GOTO 1710
1835 IF C$="'" C1$='' : FOR I%=1% TO ABS(N%) : C1$=C1$+' ' : NEXT I% : C1$=C1$+CHR$(9%) : Z1%=1% : Z2%=1% : GOTO 1910
1840 ON INSTR(1%,'IGDM',C$)+1% GOTO 2049,1860,1962,1980,2037
1860 IF A9%=0% THEN 1910
1870 M5%=1% : GOSUB 3350 : IF E% THEN RETURN
1890 POKE M7%+P%,(N% AND 127%) : P%=P%+1% : GOTO 1700
1910 Z3%=INSTR(Z1%,C1$,CHR$(9%)) : M5%=Z3%-Z1%
1930 GOSUB 3350 : IF E% THEN RETURN ELSE GOSUB 3560 : Z1%=Z3%+1% : GOTO 1700
1962 M5%=LEN(Q$) : GOSUB 3350 : IF E% THEN RETURN
1963 N1%=M5% : N2%=M7%+P% : N3%=Q7% : N4%=176% : GOSUB 3640 : P%=P%+M5% : GOTO 1700
1980 Z3%=P%+N% : IF Z3%<0% THEN Z3%=0% ELSE IF Z3%>LEN(M$) THEN Z3%=LEN(M$)
2000 M5%=-ABS(P%-Z3%) : IF Z3%