1 REM Ins{nd av John Stagg <5741> 1985-07-19 19.21.59 10 ! ABCTIBM 850717 15 ! Copyright J.Stagg 1985 20 EXTEND : INTEGER 30 ; CHR$(12);' ABCTIBM: Omvandling av BASIC2 till motsvarande IBM Microsoft Basic ' : ; 40 ; ' (Observera att det inte finns n}gon flerradig DEF FN i IBM-Basic)' : ; : ; 50 DIM A$=162,A1$=162,Rad$=6 60 ; 'Fullst{ndiga filnamnet av BASIC2-filen (i textformat): '; : INPUT F$ : IF F$='' THEN 300 70 ; 'Fullst{ndiga namnet f|r den nya filen : '; : INPUT F1$ : ; 80 IF F1$=F$ THEN GOTO 70 ELSE IF F1$='' THEN F1$='CON:' 90 OPEN F$ AS FILE 1 : PREPARE F1$ AS FILE 2 100 ON ERROR GOTO 170 110 FOR N=0 TO 1000 120 INPUT LINE #1,A$ 130 P=INSTR(1,A$,' ') : Rad$=LEFT$(A$,P-1) 140 IF FNEjibm THEN T=-1 150 NEXT N 160 ; CHR$(7) : ; 'Filen har f|r m}nga rader !' : CLOSE : GOTO 300 170 IF NOT (ERRCODE=34) THEN ; "Error " ERRCODE : CLOSE : STOP 180 IF T THEN ; CHR$(7); : CLOSE : GOTO 300 ELSE RESUME 190 190 ON ERROR GOTO 270 200 POSIT #1,0 210 FOR M=0 TO N-1 220 INPUT LINE #1,A$ 230 P=INSTR(1,A$,' ') : Rad$=LEFT$(A$,P-1) 240 IF FNBasibm THEN ; 'Rad ' Rad$ ' har {ndrats' 250 ; #2,A$; 260 NEXT M : GOTO 290 270 IF ERRCODE=137 THEN ; 'Rad ' Rad$ 'blir f|r l}ng och har inte {ndrats fullst{ndigt' : RESUME 250 280 ; CHR$(7);'Error ' ERRCODE : STOP 290 CLOSE : ; 'Klart !'; 300 END 310 DEF FNBasibm 320 A1$=A$ 330 P10=INSTR(1+P10,A$,' ; CUR(') 340 IF P10 THEN P11=INSTR(P10,A$,')') : IF MID$(A$,P11+2,1)<>':' THEN Kol$=' : ' ELSE Kol$='' 350 IF P10 THEN A$=LEFT$(A$,P10-1)+' LOCATE '+MID$(A$,P10+7,P11-P10-7)+Kol$+RIGHT$(A$,P11+1) : GOTO 330 360 P1=INSTR(1+P1,A$,' ;') 370 IF P1 THEN A$=LEFT$(A$,P1-1)+' PRINT '+RIGHT$(A$,P1+2) : GOTO 360 380 P12=INSTR(P1,A$,' : ; ') 390 IF P12 THEN P1=P12-1 : GOTO 360 400 P2=INSTR(1,A$,'NUM$(') 410 IF P2 THEN A$=LEFT$(A$,P2-1)+'STR$('+RIGHT$(A$,P2+5) : GOTO 400 430 P3=INSTR(1+P3,A$,'AS FILE') 440 IF P3 THEN A$=LEFT$(A$,P3+2)+RIGHT$(A$,P3+8) : GOTO 430 450 P4=INSTR(1+P4,A$,'INPUT LINE') 460 IF P4 THEN MID$(A$,P4,10)='LINE INPUT' : GOTO 450 470 P5=INSTR(1+P5,A$,'TXPOINT') 480 IF P5 THEN P6=INSTR(1+P5,A$,',0') 490 IF P5 THEN P9=INSTR(P5,A$,' ') 495 IF P9 THEN P2=INSTR(P9+1,A$,' ') : IF P2=0 THEN P2=INSTR(P9,A$,CHR$(13)) 500 IF P5 AND (P6>0) THEN A$=LEFT$(A$,P5-1)+'PRESET('+MID$(A$,P5+8,P6-P5-6)+')'+RIGHT$(A$,P6+2) : Z=-1 510 IF P5 AND (P6=0) THEN A$=LEFT$(A$,P5-1)+'PSET('+MID$(A$,P5+8,P2-P9-1)+')'+RIGHT$(A$,P9) : Z=-1 520 IF Z THEN Z=0 : GOTO 470 530 P7=INSTR(1+P7,A$,'POSIT(') 540 IF P7 THEN A$=LEFT$(A$,P7-1)+'LOC('+RIGHT$(A$,P7+6) : GOTO 530 550 P15=INSTR(1,A$,'INTEGER') 560 IF P15 THEN A$=LEFT$(A$,P15-1)+'DEFINT A-Z'+RIGHT$(A$,P15+7) 570 P16=INSTR(1,A$,'DOUBLE') 580 IF P16 THEN A$=LEFT$(A$,P16-1)+'DEFDBL A-Z'+RIGHT$(A$,P16+6) 590 P17=INSTR(1,A$,'SINGLE') 600 IF P17 THEN A$=LEFT$(A$,P17-1)+'DEFSNG A-Z'+RIGHT$(A$,P17+6) 610 P18=INSTR(1,A$,'RANDOMIZE') 620 IF P18 THEN A$=LEFT$(A$,P18+8)+' '+MID$(TIME$,7,2)+RIGHT$(A$,P18+9) 630 P19=INSTR(1,A$,' ! ') 640 IF P19>0 AND P19<9 THEN A$=LEFT$(A$,P19)+'REM'+RIGHT$(A$,P19+2) 650 P20=INSTR(1,A$,': ! ') 660 IF P20 THEN A$=LEFT$(A$,P20+1)+'REM'+RIGHT$(A$,P20+3) 670 P21=INSTR(1,A$,'ERRCODE') 680 IF P21 THEN A$=LEFT$(A$,P21-1)+'ERR'+RIGHT$(A$,P21+7) : GOTO 670 690 RETURN (A1$<>A$) 700 FNEND 710 DEF FNEjibm 720 P22=INSTR(1,A$,'SET DOT')+INSTR(1,A$,'CLR DOT')+INSTR(1,A$,'EXTEND')+INSTR(1,A$,'NO EXTEND')+INSTR(1,A$,'PEEK2')+INSTR(1,A$,'VAROOT') 730 P22=P22+INSTR(1,A$,'ADD$')+INSTR(1,A$,'SUB$')+INSTR(1,A$,'MUL$')+INSTR(1,A$,'DIV$')+INSTR(1,A$,' CVT')+INSTR(1,A$,'SYS(') 740 P22=P22+INSTR(1,A$,'DEF FN') AND (INSTR(1,A$,'LOCAL')=0) 750 IF P22 THEN ; 'Ej IBM funktion :' : ; A$ 760 P23=INSTR(1,A$,' POSIT ') 770 IF P23 THEN ; 'G|r filpositionering med GET#..(xx) i raden: ' : ; A$ 780 P24=INSTR(1,A$,' DIM ') AND INSTR(1,A$,'=')>0 785 IF P24 THEN ; 'Fel dimensioneringss{tt :' : ; A$ 790 RETURN P22 800 FNEND