home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpmhelp
/
mbasic.hlp
< prev
next >
Wrap
Text File
|
1994-07-27
|
21KB
|
495 lines
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