Cross-Reference
            Microsoft BASIC/Turbo Pascal Cross-Reference

                            Compiled by:

                           Steve T. Jones
                        East Central College
                            P. O. Box 529
                          Union, MO  63084

    This cross-reference shows the Version 3.0 Turbo Pascal equivalents
to features found in Microsoft BASIC (Version 5.21).  A few of Turbo's
functions and procedures which have no direct MBASIC equivalent have
been included to illustrate capabilities mentioned in the accompanying
article.  Turbo lacks some fundamental functions found in MBASIC.  Its
function and procedure declarations are so powerful, however, that this
is rarely a serious problem.

    In the chart, "-----" means that the feature is not available in
Turbo Pascal, while "N/A" means "not applicable" to Turbo Pascal.
MBASIC's "AUTO" command is not applicable, for instance, because Pascal
does not use line numbers.  Pascal terms in boldface are Turbo reserved
words or pre-defined identifiers.  Terms in italics are supplied by the
programmer.  See the Turbo Pascal Reference Manual for the correct
syntax.

    MBASIC              Turbo Pascal Equivalent

DIRECT COMMANDS

    AUTO                N/A
    DELETE              Editor function
    EDIT                Editor function
    FILES               Menu -- Directory function
    LIST                Editor function
    LLIST               Separate listing program
    LOAD                Menu -- Workfile function
    MERGE               Editor function
    NAME                -----
    NEW                 Edit a new file
    NULL                N/A
    RENUM               N/A
    RESET               Menu -- Log Drive function
    RUN                 Menu -- Run function
    SAVE                Menu -- Save function
    SYSTEM              Menu -- Quit function
    TROFF               -----
    TRON                -----
    WIDTH               N/A

OPERATORS

    = (assignment)      :=
    -                   -
    +                   +
    *                   *
    /                   /
    ^                   -----
    \                   div
    MOD                 mod
    NOT                 not

    AND                 and
    OR                  or
    XOR                 xor
    EQV                 -----
    IMP                 -----
    = (equality)        =
    <                   <
    >                   >
    <=,=<               <=
    >=,=>               >=
    <>                  <>
    -----               shl -- shift left
    -----               shr -- shift right
    -----               in -- set operator

ORDER OF PRECEDENCE

    expressions in ()   - (negation)
    exponents           not
    - (negation)        *,/,div,mod,and,shl,shr
    *,/                 +,-,or,xor
    \                   relational operators
    MOD
    +,- (subtraction)
    relational operators
    NOT
    AND
    OR
    XOR
    IMP
    EQV

PROGRAM STATEMENTS -- GENERAL

    CALL                Procedure name; External address;

                        Inline(machine code);
                        Overlay Procedure procedure name;
                        Overlay Function function name;
    CHAIN               Chain(program);
                        Execute(program);

    COMMON              automatic if manual's conventions are
                        observed
                        Var name : type Absolute address;
    DEF FN              Function name(parameter list) : type;
                          Begin
                            statement(s);
                          End;
    DEF USRn            -----
    DEFINT              Var name : Integer;
    DEFSNG              Var name : Real;
    DEFDBL              -----
    DEFSTR              Var name : String[length];
    DIM                 Var name : Array[subscript range] Of type;
    END                 End. -- period signifies end of program
    ERASE               -----

    ERROR               -----

    FOR                 For variable := value To value Do state
                        ments(s);

    GOSUB               procedure name;

    GOTO                Goto label;

    IF/THEN             If condition Then statement(s);

    IF/THEN/ELSE        If condition Then statement(s) Else state
                        ment(s);

    IF/GOTO             If condition Then Goto label;
    LET                 variable := expression;
                        Move(source,object,length);
    MID$                Insert(source,object,position);
    NEXT                N/A
    ON ERROR            I/O errors can be detected and managed by the
                        program
    ON/GOSUB            Case variable Of
                          value : statement(s);
                          value : statement(s);
                          Else : statement(s);
                        End;
    ON/GOTO             Case variable Of
                          value : Goto label;
                          value : Goto label;
                        End;
    OPTION BASE         N/A
    OUT                 Port[number] := value;
    POKE                Mem[location] := value;
    RANDOMIZE           Randomize;
    REM                 { comment } or (* comment *)
    RESTORE             N/A
    RESUME              -----
    RETURN              End;

    STOP                Halt;
    SWAP                -----
    WAIT                -----
    WHILE/WEND          While condition Do statement(s);
    -----               Repeat statement(s) Until condition;

