Made it easier to build the rom drive
This commit is contained in:
1
software/CPM/BLANKFD/BLANK_240K.RAW
Normal file
1
software/CPM/BLANKFD/BLANK_240K.RAW
Normal file
File diff suppressed because one or more lines are too long
BIN
software/CPM/CPM_RFS_1/BBCBASIC.COM
Normal file
BIN
software/CPM/CPM_RFS_1/BBCBASIC.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/CAT.COM
Normal file
BIN
software/CPM/CPM_RFS_1/CAT.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/DIFF.COM
Normal file
BIN
software/CPM/CPM_RFS_1/DIFF.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/GREP.COM
Normal file
BIN
software/CPM/CPM_RFS_1/GREP.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/M80.COM
Normal file
BIN
software/CPM/CPM_RFS_1/M80.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/RM.COM
Normal file
BIN
software/CPM/CPM_RFS_1/RM.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/SORT.COM
Normal file
BIN
software/CPM/CPM_RFS_1/SORT.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/SPLIT.COM
Normal file
BIN
software/CPM/CPM_RFS_1/SPLIT.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/TR.COM
Normal file
BIN
software/CPM/CPM_RFS_1/TR.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/XDIR.COM
Normal file
BIN
software/CPM/CPM_RFS_1/XDIR.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/ZSID.COM
Normal file
BIN
software/CPM/CPM_RFS_1/ZSID.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/asm.com
Normal file
BIN
software/CPM/CPM_RFS_1/asm.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/ddt.com
Normal file
BIN
software/CPM/CPM_RFS_1/ddt.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/dump.com
Normal file
BIN
software/CPM/CPM_RFS_1/dump.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/ed.com
Normal file
BIN
software/CPM/CPM_RFS_1/ed.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/genhex.com
Normal file
BIN
software/CPM/CPM_RFS_1/genhex.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/load.com
Normal file
BIN
software/CPM/CPM_RFS_1/load.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/mac.com
Normal file
BIN
software/CPM/CPM_RFS_1/mac.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/mbasic.com
Normal file
BIN
software/CPM/CPM_RFS_1/mbasic.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/mbasic85.com
Normal file
BIN
software/CPM/CPM_RFS_1/mbasic85.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/peg.com
Normal file
BIN
software/CPM/CPM_RFS_1/peg.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/pip.com
Normal file
BIN
software/CPM/CPM_RFS_1/pip.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/stat.com
Normal file
BIN
software/CPM/CPM_RFS_1/stat.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/submit.com
Normal file
BIN
software/CPM/CPM_RFS_1/submit.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/xsub.com
Normal file
BIN
software/CPM/CPM_RFS_1/xsub.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_1/zde16.com
Normal file
BIN
software/CPM/CPM_RFS_1/zde16.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_2/L80.COM
Normal file
BIN
software/CPM/CPM_RFS_2/L80.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_2/M80.COM
Normal file
BIN
software/CPM/CPM_RFS_2/M80.COM
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_2/bascom.com
Normal file
BIN
software/CPM/CPM_RFS_2/bascom.com
Normal file
Binary file not shown.
379
software/CPM/CPM_RFS_2/bascom.hlp
Normal file
379
software/CPM/CPM_RFS_2/bascom.hlp
Normal file
@@ -0,0 +1,379 @@
|
||||
Introduction
|
||||
Format notation
|
||||
A sample session
|
||||
Writing a Basic program to be compiled
|
||||
Compiler-interpreter differences
|
||||
New programming features
|
||||
Second menu: Compiling, linking & loading, errors
|
||||
:INTRODUCTION
|
||||
|
||||
The Microsoft BASIC Compiler is a highly efficient programming tool that
|
||||
converts BASIC programs from BASIC source code into machine code. This
|
||||
provides much faster BASIC program execution than has previously been
|
||||
possible. It can make programs run an average of 3 to 10 times faster than
|
||||
programs run under BASIC-80. Compiled programs can be up to 30 times
|
||||
faster than interpreted programs if maximum use of integer variables is
|
||||
made.
|
||||
:FORMAT NOTATION
|
||||
|
||||
Wherever the format for a statement or command is given throughout this
|
||||
HELP file, the following rules apply:
|
||||
|
||||
1. Items in capital letters must be input as shown.
|
||||
|
||||
2. Items in lower case letters enclosed in angle brackets ( < > )
|
||||
are to be supplied by the user.
|
||||
|
||||
3. Items in sqare brackets ( [ ] ) are optional.
|
||||
|
||||
4. All punctuation except angle brackets and square brackets
|
||||
(i.e., commas, parentheses, semicolons, hyphens, and equal
|
||||
signs) must be included where shown.
|
||||
|
||||
5. Items followed by an ellipsis ( ... ) may be repeated any
|
||||
number of times (up to the length of the line).
|
||||
|
||||
6. Items separated by a vertical bar ( \ ) are mutually exclusive;
|
||||
choose one.
|
||||
:SAMPLE SESSION
|
||||
|
||||
The following instructions will take you step by step through the compila-
|
||||
tion process, from typing in the program to running the compiled version of
|
||||
it.
|
||||
|
||||
STEP 1: PRELIMINARIES
|
||||
|
||||
Load BASIC-80 (NOT included in the BASCOM package) from disk. The program
|
||||
will sign on and the letters
|
||||
|
||||
ok
|
||||
|
||||
will appear on the screen. Now enter:
|
||||
|
||||
AUTO 100, 100
|
||||
|
||||
This command instructs BASIC-80 to automatically generate line numbers,
|
||||
beginning with line 100 and incrementing by 100 each time you press ENTER.
|
||||
|
||||
STEP 2: ENTER THE PROGRAM
|
||||
|
||||
You are now ready to begin typing in your BASIC program. Anything that you
|
||||
know runs in BASIC-80 will do. Alternatively, just read in a BASIC-80
|
||||
program you already use.
|
||||
|
||||
STEP 3: SAVE THE PROGRAM
|
||||
|
||||
In order for the compiler to process it, you must save your source program
|
||||
in ASCII format. To do so, enter:
|
||||
|
||||
SAVE "MYPROG",A
|
||||
|
||||
There is now a BASIC program called MYPROG.BAS on your diskette that is
|
||||
ready to be compiled. (A program that is not yet compiled is called the
|
||||
source file.)
|
||||
|
||||
Return to CP/M by typing SYSTEM.
|
||||
|
||||
STEP 4: CHECK FOR ERRORS
|
||||
|
||||
At this point, it is a good idea to check the program for syntax errors.
|
||||
Removing syntax errors now will reduce the possibility of having to recom-
|
||||
pile later. To do this, enter:
|
||||
|
||||
BASCOM =MYPROG
|
||||
|
||||
This command loads the BASIC Compiler and compiles the source file without
|
||||
producing an object or listing file. If you have made any syntax errors, a
|
||||
two-letter code will appear on the screen. If this happens, return to STEP
|
||||
1, use the BASIC-80 interpreter again, and correct the errors.
|
||||
|
||||
If no errors were encountered, you are ready to continue.
|
||||
|
||||
STEP 5: COMPILE SOURCE FILE
|
||||
|
||||
These commands instruct the BASIC Compiler to compile MYPROG.BAS, to put
|
||||
the object in a file named MYPROG.REL, and to put the listing in a file
|
||||
named MYPROG.LST. (.REL and .LST are default extensions supplied by the
|
||||
BASIC Compiler.)
|
||||
|
||||
There are now a relocatable object file called MYPROG.REL and a listing
|
||||
file called MYPROG.LST on the disk. The object file contains the machine-
|
||||
readable code generated by the compiler. The listing file contains the
|
||||
BASIC program statements along with the machine language generated by each
|
||||
statement.
|
||||
|
||||
STEP 6: LOAD AND EXECUTE THE PROGRAM
|
||||
|
||||
The LINK-80 linking loader is used to produce an executable program. To use
|
||||
it, enter:
|
||||
|
||||
L80 MYPROG,MYPROG/N/E
|
||||
|
||||
This command runs LINK-80, which in turn loads the object file MYPROG.REL
|
||||
into the correct memory locations, then writes it to disk as a .COM file.
|
||||
During this process (which can take some time), runtime routines are drawn
|
||||
from the BASLIB.REL runtime library.
|
||||
|
||||
The compiled program which you stored on your own diskette can be run at
|
||||
any time, all by itself, without using any part of the BASIC Compiler. It
|
||||
works just like a standard CP/M command file. To execute, just enter:
|
||||
|
||||
MYPROG
|
||||
|
||||
The program should then work just as it did in the interpreter .. only much
|
||||
faster.
|
||||
:WRITING A BASIC PROGRAM TO BE COMPILED
|
||||
|
||||
BASIC programs which are to be compiled are, for most part, written in just
|
||||
the same way you have always written them to run with the interpreter.
|
||||
However, there are some differences between the statements and commands
|
||||
implemented in BASIC-80 and those implemented in the BASIC Compiler that
|
||||
must be taken into consideration.
|
||||
|
||||
The Compiler interacts with the console only to read compiler commands.
|
||||
These specify what files are to be compiled. There is no "direct mode", as
|
||||
with the MBASIC interpreter. Commands that are usually issued in the direct
|
||||
mode with MBASIC are not implemented on the compiler. The following state-
|
||||
ments and commands are not implemented and will generate an error message.
|
||||
|
||||
AUTO CLEAR* CLOAD CSAVE CONT
|
||||
DELETE EDIT LIST LLIST RENUM
|
||||
SAVE LOAD MERGE NEW COMMON*
|
||||
SYSTEM
|
||||
*
|
||||
(Note: Newer releases of the compiler which include the BRUN runtime module
|
||||
do support CHAINing with COMMON and CLEAR with certain restrictions.)
|
||||
|
||||
:FEATURES USED DIFFERENTLY BY THE BASIC COMPILER
|
||||
|
||||
DEFINT/SNG/DBL/STR
|
||||
The compiler does not "execute" DEFxxx statements; it reacts to the static
|
||||
occurrence of these statements, regardless of the order in which program
|
||||
lines are executed. A DEFxxx statement takes effect as soon as its line is
|
||||
encountered. Once the type has been defined for a given letter, it remains
|
||||
in effect until the end of the program or until a different DEfxxx state
|
||||
ment with that letter takes effect.
|
||||
|
||||
USRn Functions
|
||||
USRn functions are significantly different from the interpreter versions.
|
||||
The argument to the USRn function is ignored and an integer result is
|
||||
returned in the HL registers. It is recommended that USRn functions be
|
||||
replaced by the CALL statement. (See New BASIC Programming Features for
|
||||
definition of CALL.)
|
||||
|
||||
DIM and ERASE
|
||||
The DIM statement is similar to the DEFxxx statement in that it is scanned
|
||||
rather than executed. That is, DIM takes effect when its line is encoun-
|
||||
tered. If the default dimension (10) has already been established for an
|
||||
array variable and that variable is later encountered in a DIM statement, a
|
||||
DD (redimensioned array) error results. There is no ERASE statement in the
|
||||
compiler, so arrays cannot be erased and redimensioned. An ERASE statement
|
||||
will produce a fatal error.
|
||||
|
||||
Also note that the values of the subscripts in a DIM statement must be
|
||||
integer constants; they may not be variables, arithmetic expressions, of
|
||||
floating point values. For example,
|
||||
|
||||
DIM A1(I)
|
||||
DIM A1(3+4)
|
||||
|
||||
are both illegal statements.
|
||||
|
||||
END
|
||||
During execution of a compiled program, an END statement closes files and
|
||||
returns control to the operating system. The compiler assumes an END at the
|
||||
end of the program, so it is not necessary to insert an END statement in
|
||||
order to get proper program termination.
|
||||
|
||||
FOR/NEXT
|
||||
All FOR/NEXT loops must be statically nested with only 1 NEXT statement for
|
||||
each FOR statement.
|
||||
|
||||
ON ERROR GOTO/RESUME <line number>
|
||||
If a program contains ON ERROR GOTO and RESUME <line number> statements,
|
||||
the /E compilation switch must be used. If the RESUME NEXT, RESUME, or
|
||||
RESUME 0 form is used, the /X switch must also be included.
|
||||
|
||||
REM
|
||||
REM statements or remarks starting with a single quotation mark do not make
|
||||
up time or space during execution, and so may be used as freely as desired.
|
||||
|
||||
STOP
|
||||
The STOP statement is identical to the END statement. Open files are closed
|
||||
and control returns to the operating system.
|
||||
|
||||
TRON/TROFF
|
||||
In order to use TRON/TROFF, the /D compilation switch must be used. Other-
|
||||
wise, TRON and TROFF are ignored and a warning message is generated.
|
||||
:NEW BASIC PROGRAMMING FEATURES
|
||||
|
||||
The BASIC Compiler also adds new features that will add power and
|
||||
efficiency to your programming. Keep in mind when utilizing these new
|
||||
features that while they will compile with no problems, you cannot run a
|
||||
program using these features with your interpreter, since BASIC-80
|
||||
doesn't recognize them.
|
||||
|
||||
CALL Statement
|
||||
The CALL Statement allows you to call and transfer flow to an assembly
|
||||
language or FORTRAN subroutine.
|
||||
|
||||
The format of the CALL Statement is:
|
||||
|
||||
CALL <variable name> [(<argument list>)]
|
||||
|
||||
where <variable name> and <ergument list> are supplied by you.
|
||||
|
||||
<variable name> is the name of the subroutine you wish to call. This name
|
||||
must be 1 to 6 characters long and must be recognized by LINK-80 as a
|
||||
global symbol. (<variable name> must be the name of the subroutine in a
|
||||
FORTRAN SUBROUTINE statement or a PUBLIC symbol in an assembly language
|
||||
routine.)
|
||||
|
||||
<argument list> is optional and contains the arguments that are passed to
|
||||
the assembly language or FORTRAN subroutine.
|
||||
|
||||
Example: 120 CALL MYROUT (I,J,K)
|
||||
|
||||
CHAIN (or RUN)
|
||||
The CHAIN and RUN statements both perform the same function: they allow you
|
||||
to load a file from diskette into memory and run it. CHAIN (or RUN) closes
|
||||
all open files and deletes the current contents of memory before loading
|
||||
the designated program. The format of the CHAIN (or RUN) statement is as
|
||||
follows:
|
||||
|
||||
CHAIN <filename>
|
||||
OR
|
||||
RUN <filename>
|
||||
|
||||
where <filename> is the name used when the file was saved. (With CP/M the
|
||||
default extension .BAS is supplied.)
|
||||
|
||||
WHILE...WEND
|
||||
The WHILE...WEND statement is a conditional statement that executes a
|
||||
series of statements in a loop as long as a given condition is true.
|
||||
|
||||
The format of WHILE...WEND is:
|
||||
|
||||
WHILE <expression>
|
||||
-
|
||||
-
|
||||
<loop statements>
|
||||
-
|
||||
-
|
||||
WEND
|
||||
|
||||
where <expression> and <loop statements> are supplied by you.
|
||||
|
||||
As long as <expression> is true (i.e., not zero), loop statements are
|
||||
executed until the WEND statement is encountered. BASIC then returns to the
|
||||
WHILE statement and checks "expression". If it is still true, the process
|
||||
is repeated. If it is not true, execution resumes with the statement
|
||||
following the WEND statement.
|
||||
|
||||
WHILE/WEND loops may be nested to any level, as long as they are statically
|
||||
nested. Each WEND will match the most recent WHILE. An unmatched WHILE
|
||||
statement causes a "WHILE without WEND" error, and an unmatched WEND state-
|
||||
ment causes a "WEND without WHILE" error.
|
||||
|
||||
Example:
|
||||
090 'BUBBLE SORT ARRAY A$
|
||||
100 FLIPS=1 'FORCE ONE PASS THRU LOOP
|
||||
110 WHILE FLIPS
|
||||
115 FLIPS=0
|
||||
120 FOR I=1 TO J=1
|
||||
130 IF A$(I)>A$(I+1) THEN
|
||||
SWAP A$(I),A$(I+1):FLIPS=1
|
||||
140 NEXT I
|
||||
150 WEND
|
||||
|
||||
Double Precision Transendental Functions
|
||||
SIN, COS, TAN, SQR, LOG, and EXP now return double precision results if
|
||||
given double precision arguments. Exponentiation with double precision
|
||||
operands will return double precision results.
|
||||
|
||||
Long Variable Names
|
||||
Variable names may be up to 40 characters long with all 40 characters
|
||||
significant. Letters, numbers, and the decimal characters are allowed in
|
||||
variable names, but the name must begin with a letter. Variable names may
|
||||
also include all BASIC-80 commands, statements, function names, and
|
||||
operator names.
|
||||
|
||||
Expression Evaluation in the BASIC Compiler
|
||||
During program compilation, when the BASIC Compiler evaluates expressions,
|
||||
the operands of each operator are converted to the same type, that of the
|
||||
most precise operand. For example,
|
||||
|
||||
QR=J%+A!+Q
|
||||
|
||||
causes J% to be converted to single precision and added to A!. This result
|
||||
is coverted to single precision and added to Q.
|
||||
|
||||
The Compiler is more limited than the interpreter in handling numeric
|
||||
overflow. For example, when run on the interpreter the following program
|
||||
|
||||
I%=20000
|
||||
J%=20000
|
||||
K%=-30000
|
||||
M%=I%+J%-K%
|
||||
|
||||
yields 10000 for M%. That is, it adds I% to J% and, because the number is
|
||||
too large, it converts the result into a floating point number. K% is then
|
||||
converted to floating point nd subtracted. The result of 10000 is found,
|
||||
and is converted back to integer and saved as M%.
|
||||
|
||||
The Compiler, however, must make type conversion decisions during compila-
|
||||
tion. It cannot defer until the actual values are known. Thus, the compiler
|
||||
would generate code to perform the entire operation in integer mode. If the
|
||||
/D switch were set, the error would be detected. otherwise, an incorrect
|
||||
answer would be produced.
|
||||
|
||||
In order to produce optimum efficiency in the compiled program, the
|
||||
compiler may perform any number of valid algebraic transformations before
|
||||
generating the code. For axample, the program
|
||||
|
||||
I%=20000
|
||||
J%=-18000
|
||||
K%=20000
|
||||
M%=I%+J%+K%
|
||||
|
||||
could produce an incorrect result when run. If the compiler actually per-
|
||||
forms the arithmetic in the order shown, no overflow occurs. However, if
|
||||
the compiler performs I%+K% first and then adds J%, an overflow will occur.
|
||||
|
||||
The Compiler follows the rules of operator precedence and parenthetic
|
||||
modification of such precedence, but no other guarantee of evaluation order
|
||||
can be made.
|
||||
|
||||
Using Integer Variables To Optimize Speed
|
||||
In order to produce the fastest and most compact object code possible, make
|
||||
use of integer variables. For example, this program
|
||||
|
||||
FOR I=1 TO 10
|
||||
A(I)=0
|
||||
NEXT I
|
||||
|
||||
can execute approximately 30 times faster by simply substituting "I%" for
|
||||
"I". It is especially advantageous to use integer variables to compute
|
||||
array subscripts. The generated code is significantly faster and more
|
||||
compact.
|
||||
|
||||
Maximum Line Length
|
||||
The Compiler cannot accept a physical line that is more than 253 characters
|
||||
in length. A logical statement, however, may contain as many physical lines
|
||||
as desired. Use line feed to start a new physical line within a logical
|
||||
statement.
|
||||
::BASCOM2.HQP
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
a random file.
|
||||
51 Internal error
|
||||
An internal malfunc
|
||||
691
software/CPM/CPM_RFS_2/bascom2.hlp
Normal file
691
software/CPM/CPM_RFS_2/bascom2.hlp
Normal file
@@ -0,0 +1,691 @@
|
||||
Compiling a program
|
||||
Compilation switches
|
||||
Compile-time error messages
|
||||
The LINK-80 linking loader
|
||||
LINK-80 error messages
|
||||
Storing your program on disk
|
||||
Running your compiled program
|
||||
Runtime error messages
|
||||
Using M80
|
||||
:COMPILING A PROGRAM
|
||||
|
||||
Is your BASIC program now saved in ASCII format on your diskette? (To save
|
||||
your program in ASCII format when using the interpreter, add an "A" switch
|
||||
to the "SAVE" command, as shown in SAMPLE SESSION, Step 3:
|
||||
|
||||
SAVE "<filename>[.<ext>]",A
|
||||
|
||||
Return to CP/M command level and enter:
|
||||
|
||||
BASCOM
|
||||
|
||||
BASIC will return the prompt: "*", informing you that the BASIC
|
||||
Compiler is loaded and ready to accept a command.
|
||||
|
||||
Now enter the command of the form:
|
||||
|
||||
objfile,lstfile=source file
|
||||
|
||||
where objfile is the relocatable object file, lstfile is the listing file,
|
||||
and source file is the BASIC source program file.
|
||||
|
||||
A command to BASIC conveys the name of the source file to be compiled, and
|
||||
the names of the file(s) to be created. With CP/M filenames are up to eight
|
||||
characters long with a three-character extension. The default filename
|
||||
extensions supplied to CP/M are:
|
||||
|
||||
REL Relocatable object file
|
||||
LST Listing file
|
||||
BAS BASIC source file
|
||||
MAC MACRO-80 source file
|
||||
FOR FORTRAN-80 source file
|
||||
COB COBOL-80 source file
|
||||
COM Executable command file
|
||||
|
||||
If you have a multi-drive system, you can tell the compiler where to obtain
|
||||
or put the files you are working with by adding a drive number to each
|
||||
filename. For example:
|
||||
|
||||
A:MYPROG.REL=B:TEST
|
||||
|
||||
finds the program TEST.BAS on the diskette that is in drive B, compiles it,
|
||||
and puts the object in MYPROG.REL (on the diskette that is in drive A).
|
||||
|
||||
If a drive is NOT specified, the object and listing files are placed on the
|
||||
diskette that is in the default drive.
|
||||
|
||||
Either the object file or the listing file or both may be omitted. An
|
||||
object file is created only if the lstfile field is filled. Therefore, if
|
||||
you wish to omit either, simply leave its filename out of the command.
|
||||
|
||||
Examples:
|
||||
|
||||
TESTOBJ=TEST.BAS Compile the program TEST.BAS
|
||||
and put object in TESTOBJ.REL
|
||||
without producing listing file.
|
||||
TEST,TEST=TEST Compile TEST.BAS, put object in
|
||||
TEST.REL and listing in
|
||||
TEST.LST.
|
||||
,=TEST.BAS Compile TEST.BAS but produce no
|
||||
object or listing file. Useful
|
||||
for checking for errors.
|
||||
RABBIT=TEST Compile the program TEST.BAS
|
||||
and put object in RABBIT.REL
|
||||
without producing listing file.
|
||||
:BASIC COMPILATION SWITCHES
|
||||
|
||||
You can specify special parameters to be used during compilation by adding
|
||||
a switch to the end of the command string. Switches are always preceded by
|
||||
a slash, and more than one switch may be used in the same command. An
|
||||
example of the format would be:
|
||||
|
||||
TEST,TEST=TEST/D/X
|
||||
|
||||
The default switch settings used if you don't specify any switches are:
|
||||
|
||||
/Z/4/T
|
||||
|
||||
The available switches and their actions are as follows:
|
||||
|
||||
SWITCH ACTION
|
||||
|
||||
/E The /E switch tells the compiler that the program contains the ON
|
||||
ERROR GOTO statement. If a RESUME statement other than RESUME
|
||||
<line number> is used with the ON ERROR GOTO statement, use /X
|
||||
instead (see below). To handle ON ERROR GOTO properly, in a
|
||||
compiled environment, BASIC must generate some extra code for the
|
||||
GOSUB and RETURN statements. Therefore, do not use this switch
|
||||
unless your program contains the ON ERROR GOTO statement. The /E
|
||||
switch also causes line numbers to be included in the binary
|
||||
file, so runtime error messages will include the number of the
|
||||
line in error.
|
||||
|
||||
SWITCH ACTION
|
||||
/X The /X switch tells the BASIC Compiler that the program contains
|
||||
one or more RESUME, RESUME NEXT, or RESUME 0 statements. The /E
|
||||
switch is assumed when the /X switch is specified. To handle
|
||||
RESUME statements properly in a compiled environment, the
|
||||
compiler must relinquish certain optimizations. Therefore, do not
|
||||
use this switch unless your program contains RESUME statements
|
||||
other than RESUME <line number>. The /X switch also causes line
|
||||
numbers to be included in the binary file, so runtime error
|
||||
messages will include the number of the line in error.
|
||||
|
||||
/N The /N switch prevents listing of the generated code in symbolic
|
||||
notation. If this switch is not set, the source listing produced
|
||||
by the compiler will contain the object code generated by each
|
||||
statement.
|
||||
|
||||
SWITCH ACTION
|
||||
|
||||
/D The /D switch causes debug/checking code to be generated at
|
||||
runtime. This switch must be set if you want to use TRON/TROFF.
|
||||
The BASIC Compiler generates somewhat larger and slower code in
|
||||
order to perform the following checks:
|
||||
1. Arithmetic overflow. All arithmetic operations, integer and
|
||||
floating point, are checked for overflow and underflow.
|
||||
2. Array bounds. All array references are checked to see if the
|
||||
subscripts are within the bounds specified in the DIM state-
|
||||
ment.
|
||||
3. Line numbers are included in the generated binary so that
|
||||
runtime errors can indicate the statement which contains the
|
||||
error.
|
||||
4. RETURN is checked for a prior GOSUB.
|
||||
|
||||
/Z The /Z switch tells the compiler to use Z80 opcodes.
|
||||
|
||||
SWITCH ACTION
|
||||
|
||||
/S The /S switch forces the compiler to write long quoted strings
|
||||
(i.e. more than 4 characters) to the binary file as they are
|
||||
encountered. This allows large programs with many quoted strings
|
||||
to compile in less memory. However, there are two disadvantages:
|
||||
1. Memory space is wasted if identical, long quoted strings
|
||||
appear in the program.
|
||||
2. Code generated while the -S switch is set cannot be placed
|
||||
in ROM.
|
||||
|
||||
SWITCH ACTION
|
||||
|
||||
/4 The /4 switch allows the compiler to use the lexical conventions
|
||||
of Microsoft 4.51 Disk BASIC interpreter. That is, spaces are
|
||||
insignificant, variables with imbedded reserved words are
|
||||
illegal, variable names are restricted to two significant
|
||||
characters, etc. this feature is useful if you wish to compile a
|
||||
source program that was coded without spaces, and contains lines
|
||||
such as
|
||||
|
||||
FORI=ATOBSTEPC
|
||||
|
||||
Without the /4 switch, the compiler would assign the variable
|
||||
"ATOBSTEPC" to the variable FORI. With the /4 switch, it would
|
||||
recognize it as a FOR statement.
|
||||
|
||||
SWITCH ACTION
|
||||
/C The /C switch tells the compiler to relax line numbering con-
|
||||
straints. Whene /C is specified, line numbers may be in any
|
||||
order, or they may be eliminated entirely. Lines are compiled
|
||||
normally, but of course cannot be targets for GOTO's, GOSUB's,
|
||||
etc. While /C is set, the underline character causes the
|
||||
remainder of the physical line to be ignored, and the next
|
||||
physical line is considered to be a continuation of the current
|
||||
logical line. NOTE: /C and /4 may not be used together.
|
||||
|
||||
/T Use 4.51 execution conventions
|
||||
|
||||
/O (Newer versions only). Tells the compiler to construct a stand-
|
||||
alone program instead of one requiring presence of the BRUN.COM
|
||||
runtime module. This generates much bigger programs because all
|
||||
of the runtime routines must be included.
|
||||
:BASIC COMPILER ERROR MESSAGES
|
||||
|
||||
The following errors may occur while a program is compiling. The BASIC
|
||||
Compiler outputs the two-character code for the err, along with an arrow.
|
||||
The arrow indicates where in the line the error occurred. In those cases
|
||||
where the compiler has read ahead before it discovered an error, the arrow
|
||||
points a few characters beyond the error, or at the end of the line. The
|
||||
error codes are as follows:
|
||||
|
||||
FATAL ERRORS
|
||||
|
||||
CODE ERROR
|
||||
SN Syntax Error. Caused by one of the following:
|
||||
Illegal argument name
|
||||
Illegal assignment target
|
||||
Illegal constant format
|
||||
Illegal debug request
|
||||
Illegal DEFxxx character specification
|
||||
Illegal expression syntax
|
||||
Illegal function argument list
|
||||
Illegal function name
|
||||
|
||||
CODE ERROR
|
||||
SN Syntax Error. Caused by one of the following:
|
||||
Illegal function formal parameter
|
||||
Illegal separator
|
||||
Illegal format for statement number
|
||||
Illegal subroutine syntax
|
||||
Invalid character
|
||||
Missing AS
|
||||
Missing equal sign
|
||||
Missing GOTO or GOSUB
|
||||
Missing comma
|
||||
Missing INPUT
|
||||
Missing line number
|
||||
Missing left parenthesis
|
||||
Missing minus sign
|
||||
Missing operand in expression
|
||||
Missing right parenthesis
|
||||
Missing semicolon
|
||||
Name too long
|
||||
Expected GOTO or GOSUB
|
||||
|
||||
CODE ERROR
|
||||
SN Syntax Error. Caused by one of the following:
|
||||
String assignment required
|
||||
String expression required
|
||||
String variable required here
|
||||
Illegal syntax
|
||||
Variable required here
|
||||
Wrong number of arguments
|
||||
Formal parameters must be unique
|
||||
Single variable only allowed
|
||||
Missing TO
|
||||
Illegal FOR loop index variable
|
||||
Missin THEN
|
||||
Missing BASE
|
||||
Illegal subroutine name
|
||||
OM Out of memory
|
||||
Array too big
|
||||
Data memory overflow
|
||||
Too many statement numbers
|
||||
Program memory overflow
|
||||
|
||||
CODE ERROR
|
||||
SQ Sequence Error
|
||||
Duplicate statement number
|
||||
Statement out of sequence
|
||||
TM Type Mismatch
|
||||
Data type conflict
|
||||
Variables must be of same type
|
||||
BS Bad Subscript
|
||||
Illegal dimension value
|
||||
Wrong number of subscripts
|
||||
LL Line Too Long
|
||||
UC Unrecognizable Command
|
||||
Statement unrecognizable
|
||||
Command not implemented
|
||||
OV Math Overflow
|
||||
/0 Division by Zero
|
||||
DD Array Already Dimensioned
|
||||
FN FOR/NEXT Error
|
||||
FOR loop index variable already in use
|
||||
FOR without NEXT
|
||||
NEXT without FOR
|
||||
|
||||
CODE ERROR
|
||||
FD Function Already Defined
|
||||
UF Function Not Defined
|
||||
WE WHILE/WEND Error
|
||||
WHILE without WEND
|
||||
WEND without WHILE
|
||||
/E Missing "/E" Switch
|
||||
/X Missing "/X" Switch
|
||||
|
||||
WARNING ERRORS
|
||||
ND Array Not Dimensioned
|
||||
SI Statement Ignored
|
||||
Statement ignored
|
||||
Unimplemented command
|
||||
|
||||
If the BASIC Compiler informs you of any of these errors, return to the
|
||||
source program for debugging and try again.
|
||||
|
||||
If no errors were encountered during compilation, and if you so chose, you
|
||||
now have an object file containing machine readable code on your diskette.
|
||||
Also on your diskette is a listing file which contains the BASIC program
|
||||
statements along with the machine language generated by each statement.
|
||||
|
||||
The next step in the process is loading and executing the program with
|
||||
LINK-80.
|
||||
|
||||
:LINK-80 LINKING LOADER
|
||||
|
||||
As demonstrated in SAMPLE SESSION, compiled BASIC object files are loaded
|
||||
into memory and executed using the LINK-80 linking loader. The loader has
|
||||
many uses. You may wish to simply load one compiled program and run it, or
|
||||
you may load several programs, subprograms, or assembly language
|
||||
subroutines at the same time. Programs may be loaded at user-specified
|
||||
locations, and program areas and data areas may be separated in memory. A
|
||||
memory image of the executable file produced by LINK-80 can be saved on
|
||||
disk and run at a later time.
|
||||
|
||||
RUNNING LINK-80
|
||||
|
||||
At CP/M command level, enter:
|
||||
|
||||
L80
|
||||
|
||||
This loads LINK-80, which will respond with: * . The loader exits back
|
||||
to CP/M if a CONTROL-C is typed after the asterisk. (The loader also exits
|
||||
back to CP/M after an /E switch or /G switch is executed. More on these
|
||||
switches later.)
|
||||
|
||||
LINK-80 COMMAND FORMAT
|
||||
|
||||
A command to LINK-80 is made up of the filename(s) of the file(s) to be
|
||||
loaded. For example, to load the compiled program MYPROG.REL, enter:
|
||||
|
||||
MYPROG
|
||||
|
||||
(It is not necessary to type the default extension .REL.) This loads the
|
||||
program but does not run it. Whenever LINK-80 loads a BASIC Compiler
|
||||
program, it automatically searches the BASIC library for the necessary
|
||||
routines and loads these as well. Therefore, BASLIB.REL must be on the
|
||||
default drive during the loading process.
|
||||
|
||||
To run MYPROG, enter:
|
||||
|
||||
/G
|
||||
|
||||
This is the "go" or execute switch. LINK-80 prints two numbers and a BEGIN
|
||||
EXECUTION message. LINK-80 always returns to TRSDOS after a /G switch has
|
||||
been executed.
|
||||
|
||||
As you probably have guessed, it is not necessary to perform these
|
||||
operations with separate commands. It is possible to type one command line
|
||||
that runs LINK-80, loads MYPROG.REL and executes it. To do this, enter:
|
||||
|
||||
L80 MYPROG/G
|
||||
|
||||
MORE COMMANDS AND SWITCHES
|
||||
|
||||
LINK-80 provides other capabilities besides loading and executing
|
||||
programs, such as looking at output without saving the program or
|
||||
resetting the loader so that you can correct a mistake. Switches are
|
||||
used to inform LINK-80 that you wish to perform special tasks.
|
||||
|
||||
Here is an example that loads and saves a program called TEST.REL.
|
||||
|
||||
>L80
|
||||
*TEST,TEST/N/E
|
||||
|
||||
The first part of the command (TEST) loads the program called TEST.REL. The
|
||||
next part (TEST/N) saves a copy of the loaded program on disk in a file
|
||||
called TEST.COM. The last part (/E) causes LINK-80 to exit back to CP/M.
|
||||
|
||||
THE /N SWITCH
|
||||
|
||||
Take note of the /N switch. This switch saves a memory image of the
|
||||
executable file on disk. The default extension for the saved file is .COM,
|
||||
and this file is called a "command file". Once saved on disk, you need only
|
||||
type the filename at CP/M command level to run the program. The /N switch
|
||||
must immediately follow the filename of each file you wish to save, and it
|
||||
does not take effect until a /E or /G switch is done.
|
||||
|
||||
The following example links several object files, saves the main program
|
||||
image and executes the program TAXES.REL.
|
||||
|
||||
>L80
|
||||
*SUB1,SUB2,TAXES/N,TAXES/G
|
||||
|
||||
Two subroutines (SUB1) and (SUB2) and an object file (TAXES) are linked and
|
||||
loaded. The program is executed and the command file TAXES.COM is saved on
|
||||
disk.
|
||||
|
||||
THE /R SWITCH
|
||||
|
||||
Another handy switch is /R. It returns LINK-80 to it's initial state by
|
||||
"unloading" whatever you've loaded. Use it to reset the loader if you've
|
||||
made a typing mistake or loaded the wrong program. The /R switch takes
|
||||
effect as soon as LINK-80 sees it, so if you enter it at any time while
|
||||
LINK-80 is running, the loader will reset. For example:
|
||||
|
||||
>L80
|
||||
*INVEN1
|
||||
*/R (oops-- meant to load INVEN2)
|
||||
*INVEN2 (now only INVEN2 is loaded)
|
||||
|
||||
SPECIAL SWITCHES
|
||||
|
||||
For typical BASIC Compiler operation, only the above switches will be
|
||||
needed. Some users may find that their applications require more
|
||||
specialized capabilities. For this reason, the following switches are also
|
||||
provided with LINK-80.
|
||||
|
||||
In these examples, all programs have been loaded at the default origins
|
||||
of CP/M. In special cases, the user may wish to specify the origins of
|
||||
the programs and data that are loaded. LINK-80 provides special switches to
|
||||
do this.
|
||||
|
||||
/E:Name This is an optional form of the /E switch. Name is a global
|
||||
symbol previously defined in one of the modules. LINK-80
|
||||
uses Name for the start address of the program.
|
||||
|
||||
/G:Name This is an optional form of the /G switch. Name is a global
|
||||
symbol previously defined in one of the modules. LINK-80
|
||||
uses Name for the start address of the program.
|
||||
|
||||
/P and /D /P and /D allow the origin(s) to be set for the next program
|
||||
loaded. /P and /D take effect when seen (not deferred), and
|
||||
they have no effect on programs already loaded. The form is
|
||||
/P:<address> or /D:<address>, where <address> is the desired
|
||||
origin in the current typeout radix. (Default radix is
|
||||
hexadecimal. /O sets radix to octal; /H to hex.) LINK-80
|
||||
does a default /P:<link origin> (i.e., 100h).
|
||||
|
||||
If no /D is given, data areas are loaded before program
|
||||
areas for each module. If a /D is given, All Data and Common
|
||||
areas are loaded starting at the data origin and the program
|
||||
area at the program origin. Example:
|
||||
|
||||
*/P:200,FOO
|
||||
DATA 200 300
|
||||
*/R
|
||||
*/P:200-D:400,FOO
|
||||
DATA 400 480
|
||||
PROGRAM 200 280
|
||||
|
||||
/U List the origin and end of the program and data area and all
|
||||
undefined globals as soon as the current command line has
|
||||
been interpreted. The program information is only printed if
|
||||
a /D has been done. Otherwise, the program is stored in the
|
||||
data area.
|
||||
|
||||
/M List the origin and end of the program and data area, all
|
||||
undefined globals and their values, and all undefined
|
||||
globals followed by an asterisk. The program information is
|
||||
only printed if a /D has been done. Otherwise, the program
|
||||
is stored in the data area.
|
||||
|
||||
/X If a filename/N was specified, /X will cause the file to be
|
||||
saved in INTEL ascii HEX format with an extension of .HEX.
|
||||
|
||||
/Y If a filename/N was specified, /Y will create a filename.SYM
|
||||
file when /E is entered. This file contains the names and
|
||||
addresses of all Globals for use with Digital Research's SID
|
||||
and ZSID debuggers.
|
||||
|
||||
SYSTEM LIBRARY SEARCHES
|
||||
|
||||
Whenever a BASIC Compiler program is loaded, LINK-80 automatically searches
|
||||
the BASIC Compiler library for the routines it needs and loads them. If you
|
||||
gat an "Undefined" error, it means the compiler couldn't find something it
|
||||
needed to finish compiling the program. Usually this is the name of a
|
||||
subroutine that you forgot to load.
|
||||
|
||||
If you are using the BASIC Compiler in conjunction with Microsoft's
|
||||
FORTRAN-80, you may also be referencing some of FORTRAN's library routines.
|
||||
For this reason, the /S switch is included in LINK-80 to force a search of
|
||||
particular library modules. For example:
|
||||
|
||||
*FORLIB/S,TEST/G
|
||||
|
||||
Unless you are using FORLIB (supplied with FORTRAN-80), you should not need
|
||||
the /S switch.
|
||||
|
||||
|
||||
:LINK-80 ERROR MESSAGES
|
||||
|
||||
LINK-80 has the following error messages:
|
||||
|
||||
?No Start Address A /G switch was issued, but no main
|
||||
program had been loaded.
|
||||
|
||||
?Loading Error The last file given for input was
|
||||
not a properly formatted LINK-80
|
||||
object file.
|
||||
|
||||
?Out of Memory Not enough memory to load program.
|
||||
|
||||
?Command Error Unrecognizable LINK-80 command.
|
||||
|
||||
?<file> Not Found <file>, as given in the command string,
|
||||
did not exist.
|
||||
|
||||
%2nd COMMON larger The first definition of COMMON
|
||||
block /XXXXXX/ was not the largest
|
||||
definition. Reorder module loading
|
||||
sequence or change COMMON block
|
||||
definitions.
|
||||
|
||||
%Mult. Def. Global YYYYYY
|
||||
More than one definition for the
|
||||
global (internal) symbol YYYYYY was
|
||||
encountered during the loading
|
||||
process.
|
||||
|
||||
%Overlaying Program Area ,Start = xxxx
|
||||
Data ,Public = <symbol name>(xxxx)
|
||||
,External = <symbol name>(xxxx)
|
||||
A /D or /P will cause already
|
||||
loaded data to be destroyed.
|
||||
|
||||
?Intersecting Program Area
|
||||
Data The program and data area intersect
|
||||
and an address or external chain
|
||||
entry is in this intersection. The
|
||||
final value cannot be converted to
|
||||
a current value since it is in the
|
||||
area intersection.
|
||||
?Start Symbol - <name> - Undefined
|
||||
After a /E: or /G: is given, the
|
||||
symbol specified was not defined.
|
||||
|
||||
Origin Above (Below) Loader Memory, Move Anyway (Y or N)?
|
||||
After a /E or /G was given, either
|
||||
the data or program area has an
|
||||
origin or top which lies outside
|
||||
loader memory (i.e., loader origin
|
||||
to top of memory). If a Y CR is
|
||||
given, LINK-80 will move the area
|
||||
and continue. If anything else is
|
||||
given, LINK-80 will exit. In either
|
||||
case, if a /N was given, the image
|
||||
will already have been saved.
|
||||
|
||||
?Can't save Object File A disk error occurred when the file was being
|
||||
saved.
|
||||
:STORING YOUR PROGRAM ON DISKETTE
|
||||
|
||||
Once it has been loaded by LINK-80, the object file is in a form that can
|
||||
be executed by any CP/M computer. You can save this compiled program on
|
||||
your own diskette so that it can be executed at a later time without using
|
||||
the BASIC Compiler at all.
|
||||
|
||||
The /N switch (discussed in the LINK-80 section) is the switch that causes
|
||||
your object file to be saved. The default extension for the saved file is
|
||||
.COM and this file is called a "command file".
|
||||
|
||||
:RUNNING YOUR COMPILED PROGRAM
|
||||
|
||||
Your compiled program (previously saved on your own diskette) can now be
|
||||
executed any time you wish. When you are at CP/M command level the diskette
|
||||
on which you saved your program is inserted into a drive, simply enter:
|
||||
|
||||
<filename>
|
||||
|
||||
At this point, your program should execute and your output should appear on
|
||||
the screen. However, you may get a runtime error message. If you do, look
|
||||
it up in the following list, and debug your program as best you can before
|
||||
trying to store it on diskette again.
|
||||
|
||||
|
||||
:RUNTIME ERROR MESSAGES
|
||||
|
||||
The following errors may occur while a compiled program is executing. The
|
||||
error numbers match those issued by the BASIC-80 interpreter. The compiler
|
||||
runtime system prints long error messages followed by an address, unless
|
||||
/D, /E, or /X is specified. In those cases the error message is followed by
|
||||
the number of the line in which the error occurred.
|
||||
|
||||
NUMBER MESSAGE
|
||||
2 Syntax error
|
||||
A line is encountered that contains an incorrect
|
||||
sequence of characters in a DATA statement.
|
||||
3 RETURN without GOSUB
|
||||
A RETURN statement is encountered for which there
|
||||
is no previous, unmatched GOSUB ststement.
|
||||
4 Out of Data
|
||||
A READ statement is executed when there are no
|
||||
DATA statements with unread data remaining in the
|
||||
program.
|
||||
|
||||
NUMBER MESSAGE
|
||||
|
||||
5 Illegal function call
|
||||
A parameter that is out of range is passed to a
|
||||
math or string function. An FC error may also
|
||||
occur as the result of:
|
||||
|
||||
1. a negative or unreasonably large subscript
|
||||
2. a negative or zero argument with LOG
|
||||
3. a negative argument to SQR
|
||||
4. a negative mantissa with a non-integer
|
||||
exponent
|
||||
5. a call to a USR function for which the
|
||||
starting address has not yet been given
|
||||
6. an improper argument to ASC, CHR$, MID$,
|
||||
LEFT$, RIGHT$, INP, OUT, WAIT, PEEK, POKE,
|
||||
TAB, SPC, STRING$, SPACE$, INSTR, or
|
||||
ON...GOTO
|
||||
7. a string concatenation that is longer than
|
||||
255 characters
|
||||
|
||||
NUMBER MESSAGE
|
||||
6 Floating overflow or integer overflow
|
||||
The result of a calculation is too large to be
|
||||
represented in BASIC-80's number format. If
|
||||
underflow occurs, the result is zero and execution
|
||||
continues without an error.
|
||||
9 Subscript out of range
|
||||
An array element is referenced with a subscript
|
||||
that is outside the dimensions of the array.
|
||||
11 Division by zero
|
||||
A division by zero is encountered in an
|
||||
expression, or the operation of involution results
|
||||
in zero being raised to a negative power. Machine
|
||||
infinity with the sign of the numerator is
|
||||
supplied as the result of the division, or
|
||||
positive machine infinity is supplied as the
|
||||
result of the involution, and execution continues.
|
||||
14 Out of string space
|
||||
String variables exceed the allocated amount of
|
||||
string space.
|
||||
|
||||
NUMBER MESSAGE
|
||||
20 RESUME without error
|
||||
A RESUME statement is encountered before an error
|
||||
trapping routine is entered.
|
||||
21 Unprintable error
|
||||
An error message is not available for the error
|
||||
condition which exists. This is usually caused by
|
||||
an ERROR with an undefined error code.
|
||||
50 Field overflow
|
||||
A FIELD statement is attempting to allocate more
|
||||
bytes than were specified for the record length of
|
||||
a random file.
|
||||
51 Internal error
|
||||
An internal malfunction has occurred in Disk
|
||||
BASIC-80. Report to Microsoft the conditions under
|
||||
which the message appeared.
|
||||
52 Bad file number
|
||||
A statement or command references a file with a
|
||||
file number that is not OPEN or is out of the
|
||||
range of file numbers specified at initialization.
|
||||
|
||||
NUMBER MESSAGE
|
||||
53 File not found
|
||||
A RUN, CHAIN, KILL, or OPEN statement references a
|
||||
file that does not exist on the current disk.
|
||||
54 Bad file mode
|
||||
An attempt is made to use PUT, GET, or LOF with a
|
||||
sequential or to execute an OPEN with a file mode
|
||||
other than I, O, R, D.
|
||||
55 File already open
|
||||
A sequential output mode OPEN is issued for a file
|
||||
that is already open; or a KILL is given for a
|
||||
file that is open.
|
||||
57 Disk I/O error
|
||||
An I/O error occurred on a disk I/O operation. It
|
||||
is a fatal error, i.e., theoperating system cannot
|
||||
recover from the error.
|
||||
58 File already exists
|
||||
The filename specified is identical to a filename
|
||||
already in use on the disk.
|
||||
61 Disk Full
|
||||
All disk storage space is in use.
|
||||
|
||||
NUMBER MESSAGE
|
||||
62 Input past end
|
||||
An INPUT statement is executed after all the data
|
||||
in the file has been INPUT, or for a null (empty)
|
||||
file. To avoid this error, use the EOF function to
|
||||
detect the end of file.
|
||||
63 Bad record number
|
||||
In a PUT or GET statement, the record number is
|
||||
either greater than the maximum allowed (32767) or
|
||||
equal to zero.
|
||||
64 Bad file name
|
||||
An illegal form is used for the filename with RUN,
|
||||
CHAIN, KILL, or OPEN (e.g., a filename with too
|
||||
many characters).
|
||||
67 Too many files
|
||||
An attempt is made to create a new file (using
|
||||
OPEN) when the directory is full.
|
||||
::M80.HQP
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
d file is .COM,
|
||||
and this file is called a "command file". Once saved
|
||||
BIN
software/CPM/CPM_RFS_2/baslib.rel
Normal file
BIN
software/CPM/CPM_RFS_2/baslib.rel
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_2/brun.com
Normal file
BIN
software/CPM/CPM_RFS_2/brun.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_2/cref.com
Normal file
BIN
software/CPM/CPM_RFS_2/cref.com
Normal file
Binary file not shown.
BIN
software/CPM/CPM_RFS_2/cref80.com
Normal file
BIN
software/CPM/CPM_RFS_2/cref80.com
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user