⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bas051.doc

📁 basic compiler for 8051
💻 DOC
字号:



                    BAS051 - License and Disclaimer Statement
                        Copyright (c) 1989 W. Washington
                              All rights reserved.


BAS051 is distributed as a user supported software product.  You may copy and 
distribute BAS051 and its accompanying files freely, as long as the files are 
distributed together unaltered.  There is NO registeration fee to use BAS051 in 
noncommerical applications.  Permission for commerical applications can easily 
be obtained from the author.  The author reserves the exclusive right to 
distribute BAS051 for profit.  BAS051 is written in C and a diskette containing 
the source for BAS051 is availiable from the author by sending $10 to the 
address below:

                 Winefred Washington
                 P. O. Box 3206
                 Huntsville, AL 35810

BAS051 is distributed "as is" without warranty as to its performance, or 
fitness for any purpose.  The entire risk is assumed by the user.




                                Table of Contents

I.         Introduction

II.        BAS051 syntax

III.       Compiling a BASIC program

IV.        BAS051 Supplied Routines and Libraries

V.         The Author's Tips and Comments





I.         Introduction


                  BAS051 - A BASIC Compiler for the 8051 Family

BAS051 is a BASIC compiler for the 8051/8031 microprocessor family which runs 
on an IBM PC or compatiable equipped with MS-DOS 2.0 or higher.  This compiler 
recognizes a subset of the BASIC programming language and generates assembly 
language sources files.  These files are input to an assembler to generate the 
machine language bytes for an EPROM.

In addition to BAS051, the following files for included:

           BAS051.exe  -     the BASIC compiler executable
           BAS051.doc  -     BAS051 documentation
           example.lib -     an example library for BAS051
           example.bas -     an example BASIC program
           example.asm -     the compiled .asm output
           example.lst -     the listing file from the assembler
           example.hex -     the Intel Hex format of the example program




II.        BAS051 Syntax

BAS051 recognizes a subset of the BASIC programming language.  Limited error 
checking is performed; therefore, it is important to submit syntactically 
correct programs for BAS051 to compile.  BAS051 is described below in Backus 
Naur Form (BNF).  All BASIC keywords appear in uppercase, and non-terminals 
appear in lowercase.  ASM and MEM are additional keywords added to enhance 
BAS051 programs.

ASM was added to allow the user to insert assembly language source lines inside 
the compiled code.  The ASM command enables the application program to be "fine 
tuned" by using assembly language statements.

MEM is used to access external RAM.  When MEM is compiled a MOVX instruction is 
generated with the DPTR pointing to the address given by the MEM function.  By 
using MEM, the user can access up to 64K of external RAM.

BAS051 is not case-sensitive, so keywords and variable names such as "THEN" and 
"then" are the same.  Variable name lengths are limited by the assembler used 
to generate the machine code, also all variables are one (1) byte.  In larger 
systems, the one variable/one byte feature is a restriction; however, in 
applications which are not math intensitive, the feature allows BAS051 to 
generate faster code.





                           BAS051 BASIC Syntax in BNF

program          : statements
                 ;

statements       :
                 | statement statements
                 ;

statement        : Number instruction ;

instruction      : Variable = expression
                 | MEM [ expression : expression ] = expression
                 | FOR Variable = expression TO expression
                 | Next
                 | IF ( expression relop expression ) THEN Number
                 | GOTO Number
                 | GOSUB Number
                 | RETURN
                 | READ Variable rest_of_read
                 | PRINT expression rest_of_print
                 | TITLE Textstring semicolon
                 | REM Textstring
                 | ASM Textstring
                 | END
                 ;

expression       : Variable
                 | MEM [ expression : expression ]
                 | Number
                 | ( expression )
                 | expression + expression
                 | expression - expression
                 | expression * expression
                 | expression / expression
                 | expression MOD expression
                 | expression AND expression
                 | expression OR expression
                 | expression XOR expression
                 ;

