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%LEN(M$) THEN P%=LEN(M$) 1560 IF P%>L% OR P%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%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%CHR$(10%) THEN ; CHR$(7%);A$;'Line Feed saknas!!'; : P%=P1% : RETURN 3140 IF N%>0% THEN ; ' Utfil:'; ELSE RETURN 3150 IF INP(56%)>127% THEN 3150 3160 IF INP(56%)<128% THEN 3160 3170 IF INP(56%)<>137% THEN 3210 3180 GET X$ : ; F$; : GET X$ 3190 IF ASC(X$)<>13% THEN 3130 3200 X$=F$ : GOTO 3240 3210 INPUTLINE X$ 3220 X$=LEFT$(X$,LEN(X$)-2%) : IF F$='' THEN F$=X$ 3230 IF X$='' THEN ; B$; : RETURN 3240 PREPARE X$ ASFILE 1% : IF C$<>'P' THEN ; #1%M$; : GOTO 3250 3241 P%=1% : P1%=1% : N%=0% 3242 GOSUB 3690 : ; #1%SPACE$(VAL(S$));MID$(M$,P%,P1%-P%) 3243 N%=N%+1% : IF N%=65% THEN FOR N%=66% TO 72% : ; #1% : NEXT N% : N%=0% 3244 IF P1%M9% THEN 3530 ELSE IF M9%-M6%<200% ; A$;M9%-M6%' tecken kvar'; : B$='' 3380 N1%=LEN(M$)-P% : N2%=M7%+M6%-1% 3400 N3%=M7%+LEN(M$)-1% : N4%=184% : GOSUB 3640 : GOTO 3510 3440 IF LEN(M$)+M5%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%CHR$(10%) THEN ; A$;CHR$(7%);'LF!!!'; : P%=P1% : RETURN 3830 ; A$;'L{ngd';P%-N%; : RETURN 3835 IF P%=0% OR P%>LEN(M$)-3% THEN RETURN 3836 N1%=PEEK(M7%+P%-1%) : N2%=PEEK(M7%+P%) 3837 IF C%<>43% THEN 3860 3840 IF N1%=45% THEN C1$=' -D2D'+CHR$(9%) : GOSUB 1690 : RETURN 3841 IF N2%=13% THEN C1$=' 2DI '+CHR$(9%) : GOSUB 1690 3842 RETURN 3860 IF N2%=32% THEN C1$=' DI'+CHR$(13%,10%,9%) : GOSUB 1690 : RETURN 3861 IF N1%=32% THEN C1$=' -DI'+CHR$(13%,10%,9%) : GOSUB 1690 : RETURN 3862 IF N1%>63% AND N2%>63% THEN C1$=' I-'+CHR$(13%,10%,9%) : GOSUB 1690 3863 RETURN 4000 Q%=3% : GOSUB 4040 : C1$=LEFT$(C1$,P1%) 4010 Z2%=0% : IF ASC(C1$)=3% OR LEN(C1$)=0% THEN C1$=Q0$ : RETURN 4020 Q%=13% : GOSUB 4040 : GOSUB 4130 4030 GOSUB 4080 : GOSUB 1962 : GOTO 4010 4040 P1%=1% : IF P1%=0% RETURN 4050 P1%=INSTR(P1%,C1$,CHR$(Q%)) 4060 IF P1%>1% THEN IF ASC(MID$(C1$,P1%-1%,1%))=9% THEN P1%=P1%+1% : GOTO 4050 4070 RETURN 4080 P1%=1% 4090 P1%=INSTR(P1%,Q$,CHR$(9%)) : IF P1%=0 RETURN 4100 IF P1%>1% Q$=LEFT$(Q$,P1%-1%)+SPACE$(ASC(MID$(Q$,P1%+1%,1%)))+RIGHT$(Q$,P1%+2%) : GOTO 4090 4110 Q$=SPACE$(ASC(MID$(Q$,P1%+1%,1%)))+RIGHT$(Q$,P1%+2%) : GOTO 4090 4120 RETURN 4130 IF P1%<>0% THEN Q$=LEFT$(C1$,P1%)+CHR$(10%) : C1$=RIGHT$(C1$,P1%+1%) : RETURN 4140 Q$=LEFT$(C1$,LEN(C1$)-1%) : C1$=RIGHT$(C1$,LEN(C1$)) : RETURN