|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- Some Notes on Installation of the Bywater BASIC Interpreter:
- -----------------------------------------------------------
-
- 0. Quick-Start Guide For Compiling
-
- To use the default configuration (which is reasonable for most situations):
-
- On Unix, type "configure; make".
- On MS-DOS using QuickC, type "nmake -f makefile.qcl".
-
- You can skip the rest of this file unless you want to customize the
- BASIC dialect that is supported, or something goes wrong in the
- above commands.
-
- 1. Compiler Requirements
-
- Although earlier versions of bwBASIC would compile only with
- ANSI C compilers, versions 2.10 and higher can be compiled
- with "stock" C compilers, i.e., compilers that comply with
- the older Kernighan and Ritchie C standard.
-
- Section I-B of bwbasic.h allows you to specify some compiler
- features. If you have an ANSI C compiler, you needn't worry
- with this. For stock C compilers, the default configuration
- presumes that your compiler supports signal() and raise()
- with the signal.h header, supports setjmp() and longjmp()
- with the setjmp.h header, and has a separate string.h
- header. If your compiler does not have these features
- and the related header files, you can indicate this in
- section I-B by setting appropriate flags to FALSE.
-
-
- 2. Configuration of header files
-
- You may need to examine file "bwbasic.h" to make important
- changes for specific hardware and compiler configurations.
- You may also need to change "bwx_tty.h" if you are using the
- TTY implementation or "bwx_iqc.h" if you are using the version
- for PCs with Microsoft QuickC (see below on "implementations").
- If you want to redefine messages or even the BASIC command
- names, you will need to edit "bwb_mes.h".
-
-
- 3. Makefiles
-
- Several makefiles are provided: "makefile.qcl" will compile
- the program utilizing the Microsoft QuickC (tm) line-oriented
- compiler on DOS-based p.c.'s, and "makefile" will compile the
- program on Unix-based computers utilizing either a stock C
- compiler or Gnu C++. I have also compiled the program utilizing
- Borland's Turbo C++ (tm) on DOS-based machines, although I have
- not supplied a makefile for Turbo C++.
-
- If you try the "IQC" implementation, you will need to alter
- makefile.qcl to include bwx_iqc.c (and bqx_iqc.obj) instead
- of bwx_tty.*.
-
-
- 4. Implementations
-
- The present status of bwBASIC allows two major implementations
- controlled by the IMP_TTY and IMP_IQC flags in bwbasic.h.
- IMP_TTY is the base implementation and presumes a simple
- TTY-style environment, with all keyboard and screen input
- and output directed through stdin and stdout. If IMP_TTY is
- defined as TRUE, then the file bwx_tty.h will be included,
- and a makefile should include compilation of bwx_tty.c.
- IMP_IQC is a somewhat more elaborate implementation for
- the IBM PC and compatible microcomputers utilizing the
- Microsoft QuickC compiler. This allows some more elaborate
- commands (CLS and LOCATE) and the INKEY$ function, and
- allows greater control over output. If IMP_IQC is defined
- as TRUE in bwbasic.h, then bwx_iqc.h will be included and
- bwx_iqc.c should be compiled in the makefile.
-
- Only one of the flags IMP_TTY or IMP_IQC should be set
- to TRUE.
-
-
- 5. Flags Controlling Groups of Commands and Functions
-
- There are a number of flags which control groups of commands
- and functions to be implemented.
-
- (core) Commands and Functions in any implementation of
- bwBASIC; these are the ANSI Minimal BASIC core
-
- INTERACTIVE Commands supporting the interactive programming
- environment
-
- COMMON_CMDS Commands beyond ANSI Minimal BASIC which are common
- to Full ANSI BASIC and Microsoft BASICs
-
- COMMON_FUNCS Functions beyond the ANSI Mimimal BASIC core, but
- common to both ANSI Full BASIC and Microsoft-style
- BASIC varieties
-
- UNIX_CMDS Commands which require Unix-style directory and
- environment routines not specified in ANSI C
-
- STRUCT_CMDS Commands related to structured programming; all
- of these are part of the Full ANSI BASIC standard
-
- ANSI_FUNCS Functions unique to ANSI Full BASIC
-
- MS_CMDS Commands unique to Microsoft BASICs
-
- MS_FUNCS Functions unique to Microsoft BASICs
-
-
- 6. Configurations
-
- The file bwbasic.h includes a number of configuration options
- that will automatically select groups of commands and functions
- according to predetermined patterns. These are:
-
- CFG_ANSIMINIMAL Conforms to ANSI Minimal BASIC standard X3.60-1978.
-
- CFG_COMMON Small implementation with commands and functions
- common to GWBASIC (tm) and ANSI full BASIC.
-
- CFG_MSTYPE Configuration similar to Microsoft line-oriented
- BASICs.
-
- CFG_ANSIFULL Conforms to ANSI Full BASIC standard X3.113-1987
- (subset at present).
-
- CFG_CUSTOM Custom Configuration specified by user.
-
- Only one of these flags should be set to TRUE.
-
-
- 7. Adding Commands and Functions
-
- In order to add a new command to bwBASIC, follow the following
- procedure:
-
- (a) Write the command body using function bwb_null() in bwb_cmd.c
- as a template. The command-body function (in C) must receive a
- pointer to a bwb_line structure, and must pass on a pointer to
- a bwb_line structure. The preferred method for returning from
- a command-body function is: return bwb_zline( l ); this will
- discriminate between MULTISEG_LINES programs which advance to
- the next segment and those which advance to the next line.
-
- (b) Add prototypes for the command-body function in bwbasic.h;
- you'll need one prototype with arguments in the ANSI_C section
- and one prototype without arguments in the non-ANSI_C section.
-
- (c) Add the command to the command table in bwb_tbl.c in the
- group you have selected for it.
-
- (d) Increment the number of commands for the group in which
- you have placed your command.
-
- The procedure for adding a new function is parallel to this, except that
- you should use fnc_null() in bwb_fnc.c as the template, and the
- function name must be added to the function table in bwb_tbl.c.
|