relop            : >
                 | <
                 | =
                 ;

rest_of_read     :
                 | , Variable rest_of_read
                 ;

rest_of_print    :
                 | , Variable rest_of_print semicolon
                 ;

semicolon        :
                 | ';'
                 ;





III.       Compiling a BASIC program


The command syntax of BAS051 is given below:

Syntax:          bas051 [option] file
Flags:           /c    The flag /cnnnn sets the origin of the code segment
                       to nnnn.
                 /d    The flag /dnnnn sets the origin of the data segment
                       to nnnn.
                 /l    The flag /llibname adds the library name given by
                       libname to the list of libraries added to the .asm
                       file.  An program may contain up to four libraries.

Examples:        bas051 /lexample.lib example.bas
                 bas051 /d100 /c0xaaa /lstdlib.h c:\basic\prog.bas
                          ^       ^      ^
                          |       |      |
                          |       |      --- library of routines
                          |       |
                          |       ------ hexidecimal code origin
                          -------------- decimal data origin



V.         BAS051 Supplied Routines and LIbraries

Commonly used routines can be placed in libraries which are added to BAS051 
compiled programs.  Example.lib is a library included to illustrate the 
technique used.  Below is a list of the routines which must be included with 
every program compiled under BAS051:

     basint: -   initialization code
     print: -    output character routine 9600 baud
     read: -     input character routine

At the start of every compiled program a long call to BASINT is made.  All 
additional initialization is placed in this routine by the user.

When input/output is required in a BAS051 program the compiler generates long 
calls to the "print" and "read" routines which send and receive data from the 
8051's serial port.  If the target has a different I/O system, the user may 
rewrite these routines to handle the custom I/O requirements.

The user should only modify these routines once he/she has a firm understanding 
of BAS051s inner workings.



V.         The Author's Tips and Comments

Listed below are helpful hints and suggestions about BAS051.


     A.   Variables in BASIC programs have a period appended to them
          when they appear in the .ASM file.
          Example: "count" becomes "count."
     
     B.   Line numbers in BASIC program have ".L" prefixed to them
          when they appear in the .ASM file.
          Example: "1000" becomes ".L1000"
     
     C.   Variables and line numbers may be accessed by custom assembly
          language routines by using their BAS051 generated names.
          To call a BASIC subroutine located at line 1000, simply write
          "ASM lcall   .L1000".
     
     D.   The assembly language output from BAS051 is based on the
          UNIX System V* assembler syntx.  The product, A51, by
          PseudoCode is an excellent assembler, reasonably priced,
          and can accept BAS051 .ASM files without modification.
          A51 is availiable from MicroKit, their address is:
          
                MicroKit
                6910 Patterson SE
                Caledonia, MI  49316
                (616) 791-9333
     
     E.   BAS051 opens a .tmp file called filename.tmp where filename
          equals the name of the BASIC program being compiled.  This
          file is deleted at the end of the compilation; therefore,
          the user should not use this filename for anything since it
          is overridden and deleted.
     
     F.   Since BAS051 opens several files at once, the user's CONFIG.SYS
          file should contain the line "FILES = xxx", where xxx is a
          value indicating the number of files that can be opened at the
          same time.  A value of ten is a good setting although BAS051
          does not open that many files.
     
     G.   Helpful suggestions and comments are welcome and can be
          sent to the address given below.  If you would like the source
          to BAS051, just send $10 and you will receive a 5 1/4"
          floppy containing the source used to create BAS051.
     
                Winefred Washington
                P. O. Box 3206
                Huntsville, AL 35810
     
     
     
     
     H.   If reader interest and support are great enough, future versions
          of BAS051 will include:
     
                1.  more variable types and sizes
                2.  an intergrated assembler
                3.  a linker and librarian.
     
     
     
     
     
     
     
     
     
     
     
     * UNIX is a trademark of AT&T.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -