home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
mbug
/
mbug001.arc
/
MBASIC.HLP
< prev
next >
Wrap
Text File
|
1979-12-31
|
21KB
|
496 lines
.op
.po 0
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
Thi≤á HEL╨ Filσ i≤ deriveΣ froφ thσ "Microsof⌠ BASI├ Referencσá Book"¼ ì
anΣá i⌠á i≤ divideΣ int∩ tw∩ part≤ -- onσ coverinτ thσ Interprete≥ anΣá thσ ì
othe≥á coverinτ thσ Compiler«á Thesσ program≤ proces≤ program≤ writteεá iε ì
almos⌠á exactl∙á thσá samσ languagσ -- Microsof⌠á BASIC╗á therσá arσá mino≥ ì
difference≤ betweeε thσ two¼á however¼á anΣ thesσ arσ discusseΣ iε thσ filσ ì
under the Compiler Introduction.
The MBASIC (Microsoft BASIC) Interpreter is invoked as follows --
MBASIC [<filename>][/F:<# files>][/M:<memory loc>]
Iµá <filename╛ i≤ present¼á MBASI├ proceed≤ a≤ iµ ß RU╬ <filename╛á commanΣ ì
werσ typeΣ afte≥ initializatioε i≤ complete«á ┴ defaul⌠ extensioε oµá .BA╙ ì
i≤á assumed«á Iµ /F:<ú files╛ i≤ present¼á i⌠ set≤ thσ numbe≥ oµ disδ datß ì
file≤á tha⌠ ma∙ bσ opeε a⌠ an∙ onσ timσ durinτ thσ executioε oµ ßá program« ì
Thσá defaul⌠á herσá i≤ 3«á Thσ /M:<memor∙ loc╛á set≤á thσá highes⌠á memor∙ ì
location≤ tha⌠ wil∞ bσ useΣ b∙ MBASIC«á Al∞ memor∙ t∩ thσ star⌠ oµ FDO╙ i≤ ì
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
CLEA╥ CLEA╥ [,[exp1][,exp2]▌ Clea≥ prograφ variables╗á Exp▒ set≤ ì
enΣá oµ memor∙ anΣ Exp▓ set≤ amoun⌠ ì
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
SAV┼ SAV┼ filename[,┴ o≥ ,P▌ Savσ proτ ont∩ disk╗á ,┴ save≤ proτ ì
in ASCII and ,P protects file
SYSTEM SYSTEM Return to CP/M
TROFF TROFF Turn trace off
TRON TRON Turn trace on
WIDT╚ WIDT╚ [LPRINT▌ ex≡ Se⌠ terφ o≥ printe≥ carriagσ 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]]
Cal∞á ß prograφ anΣ pas≤ variable≤ t∩ it╗á MERG┼ witΦá ASCI╔ ì
file≤ allow≤ overlays╗ star⌠ a⌠ linσ ex≡ iµ given╗ AL╠ mean≤ ì
al∞ variable≤ wil∞ bσ passeΣ (otherwisσ COMMO╬ only)╗ DELET┼ ì
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])=string▓á Replacσ ß portioε oµ strinτá witΦ ì
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
WAI╘ WAI╘ prot,mask[,select▌ Pausσ unti∞ inpu⌠ por⌠ [XO╥ 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
$ñá ▒á ▓ Floatinτ dolla≥ sign╗á placeΣ iεá fron⌠á oµ
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 ...]
ReaΣá datß froφ thσ terminal╗á leadinτ semicoloε suppresse≤ ech∩ ì
oµá <CR>/<LF╛ anΣ semicoloε afte≥ promp⌠ strinτ cause≤á questioε ì
marδá afte≥ promp⌠ whilσ commß afte≥ promp⌠ suppresse≤á questioε ì
mark
Statement Syntax/Function
KILL KILL filename
Delete a disk file
LINE LINE INPUT [;] [prompt string;] string var
INPU╘ ReaΣ aε entirσ linσ froφ terminal╗á leadinτ semicoloε suppresse≤ ì
echo of <CR>/<LF>
LINE INPUT #f,string var
Read an entire line from a disk file
LSET LSET field var=string exp
Storσ datß iε randoφ filσ buffe≥ left-justifieΣ o≥á left-justif∙ ì
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
Storσá datßá iεá ß randoφ filσ buffe≥ righ⌠ justifieΣá o≥á righ⌠ ì
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])
Return≤ ß strinτ oµ lengtΦ char≤ reaΣ froφ consolσ o≥ froφ ß ì
disk file; characters are not echoed
INSTR([exp,]str1,str2)
Return≤á thσ firs⌠ positioε oµ thσ firs⌠ occurrencσ oµá str▓ ì
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])
Return≤ char≤ froφ thσ middlσ oµ thσ strinτ startinτ a⌠á thσ ì
positioεá specifieΣá t∩ thσ enΣ oµ thσ strinτ o≥ fo≥á lengtΦ ì
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)
Return≤á ß strinτ lengtΦ lonτ containinτ thσ firs⌠á cha≥á oµ ì
the str
STRING$(length,exp)
Return≤á ß strinτ lengtΦ lonτ containinτ char≤ witΦá numeriπ ì
value exp
VAL(str⌐á Convert≤á thσá strinτá representatioε oµ ßá numbe≥á t∩á it≤ ì
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⌐ Return≤ nex⌠ recorΣ numbe≥ t∩ reaΣ o≥ writσ (randoφ file⌐ o≥ ì
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⌐ Return≤ addres≤ oµ va≥ iε memor∙ o≥ zer∩ iµ va≥ ha≤ no⌠ beeε ì
assigned a value
VARPTR(#f⌐ Return≤ thσ addres≤ oµ thσ disδ I/╧ buffe≥ assigneΣ t∩á filσ ì
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
Thσ followinτ direc⌠ modσ command≤ arσ NO╘ implementeΣ oε thσ compile≥ ì
and will generate an error message --
AUTO CLEAR CLOAD
CSAVE CONT DELETE
EDIT LIST LLIST
RENUM COMMON SAVE
LOAD MERGE NEW
ERASE
Thσá followinτ statement≤ arσ useΣ differentl∙ witΦ thσ compile≥á thaε ì
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 ...]
Iµá jus⌠ BASCO═ i≤ used¼á thσ use≥ wil∞ bσ prompteΣ witΦ aεá asterisk¼ ì
after which he should enter the command line.
Switches --
/E Use this switch if ON ERROR GOTO with RESUME <line number> is used
/╪ Usσ thi≤ switcΦ iµ O╬ ERRO╥ GOT╧ witΦ RESUME¼ RESUM┼ 0¼ o≥ RESUM┼ NEX╘ ì
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
/├á Rela°á linσá numberinτá constraints╗áá line≤á neeΣá no⌠á bσá numbereΣ ì
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