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

  1. Introduction to the Microsoft BASIC Interpreter
  2. Special Characters
  3. Variable Type Declaration Chars
  4. Commands
  5. Edit Mode Subcommands
  6. Program Statements (except I/O)
  7. PRINT USING Format Field Specifiers
  8. Input/Output Statements
  9. Operators
  10. Arithmetic Functions
  11. String Functions
  12. I/O and Special Functions
  13. Interpreter Error Codes
  14. Introduction to the Microsoft BASIC Compiler
  15. Compiler Commands and Switches
  16. Compiler Error Messages
  17. :Introduction to the Microsoft BASIC Interpreter
  18.  
  19.      This  HELP File is derived from the "Microsoft BASIC Reference  Book", 
  20. and  it  is divided into two parts -- one covering the Interpreter and  the 
  21. other  covering the Compiler.   These programs process programs written  in 
  22. almost  exactly  the  same language -- Microsoft  BASIC;  there  are  minor 
  23. differences between the two,  however,  and these are discussed in the file 
  24. under the Compiler Introduction.
  25.  
  26.      The MBASIC (Microsoft BASIC) Interpreter is invoked as follows --
  27.  
  28.           MBASIC [<filename>][/F:<# files>][/M:<memory loc>]
  29.  
  30. If  <filename> is present,  MBASIC proceeds as if a RUN <filename>  command 
  31. were typed after initialization is complete.   A default extension of  .BAS 
  32. is  assumed.   If /F:<# files> is present,  it sets the number of disk data 
  33. files  that may be open at any one time during the execution of a  program.  
  34. The  default  here  is 3.   The /M:<memory loc>  sets  the  highest  memory 
  35. locations that will be used by MBASIC.   All memory to the start of FDOS is 
  36. used by default.
  37. :Special Characters
  38. ^A        Enters Edit Mode on line being typed or last line typed
  39. ^C        Interrupts program execution and returns to MBASIC
  40. ^G        Rings <BELL> at terminal
  41. ^H        Deletes last char typed
  42. ^I        Tab (every 8)
  43. ^O        Halts/resumes program output
  44. ^R        Retypes the line currently being typed
  45. ^S        Suspends program execution
  46. ^Q        Resumes execution after ^S
  47. ^U,^X     Deletes line being typed
  48. <CR>      Ends every line being typed in
  49. <LF>      Breaks a logical line into physical lines
  50. <DEL>     Deletes last char typed
  51. <ESC>     Escapes Edit Mode Subcommands
  52. .         Current line for EDIT, RENUM, DELETE, LIST, LLIST commands
  53. &O,&      Prefix for Octal Constant
  54. &H        Prefix for Hex Constant
  55.  :        Separates statements typed on the same line
  56.  ?        Equivalent to PRINT statement
  57. :Variable Type Declaration Characters
  58.  
  59. $    String              0 to 255 chars
  60.  
  61. %    Integer             -32768 to 32767
  62.  
  63. !    Single Precision    7.1 digit floating point
  64.  
  65. #    Double Precision    17.8 digit floating point
  66. :Commands
  67.  
  68. Command   Syntax                        Function
  69. AUTO      AUTO [line][,inc]             Generate line numbers
  70. CLEAR     CLEAR [,[exp1][,exp2]]        Clear program variables;  Exp1 sets 
  71.                                         end  of memory and Exp2 sets amount 
  72.                                         of stack space
  73. CONT      CONT                          Continue program execution
  74. DELETE    DELETE [[start][-[end]]]      Delete program lines
  75. EDIT      EDIT line                     Edit a program line
  76.  
  77. FILES     FILES [filename]              Directory
  78. LIST      LIST [line[-[line]]]          List program line(s)
  79. LLIST     LLIST [line[-[line]]]         List program line(s) on printer
  80. LOAD      LOAD filename[,R]             Load program; ,R means RUN
  81. MERGE     MERGE filename                Merge prog on disk with that in mem
  82.  
  83. NAME      NAME old AS new               Change the name of a disk file
  84. NEW       NEW                           Delete current prog and vars
  85. NULL      NULL exp                      Set num of <NULL>s after each line
  86. RENUM     RENUM [[new][,[old][,inc]]]   Renumber program lines
  87. RESET     RESET                         Init CP/M; use after disk change
  88.  
  89. Command   Syntax                        Function
  90. RUN       RUN [line number]             Run a prog (from a particular line)
  91.           RUN filename[,R]              Run a prog on disk
  92. SAVE      SAVE filename[,A or ,P]       Save prog onto disk;  ,A saves prog 
  93.                                         in ASCII and ,P protects file
  94. SYSTEM    SYSTEM                        Return to CP/M
  95. TROFF     TROFF                         Turn trace off
  96. TRON      TRON                          Turn trace on
  97. WIDTH     WIDTH [LPRINT] exp            Set term or printer carriage width; 
  98.                                         default is 80 (term) and 132 (prin)
  99. :Edit Mode Subcommands
  100. A         Abort -- restore original line and restart Edit
  101. nCc       Change n characters
  102. nD        Delete n characters
  103. E         End edit and save changes; don't type rest of line
  104. Hstr<ESC> Delete rest of line and insert string
  105. Istr<ESC> Insert string at current pos
  106. nKc       Kill all chars up to the nth occurrance of c
  107. L         Print the rest of the line and go to the start of the line
  108. Q         Quit edit and restore original line
  109. nSc       Search for nth occurrance of c
  110. Xstr<ESC> Goto the end of the line and insert string
  111. <DEL>     Backspace over chars; in insert mode, delete chars
  112. <CR>      End edit and save changes
  113. :Program Statements (except I/O)
  114. Statement Syntax                        Function
  115. CALL      CALL variable [(arg list)]    Call assembly or FORTRAN routine
  116. CHAIN     CHAIN [MERGE] filename [,[line exp][,ALL][,DELETE range]]
  117.                Call  a program and pass variables to it;  MERGE with  ASCII 
  118.                files allows overlays; start at line exp if given; ALL means 
  119.                all variables will be passed (otherwise COMMON only); DELETE 
  120.                allows deletion of an overlay before CHAIN is executed
  121. COMMON    COMMON list of vars           Pass vars to a CHAINed prog
  122. DEF       DEF FNx[(arg list)]=exp       Arith or String Function
  123.           DEF USRn=address              Define adr for nth assembly routine
  124.           DEFINT range(s) of letters    Define default var type INTeger
  125.           DEFSNG "        "   "         "         "     "   "   Single
  126.           DEFDBL "        "   "         "         "     "   "   Double
  127.           DEFSTR "        "   "         "         "     "   "   String
  128. DIM       DIM list of subscripted vars  Allocate arrays
  129.  
  130. END       END                           Stop prog and close files
  131. ERASE     ERASE var [,var ... ]         Release space and var names
  132. ERROR     ERROR code                    Generate error code/message
  133. FOR       FOR var=exp TO exp [STEP exp] FOR loop
  134.  
  135.  
  136. Statement Syntax                        Function
  137. GOSUB     GOSUB line number             Call BASIC subroutine
  138. GOTO      GOTO line number              Branch to specified line
  139. IF/GOTO   IF exp GOTO line [ELSE stmt ... ]
  140.                                         IF exp <> 0 then GOTO
  141. IF/THEN   IF exp THEN stmt[:stmt] [ELSE stmt ... ]
  142.                                         IF exp <> 0 then ... else ...
  143. LET       [LET] var=exp                 Assignment
  144.  
  145. MID$      MID$(string,n[,m])=string2    Replace  a  portion of string  with 
  146.                                         string2; start at pos n for m chars
  147. NEXT      NEXT var[,var ... ]           End FOR
  148. ON ERROR  ON ERROR GOTO line            Error trap subroutine
  149.   GOTO
  150. ON/GOSUB  ON exp GOSUB line[,line]      Computed GOSUB
  151. ON/GOTO   ON exp GOTO line[,line]       Computed GOTO
  152.  
  153.  
  154. Statement Syntax                        Function
  155. OPTION    OPTION BASE n                 Min val for subscripts (n=0,1)
  156.   BASE
  157. OUT       OUT port,byte                 Output byte to port
  158. POKE      POKE address,byte             Memory put
  159. RANDOMIZE RANDOMIZE [exp]               Reseed random number generator
  160. REM       REM any text                  Remark -- comment
  161.  
  162. RESTORE   RESTORE [line]                Reset DATA pointer
  163. RESUME    RESUME or RESUME 0            Return from ON ERROR GOTO
  164.           RESUME NEXT                   Return to stmt after error line
  165.           RESUME line                   Return to specified line
  166. RETURN    RETURN                        Return from subroutine
  167. STOP      STOP                          Stop prog and print BREAK msg
  168. WAIT      WAIT prot,mask[,select]       Pause until input port [XOR select] 
  169.                                         AND mask <> 0
  170.  
  171. WHILE/    WHILE exp stmts ... WEND      Execute stmts as long as exp is T
  172.   WEND
  173. :PRINT USING Format Field Specifiers
  174. Numeric Specifiers
  175.  
  176. Specifier Digits    Chars     Definition
  177.   #         1         1       Numeric field
  178.   .         0         1       Decimal point
  179.   +         0         1       Print leading or trailing sign
  180.   -         0         1       Trailing sign (- if neg, <sp> otherwise)
  181.   **        2         2       Leading asterisk
  182.  
  183.   $$        1         2       Floating  dollar  sign;  placed in  front  of 
  184.                               leading digit
  185.   **$       2         3       Asterisk fill and floating dollar sign
  186.   ,         1         1       Use comma every three digits
  187.   ^^^^      0         4       Exponential format
  188.   _         0         1       Next character is literal
  189.  
  190. String Specifiers
  191.  
  192. Specifier                     Definition
  193.   !                           Single character
  194.   /<spaces>/                  Character field; width=2+number of <spaces>
  195.   &                           Variable length field
  196. :Input/Output Statements
  197.  
  198. Statement Syntax/Function
  199. CLOSE     CLOSE [[#]f[,[#]f ... ]]
  200.            Close disk files; if no arg, close all
  201. DATA      DATA constant list  
  202.            List data for READ statement
  203. FIELD     FIELD [#]f,n AS string var [,n AS string var ...]
  204.            Define fields in random file buffer
  205. GET       GET [#]f[,record number]
  206.            Read a record from a random disk file
  207. INPUT     INPUT [;] [prompt string;] var [,var ...]
  208.           INPUT [;] [prompt string,] var [,var ...]
  209.            Read  data from the terminal;  leading semicolon suppresses echo 
  210.            of  <CR>/<LF> and semicolon after prompt string causes  question 
  211.            mark  after prompt while comma after prompt suppresses  question 
  212.            mark
  213.  
  214. Statement Syntax/Function
  215.  
  216. KILL      KILL filename
  217.            Delete a disk file
  218. LINE      LINE INPUT [;] [prompt string;] string var
  219. INPUT      Read an entire line from terminal;  leading semicolon suppresses 
  220.            echo of <CR>/<LF>
  221.           LINE INPUT #f,string var
  222.            Read an entire line from a disk file
  223. LSET      LSET field var=string exp
  224.            Store data in random file buffer left-justified or  left-justify 
  225.            a non-disk string in a given field
  226. OPEN      OPEN mode,[#] f,filename
  227.            Open a disk file; mode must be one of --
  228.                I = sequential input file
  229.                O = sequential output file
  230.                R = random input/output file
  231. Statement Syntax/Function
  232.  
  233. PRINT     PRINT [USING format string;] exp [,exp ...]
  234.            Print data at the terminal using the format specified
  235.           PRINT #f, [USING format string;] exp [,exp ...]
  236.            Write data to a disk file
  237.           LPRINT [USING format string;] var [,var ...]
  238.            Write data to a line printer
  239. PUT       PUT [#] f [,record number]
  240.            Write data from a random buffer to a data file
  241. READ      READ var [,var ...]
  242.            Read data from a DATA statement into the specified vars
  243. RSET      RSET field var = string exp
  244.            Store  data  in  a random file buffer right justified  or  right 
  245.            justify a non-disk string in a given field
  246. WRITE     WRITE [list of exps]
  247.            Output data to the terminal
  248.           WRITE #f, list of exps
  249.            Output data to a sequential file or a random field buffer
  250. :Operators
  251.  
  252. Symbol    Function
  253.  =        Assignment or equality test
  254.  -        Negation or subtraction
  255.  +        Addition or string concatenation
  256.  *        Multiplication
  257.  /        Division (floating point result)
  258.  ^        Exponentiation
  259.  \        Integer division (integer result)
  260. MOD       Integer modulus (integer result)
  261. NOT       One's complement (integer)
  262. AND       Bitwise AND (integer)
  263. OR        Bitwise OR (integer)
  264. XOR       Bitwise exclusive OR (integer)
  265. EQV       Bitwise equivalence (integer)
  266. IMP       Bitwise implication (integer)
  267. =,>,<,    Relational tests (TRUE=-1, FALSE=0)
  268.   <=,=<,
  269.   >=,=>,
  270.   <>
  271.  
  272. The precedence of operators is --
  273.  1.  Expressions in parentheses     8.  Relational Operators
  274.  2.  Exponentiation                 9.  NOT
  275.  3.  Negation (Unary -)            10.  AND
  276.  4.  *,/                           11.  OR
  277.  5.  \                             12.  XOR
  278.  6.  MOD                           13.  IMP
  279.  7.  +,-                           14.  EQV
  280. :Arithmetic Functions
  281. Function       Action
  282.  
  283. ABS(exp)       Absolute value of expression
  284. ATN(exp)       Arctangent of expression (in radians)
  285. CDBL(exp)      Convert the expression to a double precision number
  286. CINT(exp)      Convert the expression to an integer
  287. COS(exp)       Cosine of the expression (in radians)
  288.  
  289. CSNG(exp)      Convert the expression to a single precision number
  290. EXP(exp)       Raises the constant E to the power of the expression
  291. FIX(exp)       Returns truncated integer of expression
  292. FRE(exp)       Gives memory free space not used by MBASIC
  293. INT(exp)       Evaluates the expression for the largest integer
  294.  
  295. LOG(exp)       Gives the natural log of the expression
  296. RND[(exp)]     Generates a random number
  297.                  exp <0 seeds new sequence
  298.                  exp =0 returns previous number
  299.                  exp >0 or omitted returns new random number
  300.  
  301. Function       Action
  302.  
  303. SGN(exp)       1 if exp >0
  304.                0 if exp =0
  305.                -1 if exp <0
  306. SIN(exp)       Sine of the expression (in radians)
  307. SQR(exp)       Square root of expression
  308. TAN(exp)       Tangent of the expression (in radians)
  309. :String Functions
  310. Function       Action
  311.  
  312. ASC(str)       Returns ASCII value of first char in string
  313. CHR$(exp)      Returns a 1-char string whose char has ASCII code of exp
  314. FRE(str)       Returns remaining memory free space
  315. HEX$(exp)      Converts a number to a hexadecimal string
  316. INPUT$(length [,[#]f])
  317.                Returns a string of length chars read from console or from a 
  318.                disk file; characters are not echoed
  319.  
  320. INSTR([exp,]str1,str2)
  321.                Returns  the first position of the first occurrence of  str2 
  322.                in str1 starting at position exp
  323. LEFT$(str,len) Returns leftmost length chars of the string expression
  324. LEN(str)       Returns the length of a string
  325. MID$(string,start[,length])
  326.                Returns chars from the middle of the string starting at  the 
  327.                position  specified  to the end of the string or for  length 
  328.                characters
  329.  
  330. Function       Action
  331.  
  332. OCT$(exp)      Converts an expression to an Octal string
  333. RIGHT$(str,len)
  334.                Returns rightmost length chars of the string expression
  335. SPACE$(exp)    Returns a string of exp spaces
  336. STR$(exp)      Converts a numeric expression to a string
  337. STRING$(length,str)
  338.                Returns  a string length long containing the first  char  of 
  339.                the str
  340. STRING$(length,exp)
  341.                Returns  a string length long containing chars with  numeric 
  342.                value exp
  343. VAL(str)       Converts  the  string  representation of  a  number  to  its 
  344.                numeric value
  345. :I/O and Special Functions
  346.  
  347. Function       Action
  348. CVI(str)       Converts a 2-char string to an integer
  349. CVS(str)       Converts a 4-char string to a single precision number
  350. CVD(str)       Converts an 8-char string to a double precision number
  351.  
  352. EOF(f)         Returns TRUE (-1) if file is positioned at its end
  353. ERL            Error Line Number
  354. ERR            Error Code Number
  355. INP(port)      Inputs a byte from an input port
  356. LOC(f)         Returns next record number to read or write (random file) or 
  357.                number of sectors read or written (sequential file)
  358. LPOS(n)        Returns carriage position of line printer (n is dummy)
  359.  
  360. MKI$(value)    Converts an integer to a 2-char string
  361. MKS$(value)    Converts a single precision values to a 4-char string
  362. MKD$(value)    Converts a double precision value to an 8-char string
  363.  
  364.  
  365. Function       Action
  366.  
  367. PEEK(exp)      Reads a byte from memory location specified by exp
  368. POS(n)         Returns carriage position of terminal (n is dummy)
  369.  
  370. SPC(exp)       Used in PRINT statements to print spaces
  371. TAB(exp)       Used in PRINT statements to tab to specified position
  372.  
  373. USR[n](arg)    Calls the user's machine language subroutine with the arg
  374.  
  375. VARPTR(var)    Returns address of var in memory or zero if var has not been 
  376.                assigned a value
  377. VARPTR(#f)     Returns the address of the disk I/O buffer assigned to  file 
  378.                number
  379. :Interpreter Error Codes
  380. Code Error                         Code Error
  381.   1  NEXT without FOR               14  Out of string space
  382.   2  Syntax error                   15  String too long
  383.   3  RETURN without GOSUB           16  String formula too complex
  384.   4  Out of data                    17  Can't continue
  385.   5  Illegal function call          18  Undefined user function
  386.   6  Overflow                       19  No RESUME
  387.   7  Out of memory                  20  RESUME without error
  388.   8  Undefined line                 21  Unprintable error
  389.   9  Subscript out of range         22  Missing operand
  390.  10  Redimensioned array            23  Line buffer overflow
  391.  11  Division by zero               26  FOR without NEXT
  392.  12  Illegal direct                 29  WHILE without WEND
  393.  13  Type mismatch                  30  WEND without WHILE
  394.  
  395.  
  396. Disk Errors --
  397. Code Error                         Code Error
  398.  
  399.  50  Field overflow                 58  File already exists
  400.  51  Internal error                 61  Disk full
  401.  52  Bad file number                62  Input past end
  402.  53  File not found                 63  Bad record number
  403.  54  Bad file mode                  64  Bad file name
  404.  55  File already open              66  Direct statement in file
  405.  57  Disk I/O error                 67  Too many files
  406. :Introduction to the Microsoft BASIC Compiler
  407.  
  408.      The following direct mode commands are NOT implemented on the compiler 
  409. and will generate an error message --
  410.  
  411.           AUTO      CLEAR     CLOAD
  412.           CSAVE     CONT      DELETE
  413.           EDIT      LIST      LLIST
  414.           RENUM     COMMON    SAVE
  415.           LOAD      MERGE     NEW
  416.           ERASE
  417.  
  418.      The  following statements are used differently with the compiler  than 
  419. with the interpreter (refer to the manual for details) --
  420.  
  421.           CALL      DEFINT    DEFSNG
  422.           DEFDBL    DEFSTR    DIM
  423.           ERASE     END       ON ERROR GOTO
  424.           RESUME    STOP      TRON
  425.           TROFF     USRn
  426. :BASIC Compiler Commands and Switches
  427.  
  428.      The compiler is invoked by the BASCOM command; it may be called by --
  429.  
  430.           BASCOM
  431. or
  432.           BASCOM command line
  433.  
  434. where "command line" is --
  435.  
  436. [dev:][obj file][,[dev:][lst file]]=[dev:]source file[/switch ...]
  437.  
  438.      If  just BASCOM is used,  the user will be prompted with an  asterisk, 
  439. after which he should enter the command line.
  440.  
  441. Switches --
  442.  
  443. /E   Use this switch if ON ERROR GOTO with RESUME <line number> is used
  444.  
  445. /X   Use this switch if ON ERROR GOTO with RESUME, RESUME 0, or RESUME NEXT 
  446.      is used
  447.  
  448. /N   Do not list generated object code
  449.  
  450. /D   Generate debug/checking code at runtime
  451.  
  452. /S   Write quoted strings of more than 4 chars as they are encountered
  453.  
  454. /4   Recognize Microsoft 4.51 BASIC Interpreter conventions
  455.  
  456. /C   Relax  line  numbering   constraints;   lines  need  not  be  numbered 
  457.      sequentially; /4 and /C may not be used together
  458.  
  459. /Z   Use Z80 opcodes
  460. :BASIC Compiler Error Messages
  461. Compile-Time Fatal Errors
  462.  
  463.      SN   Syntax error             OM   Out of memory
  464.      SQ   Sequence error           TM   Type mismatch
  465.      TC   Too complex              BS   Bad subscript
  466.      LL   Line too long            UC   Unrecognizable command
  467.      OV   Math overflow            /0   Division by zero
  468.  
  469.      DD   Array already dim'ed     FN   FOR/NEXT error
  470.      FD   Function already def     UF   Function not defined
  471.      WE   WHILE/WEND error         /E   Missing /E switch
  472.                                    /X   Missing /X switch
  473.  
  474. Compile-Time Warning Errors
  475.  
  476.      ND   Array not dimensioned    SI   Statement ignored
  477.  
  478.  
  479. Run-Time Error Messages
  480.  
  481.       2   Syntax error             52   Bad file number
  482.       3   RETURN without GOSUB     53   File not found
  483.       4   Out of data              54   Bad file mode
  484.       5   Illegal function call    55   File already open
  485.       6   Floating/Integer ovfl    57   Disk I/O error
  486.  
  487.       9   Subscript out of range   58   File already exists
  488.      11   Division by zero         61   Disk full
  489.      14   Out of string space      62   Input past end
  490.      20   RESUME without error     63   Bad record number
  491.      21   Unprintable error        64   Bad filename
  492.  
  493.      50   Field overflow           67   Too many files
  494.      51   Internal error
  495.