home *** CD-ROM | disk | FTP | other *** search
- Introduction to the Microsoft BASIC Interpreter
- Special Characters
- Variable Type Declaration Chars
- Commands
- Edit Mode Subcommands
- Program Statements (except I/O)
- PRINT USING Format Field Specifiers
- Input/Output Statements
- Operators
- Arithmetic Functions
- String Functions
- I/O and Special Functions
- Interpreter Error Codes
- Introduction to the Microsoft BASIC Compiler
- Compiler Commands and Switches
- Compiler Error Messages
- :Introduction to the Microsoft BASIC Interpreter
-
- This HELP File is derived from the "Microsoft BASIC Reference Book",
- and it is divided into two parts -- one covering the Interpreter and the
- other covering the Compiler. These programs process programs written in
- almost exactly the same language -- Microsoft BASIC; there are minor
- differences between the two, however, and these are discussed in the file
- under the Compiler Introduction.
-
- The MBASIC (Microsoft BASIC) Interpreter is invoked as follows --
-
- MBASIC [<filename>][/F:<# files>][/M:<memory loc>]
-
- If <filename> is present, MBASIC proceeds as if a RUN <filename> command
- were typed after initialization is complete. A default extension of .BAS
- is assumed. If /F:<# files> is present, it sets the number of disk data
- files that may be open at any one time during the execution of a program.
- The default here is 3. The /M:<memory loc> sets the highest memory
- locations that will be used by MBASIC. All memory to the start of FDOS is
- used by default.
- :Special Characters
- ^A Enters Edit Mode on line being typed or last line typed
- ^C Interrupts program execution and returns to MBASIC
- ^G Rings <BELL> at terminal
- ^H Deletes last char typed
- ^I Tab (every 8)
- ^O Halts/resumes program output
- ^R Retypes the line currently being typed
- ^S Suspends program execution
- ^Q Resumes execution after ^S
- ^U,^X Deletes line being typed
- <CR> Ends every line being typed in
- <LF> Breaks a logical line into physical lines
- <DEL> Deletes last char typed
- <ESC> Escapes Edit Mode Subcommands
- . Current line for EDIT, RENUM, DELETE, LIST, LLIST commands
- &O,& Prefix for Octal Constant
- &H Prefix for Hex Constant
- : Separates statements typed on the same line
- ? Equivalent to PRINT statement
- :Variable Type Declaration Characters
-
- $ String 0 to 255 chars
-
- % Integer -32768 to 32767
-
- ! Single Precision 7.1 digit floating point
-
- # Double Precision 17.8 digit floating point
- :Commands
-
- Command Syntax Function
- AUTO AUTO [line][,inc] Generate line numbers
- CLEAR CLEAR [,[exp1][,exp2]] Clear program variables; Exp1 sets
- end of memory and Exp2 sets amount
- of stack space
- CONT CONT Continue program execution
- DELETE DELETE [[start][-[end]]] Delete program lines
- EDIT EDIT line Edit a program line
-
- FILES FILES [filename] Directory
- LIST LIST [line[-[line]]] List program line(s)
- LLIST LLIST [line[-[line]]] List program line(s) on printer
- LOAD LOAD filename[,R] Load program; ,R means RUN
- MERGE MERGE filename Merge prog on disk with that in mem
-
- NAME NAME old AS new Change the name of a disk file
- NEW NEW Delete current prog and vars
- NULL NULL exp Set num of <NULL>s after each line
- RENUM RENUM [[new][,[old][,inc]]] Renumber program lines
- RESET RESET Init CP/M; use after disk change
-
- Command Syntax Function
- RUN RUN [line number] Run a prog (from a particular line)
- RUN filename[,R] Run a prog on disk
- SAVE SAVE filename[,A or ,P] Save prog onto disk; ,A saves prog
- in ASCII and ,P protects file
- SYSTEM SYSTEM Return to CP/M
- TROFF TROFF Turn trace off
- TRON TRON Turn trace on
- WIDTH WIDTH [LPRINT] exp Set term or printer carriage width;
- default is 80 (term) and 132 (prin)
- :Edit Mode Subcommands
- A Abort -- restore original line and restart Edit
- nCc Change n characters
- nD Delete n characters
- E End edit and save changes; don't type rest of line
- Hstr<ESC> Delete rest of line and insert string
- Istr<ESC> Insert string at current pos
- nKc Kill all chars up to the nth occurrance of c
- L Print the rest of the line and go to the start of the line
- Q Quit edit and restore original line
- nSc Search for nth occurrance of c
- Xstr<ESC> Goto the end of the line and insert string
- <DEL> Backspace over chars; in insert mode, delete chars
- <CR> End edit and save changes
- :Program Statements (except I/O)
- Statement Syntax Function
- CALL CALL variable [(arg list)] Call assembly or FORTRAN routine
- CHAIN CHAIN [MERGE] filename [,[line exp][,ALL][,DELETE range]]
- Call a program and pass variables to it; MERGE with ASCII
- files allows overlays; start at line exp if given; ALL means
- all variables will be passed (otherwise COMMON only); DELETE
- allows deletion of an overlay before CHAIN is executed
- COMMON COMMON list of vars Pass vars to a CHAINed prog
- DEF DEF FNx[(arg list)]=exp Arith or String Function
- DEF USRn=address Define adr for nth assembly routine
- DEFINT range(s) of letters Define default var type INTeger
- DEFSNG " " " " " " " Single
- DEFDBL " " " " " " " Double
- DEFSTR " " " " " " " String
- DIM DIM list of subscripted vars Allocate arrays
-
- END END Stop prog and close files
- ERASE ERASE var [,var ... ] Release space and var names
- ERROR ERROR code Generate error code/message
- FOR FOR var=exp TO exp [STEP exp] FOR loop
-
-
- Statement Syntax Function
- GOSUB GOSUB line number Call BASIC subroutine
- GOTO GOTO line number Branch to specified line
- IF/GOTO IF exp GOTO line [ELSE stmt ... ]
- IF exp <> 0 then GOTO
- IF/THEN IF exp THEN stmt[:stmt] [ELSE stmt ... ]
- IF exp <> 0 then ... else ...
- LET [LET] var=exp Assignment
-
- MID$ MID$(string,n[,m])=string2 Replace a portion of string with
- string2; start at pos n for m chars
- NEXT NEXT var[,var ... ] End FOR
- ON ERROR ON ERROR GOTO line Error trap subroutine
- GOTO
- ON/GOSUB ON exp GOSUB line[,line] Computed GOSUB
- ON/GOTO ON exp GOTO line[,line] Computed GOTO
-
-
- Statement Syntax Function
- OPTION OPTION BASE n Min val for subscripts (n=0,1)
- BASE
- OUT OUT port,byte Output byte to port
- POKE POKE address,byte Memory put
- RANDOMIZE RANDOMIZE [exp] Reseed random number generator
- REM REM any text Remark -- comment
-
- RESTORE RESTORE [line] Reset DATA pointer
- RESUME RESUME or RESUME 0 Return from ON ERROR GOTO
- RESUME NEXT Return to stmt after error line
- RESUME line Return to specified line
- RETURN RETURN Return from subroutine
- STOP STOP Stop prog and print BREAK msg
- WAIT WAIT prot,mask[,select] Pause until input port [XOR select]
- AND mask <> 0
-
- WHILE/ WHILE exp stmts ... WEND Execute stmts as long as exp is T
- WEND
- :PRINT USING Format Field Specifiers
- Numeric Specifiers
-
- Specifier Digits Chars Definition
- # 1 1 Numeric field
- . 0 1 Decimal point
- + 0 1 Print leading or trailing sign
- - 0 1 Trailing sign (- if neg, <sp> otherwise)
- ** 2 2 Leading asterisk
-
- $$ 1 2 Floating dollar sign; placed in front of
- leading digit
- **$ 2 3 Asterisk fill and floating dollar sign
- , 1 1 Use comma every three digits
- ^^^^ 0 4 Exponential format
- _ 0 1 Next character is literal
-
- String Specifiers
-
- Specifier Definition
- ! Single character
- /<spaces>/ Character field; width=2+number of <spaces>
- & Variable length field
- :Input/Output Statements
-
- Statement Syntax/Function
- CLOSE CLOSE [[#]f[,[#]f ... ]]
- Close disk files; if no arg, close all
- DATA DATA constant list
- List data for READ statement
- FIELD FIELD [#]f,n AS string var [,n AS string var ...]
- Define fields in random file buffer
- GET GET [#]f[,record number]
- Read a record from a random disk file
- INPUT INPUT [;] [prompt string;] var [,var ...]
- INPUT [;] [prompt string,] var [,var ...]
- Read data from the terminal; leading semicolon suppresses echo
- of <CR>/<LF> and semicolon after prompt string causes question
- mark after prompt while comma after prompt suppresses question
- mark
-
- Statement Syntax/Function
-
- KILL KILL filename
- Delete a disk file
- LINE LINE INPUT [;] [prompt string;] string var
- INPUT Read an entire line from terminal; leading semicolon suppresses
- echo of <CR>/<LF>
- LINE INPUT #f,string var
- Read an entire line from a disk file
- LSET LSET field var=string exp
- Store data in random file buffer left-justified or left-justify
- a non-disk string in a given field
- OPEN OPEN mode,[#] f,filename
- Open a disk file; mode must be one of --
- I = sequential input file
- O = sequential output file
- R = random input/output file
- Statement Syntax/Function
-
- PRINT PRINT [USING format string;] exp [,exp ...]
- Print data at the terminal using the format specified
- PRINT #f, [USING format string;] exp [,exp ...]
- Write data to a disk file
- LPRINT [USING format string;] var [,var ...]
- Write data to a line printer
- PUT PUT [#] f [,record number]
- Write data from a random buffer to a data file
- READ READ var [,var ...]
- Read data from a DATA statement into the specified vars
- RSET RSET field var = string exp
- Store data in a random file buffer right justified or right
- justify a non-disk string in a given field
- WRITE WRITE [list of exps]
- Output data to the terminal
- WRITE #f, list of exps
- Output data to a sequential file or a random field buffer
- :Operators
-
- Symbol Function
- = Assignment or equality test
- - Negation or subtraction
- + Addition or string concatenation
- * Multiplication
- / Division (floating point result)
- ^ Exponentiation
- \ Integer division (integer result)
- MOD Integer modulus (integer result)
- NOT One's complement (integer)
- AND Bitwise AND (integer)
- OR Bitwise OR (integer)
- XOR Bitwise exclusive OR (integer)
- EQV Bitwise equivalence (integer)
- IMP Bitwise implication (integer)
- =,>,<, Relational tests (TRUE=-1, FALSE=0)
- <=,=<,
- >=,=>,
- <>
-
- The precedence of operators is --
- 1. Expressions in parentheses 8. Relational Operators
- 2. Exponentiation 9. NOT
- 3. Negation (Unary -) 10. AND
- 4. *,/ 11. OR
- 5. \ 12. XOR
- 6. MOD 13. IMP
- 7. +,- 14. EQV
- :Arithmetic Functions
- Function Action
-
- ABS(exp) Absolute value of expression
- ATN(exp) Arctangent of expression (in radians)
- CDBL(exp) Convert the expression to a double precision number
- CINT(exp) Convert the expression to an integer
- COS(exp) Cosine of the expression (in radians)
-
- CSNG(exp) Convert the expression to a single precision number
- EXP(exp) Raises the constant E to the power of the expression
- FIX(exp) Returns truncated integer of expression
- FRE(exp) Gives memory free space not used by MBASIC
- INT(exp) Evaluates the expression for the largest integer
-
- LOG(exp) Gives the natural log of the expression
- RND[(exp)] Generates a random number
- exp <0 seeds new sequence
- exp =0 returns previous number
- exp >0 or omitted returns new random number
-
- Function Action
-
- SGN(exp) 1 if exp >0
- 0 if exp =0
- -1 if exp <0
- SIN(exp) Sine of the expression (in radians)
- SQR(exp) Square root of expression
- TAN(exp) Tangent of the expression (in radians)
- :String Functions
- Function Action
-
- ASC(str) Returns ASCII value of first char in string
- CHR$(exp) Returns a 1-char string whose char has ASCII code of exp
- FRE(str) Returns remaining memory free space
- HEX$(exp) Converts a number to a hexadecimal string
- INPUT$(length [,[#]f])
- Returns a string of length chars read from console or from a
- disk file; characters are not echoed
-
- INSTR([exp,]str1,str2)
- Returns the first position of the first occurrence of str2
- in str1 starting at position exp
- LEFT$(str,len) Returns leftmost length chars of the string expression
- LEN(str) Returns the length of a string
- MID$(string,start[,length])
- Returns chars from the middle of the string starting at the
- position specified to the end of the string or for length
- characters
-
- Function Action
-
- OCT$(exp) Converts an expression to an Octal string
- RIGHT$(str,len)
- Returns rightmost length chars of the string expression
- SPACE$(exp) Returns a string of exp spaces
- STR$(exp) Converts a numeric expression to a string
- STRING$(length,str)
- Returns a string length long containing the first char of
- the str
- STRING$(length,exp)
- Returns a string length long containing chars with numeric
- value exp
- VAL(str) Converts the string representation of a number to its
- numeric value
- :I/O and Special Functions
-
- Function Action
- CVI(str) Converts a 2-char string to an integer
- CVS(str) Converts a 4-char string to a single precision number
- CVD(str) Converts an 8-char string to a double precision number
-
- EOF(f) Returns TRUE (-1) if file is positioned at its end
- ERL Error Line Number
- ERR Error Code Number
- INP(port) Inputs a byte from an input port
- LOC(f) Returns next record number to read or write (random file) or
- number of sectors read or written (sequential file)
- LPOS(n) Returns carriage position of line printer (n is dummy)
-
- MKI$(value) Converts an integer to a 2-char string
- MKS$(value) Converts a single precision values to a 4-char string
- MKD$(value) Converts a double precision value to an 8-char string
-
-
- Function Action
-
- PEEK(exp) Reads a byte from memory location specified by exp
- POS(n) Returns carriage position of terminal (n is dummy)
-
- SPC(exp) Used in PRINT statements to print spaces
- TAB(exp) Used in PRINT statements to tab to specified position
-
- USR[n](arg) Calls the user's machine language subroutine with the arg
-
- VARPTR(var) Returns address of var in memory or zero if var has not been
- assigned a value
- VARPTR(#f) Returns the address of the disk I/O buffer assigned to file
- number
- :Interpreter Error Codes
- Code Error Code Error
- 1 NEXT without FOR 14 Out of string space
- 2 Syntax error 15 String too long
- 3 RETURN without GOSUB 16 String formula too complex
- 4 Out of data 17 Can't continue
- 5 Illegal function call 18 Undefined user function
- 6 Overflow 19 No RESUME
- 7 Out of memory 20 RESUME without error
- 8 Undefined line 21 Unprintable error
- 9 Subscript out of range 22 Missing operand
- 10 Redimensioned array 23 Line buffer overflow
- 11 Division by zero 26 FOR without NEXT
- 12 Illegal direct 29 WHILE without WEND
- 13 Type mismatch 30 WEND without WHILE
-
-
- Disk Errors --
- Code Error Code Error
-
- 50 Field overflow 58 File already exists
- 51 Internal error 61 Disk full
- 52 Bad file number 62 Input past end
- 53 File not found 63 Bad record number
- 54 Bad file mode 64 Bad file name
- 55 File already open 66 Direct statement in file
- 57 Disk I/O error 67 Too many files
- :Introduction to the Microsoft BASIC Compiler
-
- The following direct mode commands are NOT implemented on the compiler
- and will generate an error message --
-
- AUTO CLEAR CLOAD
- CSAVE CONT DELETE
- EDIT LIST LLIST
- RENUM COMMON SAVE
- LOAD MERGE NEW
- ERASE
-
- The following statements are used differently with the compiler than
- with the interpreter (refer to the manual for details) --
-
- CALL DEFINT DEFSNG
- DEFDBL DEFSTR DIM
- ERASE END ON ERROR GOTO
- RESUME STOP TRON
- TROFF USRn
- :BASIC Compiler Commands and Switches
-
- The compiler is invoked by the BASCOM command; it may be called by --
-
- BASCOM
- or
- BASCOM command line
-
- where "command line" is --
-
- [dev:][obj file][,[dev:][lst file]]=[dev:]source file[/switch ...]
-
- If just BASCOM is used, the user will be prompted with an asterisk,
- after which he should enter the command line.
-
- Switches --
-
- /E Use this switch if ON ERROR GOTO with RESUME <line number> is used
-
- /X Use this switch if ON ERROR GOTO with RESUME, RESUME 0, or RESUME NEXT
- is used
-
- /N Do not list generated object code
-
- /D Generate debug/checking code at runtime
-
- /S Write quoted strings of more than 4 chars as they are encountered
-
- /4 Recognize Microsoft 4.51 BASIC Interpreter conventions
-
- /C Relax line numbering constraints; lines need not be numbered
- sequentially; /4 and /C may not be used together
-
- /Z Use Z80 opcodes
- :BASIC Compiler Error Messages
- Compile-Time Fatal Errors
-
- SN Syntax error OM Out of memory
- SQ Sequence error TM Type mismatch
- TC Too complex BS Bad subscript
- LL Line too long UC Unrecognizable command
- OV Math overflow /0 Division by zero
-
- DD Array already dim'ed FN FOR/NEXT error
- FD Function already def UF Function not defined
- WE WHILE/WEND error /E Missing /E switch
- /X Missing /X switch
-
- Compile-Time Warning Errors
-
- ND Array not dimensioned SI Statement ignored
-
-
- Run-Time Error Messages
-
- 2 Syntax error 52 Bad file number
- 3 RETURN without GOSUB 53 File not found
- 4 Out of data 54 Bad file mode
- 5 Illegal function call 55 File already open
- 6 Floating/Integer ovfl 57 Disk I/O error
-
- 9 Subscript out of range 58 File already exists
- 11 Division by zero 61 Disk full
- 14 Out of string space 62 Input past end
- 20 RESUME without error 63 Bad record number
- 21 Unprintable error 64 Bad filename
-
- 50 Field overflow 67 Too many files
- 51 Internal error