PROGRAM STATEMENTS -- I/O

    CLOSE               Close(file name);
    DATA                -----
    FIELD               Record
                          variable : type;
                          variable : type;
                        End;
    GET                 Seek(file name,record number);
                        Read(file name,record name);
                        (both required)
    INPUT               Read(variable list);

    INPUT #n            Read(filename,variable);
    KILL                Erase(file name); -- not available as a menu
                        function
    LINE INPUT          Readln(variable list);
    LSET, RSET          N/A
    OPEN                Assign(file name,name of disk file);
    (old file)          Reset(file name);
                        (both required)
    OPEN                Assign(file name,name of disk file);
    (new file)          Rewrite(file name);
                        (both required)
    PUT                 Seek(file name,record number);
                        Write(file name,record name);
                        (both required)
    READ                -----
    WRITE               Write(variable(s));
    WRITE #n            Write(file name,variable(s));
    -----               Blockread(file name,buffer,number); (read
                        sectors from a disk)
    -----               Blockwrite(file name,buffer,number); (write
                        sectors to a disk)

PROGRAM STATEMENTS -- DISPLAY

    -----               ClrEol (clear to end of line)
    -----               ClrScr (clear screen)
    -----               DelLine (delete line)
    -----               InsLine (insert line)
    -----               GotoXY(column,row); (postion cursor at
                        specified coordinates)

FUNCTIONS -- ARITHMETIC

    ABS                 Abs(integer)
                        Abs(real)
    ATN                 Arctan(expression)
    CDBL                real variable := integer;
    CINT                Round(real)
    COS                 Cos(expression)
    CSNG                real variable := integer;
    EXP                 Exp(expression)
    FIX                 Trunc(expression)
    FRE(exp)            N/A
    FRE(string)         Memavail
    INT                 Int(expression)
    LOG                 Ln(expression)
    RND(num < 0)        -----
    RND(0)              -----
    RND(num > 0)        Random
                        Random(integer)
    SGN                 -----
    SIN                 Sin(expression)
    SQR                 Sqrt(expression)
    TAN                 -----
    -----               Frac(expression) (returns the fractional part
                        of a number)
FUNCTIONS -- STRING

    ASC                 Ord(char)
    CHR$                Chr(expression)
    HEX$                -----
    INKEY$              Keypressed
                        Read(Kbd,variable);
    INPUT$              -----
    INSTR               Pos(string1,string2)
    LEFT$               -----
    LEN                 Length(string)
    MID$                Copy(string,start,length)
    OCT$                -----
    RIGHT$              -----
    SPACE$              -----
    STR$                Str(value,string)
    STRING$             Fillchar(variable,number,char)
    VAL                 Val(string,variable,returncode);
    -----               Delete(string,start,length); (remove part of
                        a string)

FUNCTIONS -- OTHER

    CVI                 N/A
    CVS                 N/A
    CVD                 N/A
    EOF                 Eof(file name)
    ERL                 -----
    ERR                 Ioresult
    INP                 variable := Port[number];
    LOC                 Filepos(file name)
    LPOS                -----
    MKI$                N/A
    MKS$                N/A
    MKD$                N/A
    PEEK                variable := Mem[number];
    POS                 -----
    SPC                 -----
    TAB                 -----
    USR                 Inline(machine code);
    VARPTR              Addr(variable)
    -----               Bdos(func,param)   -- CP/M  BDOS functions,
                        result from "A" register
    -----               BdosHL(func,param) -- CP/M BDOS functions,
                        result from "HL" register pair
    -----               Bios(func,param)   -- CP/M  BIOS functions,
                        result from "A" register
    -----               BiosHL(func,param) -- CP/M BIOS functions,
                        result from "HL" register pair