15 REM Till ABC-klubben fr}n Scandia-Metric 20 DEFFNM%(I%,J%)=I%-I%/J%*J% 30 DEFFNL%(I%)=SWAP%(I%) AND 255% 40 DEFFNR%(I%)=I% AND 255% 100 GOTO 12000 900 P0%=0% : E%=0% : F3%=0% : P5%=-1% 1000 GOSUB 10000 : IF R% THEN RETURN 1020 E%=0% : B1%=0% : F2%=0% : F6%=0% : GOSUB 2000 : GOSUB 3000 : IF R% THEN 1300 1060 V%=P0% : GOSUB 6000 : IF E% THEN 1300 1080 P2%=0% : F1%=0% : L2%=L1% 1100 L1%=L2% : E%=0% : IF O%=0% THEN 1300 1110 GOSUB 4000 : IF R% THEN 1200 1130 IF F1% THEN E%=9% ELSE E%=3% 1140 GOTO 1300 1200 F1%=-1% : B5%=B1% : I0%=0% : X1%=0% : O0%=FNL%(O1%) : GOSUB 4500 : IF NOT R% THEN 1100 1240 IF E% THEN 1300 1250 O0%=FNR%(O1%) : GOSUB 4500 : IF NOT R% THEN 1100 1270 IF E% THEN 1300 1280 IF X1% THEN GOSUB 1500 1285 GOSUB 2500 : IF E%=0% AND B%<>0% THEN E%=9% 1300 GOSUB 10500 : GOSUB 11000 : IF F3% THEN RETURN 1330 GOTO 1000 1500 B1%(4%)=B1%(3%) : B1%(3%)=B1%(2%) : B1%(2%)=B1%(1%) : B1%(1%)=253%-FNM%(X1%,2%)*32% : B1%=B1%+1% 1520 IF X1%>2% THEN B1%(4%)=B1%(3%) : B1%(3%)=D% AND 255% : B1%=B1%+1% 1530 RETURN 2000 L1%=1% : L$="" : GOSUB 2500 : IF B% THEN IF RIGHT$(B$,B%)=":" THEN B%=B%-1% : B$=LEFT$(B$,B%) : GOTO 2050 2040 IF LEFT$(L1$,1%)=" " THEN 2070 2050 IF B%95% THEN C$=CHR$(ASC(C$) AND 223%) 2602 GOSUB 2800 : IF 0%=INSTR(1%,C1$,C$) THEN 2600 2620 IF C$<>'"' THEN 2750 2650 GOSUB 2800 : IF C$='"' THEN 2600 2662 IF C$<>CHR$(13%) THEN 2650 2700 E%=13% 2750 B%=LEN(B$) : RETURN 2800 B$=B$+C$ 2810 L1%=L1%+1% : C$=MID$(L1$,L1%,1%) : RETURN 3000 R%=0% : IF O%=0% THEN RETURN 3030 I%=INSTR(1%," ORG EQU END DEFB DEFW DEFS DEFM "," "+O$+" ") : IF I%=0% THEN RETURN 3050 R%=-1% : GOSUB 2500 : ON (I%+4%)/5% GOTO 3070,3100,3130,3150,3180,3230,3260 3070 F6%=-1% : GOSUB 7010 : P0%=V% : GOTO 3700 3100 F6%=-1% : GOSUB 7010 : S$=L$ : S%=V% : F2%=1% : GOSUB 6010 : R%=-1% : RETURN 3130 F3%=-1% : P0%=0% : GOTO 3700 3150 GOSUB 7000 : B1%(1%)=V% : B1%=1% : GOTO 3700 3180 GOSUB 7010 : B1%(1%)=FNR%(V%) : B1%(2%)=FNL%(V%) : B1%=2% : GOTO 3700 3230 F6%=-1% : GOSUB 7010 : B1%=V% : F2%=2% : GOTO 3700 3260 IF B%=0% THEN E%=9% : RETURN 3261 IF LEFT$(B$,1%)<>'"' OR RIGHT$(B$,B%)<>'"' THEN E%=13% : RETURN 3270 B%=B%-2% : B$=MID$(B$,2%,B%) : FOR I%=1% TO B% : C$=MID$(B$,I%,1%) : IF C$<>'"' THEN 3360 3320 I%=I%+1% : IF I%>B% THEN E%=13% : RETURN 3340 C$=MID$(B$,I%,1%) : IF C$<>'"' THEN E%=13% : RETURN 3360 IF B1%=20% THEN E%=6% : RETURN 3370 B1%=B1%+1% : B1%(B1%)=ASC(C$) : NEXT I% 3700 V%=P0% : GOSUB 6000 : R%=-1% : RETURN 4000 R%=0% : IF O%>4% THEN RETURN 4020 O$=LEFT$(O$+" ",4%) 4050 P2%=INSTR(P2%+1%,T1$,O$) : IF P2%=0% THEN RETURN 4070 IF FNM%(P2%,4%)<>1% THEN 4050 4080 I%=P2%/4% : B1%(1%)=FNL%(T1%(I%)) : B1%(2%)=FNR%(T1%(I%)) : B1%=2%+(B1%(2%)=255%) : R%=-1% 4120 IF I%=128%)*6%-(O0%>=192%)*7% : O0%=O0% AND 63% : IF O0%=0% THEN R%=-1% : RETURN 4546 GOSUB 2500 : IF O0%>14% THEN 4680 4550 IF B%=0% THEN R%=0% : RETURN 4560 ON O0% GOSUB 4750,4800,4850,4900,4950,5000,5050,5050,5100,5150,5200 : GOTO 4700 4680 IF O0%<32% THEN GOSUB 5400 : GOTO 4700 4690 ON O0%-39% GOSUB 5450,5500,5550,5600,5650,5670,5750,5800,5850 4700 B1%(B5%)=B1%(B5%) OR R2%*M2% : IF R2%<>-1% THEN R%=-1% 4720 RETURN 4750 IF B%=1% THEN R2%=INSTR(1%,"BCDEHL A",B$)-1% 4760 RETURN 4800 GOSUB 4750 : IF R2%<>-1% THEN RETURN 4810 GOSUB 5900 : IF I0%=0% OR B%<2% THEN RETURN 4820 IF B$="HL" THEN R2%=6% : RETURN 4825 C$=LEFT$(B$,2%) : IF C$="IX" THEN R2%=6% : X1%=3% 4827 IF C$="IY" THEN R2%=6% : X1%=4% 4830 B%=B%-2% : IF B%=0% OR R2%=-1% THEN D%=0% : RETURN 4837 B$=RIGHT$(B$,3%) : GOSUB 7010 : IF V%<-128% OR V%>127% THEN E%=10% 4838 D%=V% : RETURN 4850 GOSUB 4800 : IF I0% OR R2%<>-1% THEN RETURN 4870 B1%(1%)=B1%(1%) XOR 70% : GOTO 5470 4900 IF B%=2% THEN R2%=INSTR(1%," BC DE HL SP",B$)/3%-1% 4910 RETURN 4950 GOSUB 4900 : GOTO 5490 5000 GOSUB 4900 : IF R2%=3% THEN R2%=-1% 5020 IF B$="AF" THEN R2%=3% 5030 GOTO 5490 5050 GOSUB 4950 5060 IF R2%=2% AND X1%<>O0%-6% THEN R2%=-1% 5070 X1%=0% : RETURN 5100 IF B$="HL" THEN R2%=2% 5110 GOTO 5490 5150 GOSUB 5900 : IF I0%=0% THEN RETURN 5170 GOTO 5100 5200 I%=INSTR(1%," (BC) (DE) "," "+B$+" ") : IF I%<>0% THEN R2%=I%/6% : RETURN 5220 GOSUB 5650 : R2%=3% : RETURN 5400 I%=INSTR(1%," A I R (C) HL IX IY DE AF AF' SP (SP) "," "+B$+" ") 5410 IF O0%=I%/4%+19% THEN R2%=0% 5420 RETURN 5450 GOSUB 5900 5455 IF NOT I0% OR E% THEN R2%=-1% : RETURN 5465 GOSUB 7000 : B1%(2%)=V% : B1%=2% : R2%=0% : RETURN 5470 GOSUB 5900 : I0%= NOT I0% : GOTO 5455 5490 IF B$="IX" THEN R2%=2% : X1%=1% 5491 IF B$="IY" THEN R2%=2% : X1%=2% 5493 RETURN 5500 GOSUB 7000 : R2%=V% : IF V%>7% THEN E%=10% 5530 RETURN 5550 GOSUB 7010 : V%=V%-P0%-2% : IF V%<-128% OR V%>127% THEN E%=10% 5580 B1%(2%)=FNR%(V%) : B1%=2% : R2%=0% : RETURN 5600 GOSUB 7000 : IF FNM%(V%,8%) OR (V%>56%) THEN E%=10% 5620 R2%=V% : RETURN 5650 GOSUB 5900 5655 IF NOT I0% OR E% THEN R2%=-1% : RETURN 5660 GOSUB 7010 : B1%(B1%+1%)=FNR%(V%) : B1%=B1%+2% : B1%(B1%)=FNL%(V%) : R2%=0% : RETURN 5670 GOSUB 5900 : I0%= NOT I0% : GOTO 5655 5750 R2%=INSTR(1%," NZ Z NC C PO PE P M "," "+B$+" ")/3%-1% : RETURN 5800 GOSUB 5750 : IF R%>3% THEN R2%=-1% 5820 RETURN 5850 GOSUB 7000 : IF V%>2% THEN E%=10% : RETURN 5870 R2%=0% : B1%(2%)=70%-(V%>0%)*16%-(V%>1%)*8% : RETURN 5900 IF LEFT$(B$,1%)<>"(" OR RIGHT$(B$,B%)<>")" THEN I0%=0% : RETURN 5915 IF I0% THEN E%=9% 5920 I0%=-1% : B%=B%-2% : B$=MID$(B$,2%,B%) : RETURN 6000 S$=L$ : S%=V% 6010 IF LEN(S$)=0 THEN RETURN 6020 GOSUB 6500 : IF E% THEN RETURN 6040 IF P%=2% THEN 6100 6050 S1%=S1%+1% : IF S1%>S8% THEN E%=20% : RETURN 6080 S1$=S1$+S$ : S1%(S1%)=S% : RETURN 6100 GOSUB 6300 : GOSUB 6300 : IF R% THEN E%=11% 6130 RETURN 6300 R%=R%*S9% 6310 R%=INSTR(R%+1,S1$,S$) : IF R%=0% THEN RETURN 6330 IF FNM%(R%,S9%)<>1% THEN 6310 6340 R%=R%/S9%+1% : RETURN 6400 GOSUB 6500 : IF R% THEN R%=0% : RETURN 6415 IF P%=1% AND F6%=0% THEN R%=-1% : S%=0% : RETURN 6420 GOSUB 6300 : IF R%=0% THEN E%=8% : RETURN 6440 S%=S1%(R%) : RETURN 6500 R%=-1% : IF LEN(S$)>S9% THEN E%=2% : RETURN 6520 IF INSTR(1%,C5$,MID$(S$,1%,1%))=0% THEN 6600 6530 FOR I%=2% TO LEN(S$) : IF INSTR(1%,C5$+C6$+"_?",MID$(S$,I%,1%))=0% THEN 6600 6550 NEXT I% : S$=S$+SPACE$(S9%-LEN(S$)) : R%=0% : RETURN 6600 E%=2% : RETURN 7000 GOSUB 7010 : IF V% AND 65280% THEN E%=10% 7004 RETURN 7010 GOSUB 7100 : IF E<-32768% OR E>65535 THEN E%=10% ELSE V%=E 7030 RETURN 7100 B2%=1% : E0%=-1% : E1%=1% : E=0% : E1%(0%,1%)=6% : E1%(0%,0%)=8% 7110 GOSUB 7500 : IF E2%<>5% AND E2%<>6% THEN 7150 7131 E2%=E2%-4% : E3%=0% 7140 E1%(E1%,0%)=E2% : E1%(E1%,1%)=E3% : E1%=E1%+1% : GOTO 7110 7141 E1%(E1%,0%)=E2% : E1%(E1%,1%)=E3% : E1%=E1%+1% : GOTO 7110 7150 IF E2%=9% THEN E0%=E0%+1% : E0(E0%)=E3% : GOTO 7180 7160 IF E2%=0% THEN 7140 7170 E%=6% : RETURN 7180 GOSUB 7500 7190 IF E2%<3% OR E2%>8% THEN 7170 7200 IF E3%65535 THEN E0(E0%)=E0(E0%)-65536 : GOTO 7350 7355 GOTO 7200 7500 S$="" : IF B2%>B% THEN E2%=8% : E3%=7% : RETURN 7520 C$=MID$(B$,B2%,1%) : B2%=B2%+1% : IF INSTR(1%,C5$,C$) THEN 7600 7540 IF INSTR(1%,C6$,C$) THEN 7700 7550 IF C$='"' THEN 7660 7560 I%=INSTR(1%,"*/+-)($",C$) : IF I%=0% THEN E%=5% : RETURN 7580 IF I%=7% THEN E2%=9% : E3%=P0% : RETURN 7590 E2%=I%+2% : E3%=(I%-1%)/2%+2% : IF E2%=8% THEN E2%=0% 7593 IF E2%=7% THEN E3%=5% 7594 RETURN 7600 S$=S$+C$ : IF B2%>B% THEN 7640 7620 C$=MID$(B$,B2%,1%) : IF INSTR(1%,C5$+C6$+"?_",C$) THEN B2%=B2%+1% : GOTO 7600 7640 GOSUB 6400 : E2%=9% : E3%=S% : RETURN 7660 E2%=9% : E3%=ASC(MID$(B$,B2%,1%)) 7680 IF MID$(B$,B2%+1%,1%)<>'"' THEN E%=13% 7690 B2%=B2%+2% : RETURN 7700 S$=S$+C$ : E2%=9% 7710 IF B2%>B% THEN 7740 7720 C$=MID$(B$,B2%,1%) : IF INSTR(1%,C3$+"QOH",C$) THEN B2%=B2%+1% : GOTO 7700 7740 I%=INSTR(1%,"DHBOQ",RIGHT$(S$,LEN(S$))) 7750 IF I% THEN S$=LEFT$(S$,LEN(S$)-1%) 7760 I%=10%+I%/2%*6%+14%*(I%>2%) : E=0% : FOR J%=1% TO LEN(S$) 7790 J1%=INSTR(1%,C3$,MID$(S$,J%,1%)) : IF J1%=0% OR J1%>I% THEN E%=4% : RETURN 7810 E=J1%-1%+E*I% : NEXT J% : IF E>65535 OR E<-32768% THEN E%=10% ELSE E3%=E 7840 RETURN 9000 I1%=10% : P6%=-1% 9010 P6%=P6%+1% : IF P6%>P5% THEN RETURN 9020 P7%=P5%(P6%,0%) : P8%=P5%(P6%,1%) 9030 FOR I%=1% TO 15% : IF I%>P8% THEN ; #3% : GOTO 9010 9040 IF I%=1% THEN ; #3%,I1%;"POKE"P7%"%"; : I1%=I1%+10% 9050 ; #3%;",";ASC(O5$)"%"; : O5$=RIGHT$(O5$,2%) : NEXT I% 9060 P8%=P8%-15% : P7%=P7%+15% : ; #3% : GOTO 9030 10000 R%=0% : ONERRORGOTO 10020 10010 INPUTLINE #1%L1$ : OUT 58%,INP(58%) AND 223% : GOTO 10030 10020 IF ERRCODE=42 THEN OUT 58%,INP(58%) OR 32% : GOTO 10000 10025 IF ERRCODE=34 THEN R%=-1% : RETURN ELSE CLOSE 1% : STOP 10030 ONERRORGOTO 0 : IF LEN(L1$)=2% THEN R%=-1% 10050 RETURN 10500 IF P%=1% AND E%=10% THEN E%=0% 10502 IF E% THEN E9%=E9%+1% 10504 IF F7% AND P%=1% AND E%=0% THEN 10640 10505 IF E% OR F2%=1% THEN 10620 10510 R%=FNL%(P0%) : GOSUB 10660 : R%=FNR%(P0%) : GOSUB 10660 10550 ; #F9%TAB(6%); : IF F2% THEN 10620 10570 FOR I5%=1% TO B1% : IF I5%>4% THEN 10620 10580 R%=B1%(I5%) : GOSUB 10660 : NEXT I5% 10620 ; #F9%TAB(16%)L1$; 10640 IF E% THEN ; #F9%"Fel nr:"E% 10645 IF E%>=20% THEN ; "Fatalt Fel" : RETURN ELSE RETURN 10660 R%=R% AND 255% : ; #F9%MID$(C3$,R%/16%+1%,1%)MID$(C3$,FNM%(R%,16%)+1%,1%); : RETURN 11000 IF P%=2% THEN 11030 11010 IF E%=0% THEN P0%=P0%+B1% 11020 RETURN 11030 IF F2%=2% THEN P0%=P0%+B1% : RETURN 11050 IF P5%=-1% THEN GOSUB 11140 11060 IF P5%(P5%,0%)+P5%(P5%,1%)<>P0% THEN GOSUB 11140 : IF E% THEN 10500 11090 P0%=P0%+B1% : P5%(P5%,1%)=P5%(P5%,1%)+B1% 11110 FOR I%=1% TO B1% : O5$=O5$+CHR$(B1%(I%)) : NEXT I% : RETURN 11140 P5%=P5%+1% : IF P5%>P9% THEN E%=21% : E3%=-1% : RETURN 11160 P5%(P5%,0%)=P0% : P5%(P5%,1%)=0% : RETURN 12000 S1%=0% : S1$="" : E9%=0% : O5$="" : IF T1%<>0% THEN 12200 12010 DIM C$=16%,C1$=16%,C3$=16%,C5$=31%,C6$=10% 12020 C1$=" ,;"""+CHR$(9%,13%) : OPEN "ASMCON" ASFILE 1% 12030 INPUT #1%,T1%,T1%,T2%,C5$,C6$,C3$ : T2%=T2%+1% : DIM T1$=4%*(T1%+1%),T1%(T1%),T2%(T2%) 12040 FOR I%=0% TO T1% : IF I%