|
ZX Format #03
29 февраля 1996 |
|
Programmers - Basic to all number 3.

BASIC.
# 3
(C) Dm. Rudovsky 1996
________________________________
This article focuses on
BASIC compilers.
This section of the application is interesting because it
can significantly increase the speed of BASIC programs and
thereby removing one of the most severe restrictions BASIC -
slowness.
________________
Compilers beysika on Spect
room can be divided into two
Groups:
1. Compiler interprets the type. These compilers convert the
program into a special code, intuitive control program, which
is a simplified version built interpreter, due to which
there is gain in speed.
However, code compiled
programs have in
BASIC program, or in the field
variables, which makes it impossible to create the overlay
(nested) procedure.
2. Compiler translates
type. Compilers of this type
create a table of the addresses of routines and place the
compiled program, usually at the address, but because of
complication of the procedure compilation, take up more space
and have more restrictions.
Now, a brief description of the advantages and disadvantages
of that and other types of compilers.
Compilers of the first type, as
Typically, not only do not impose
restrictions on their use, but
and allow the funds to significantly expand the standard
beysika. As an example can be reduced Laser Basic Compiler. In
addition, they tend to use the same area as the standard
BASIC to store variables
that can be used without
additional complications to the treatment of non-standard
variables and functions.
The disadvantages of this type, the compiler, except as
specified above, may include more, and the impossibility of
creating control program beysike and small
efficiency of the compilation of
volume and speed.
To explain a little deviate from the topic: the
effectiveness of volume - the ratio of the length of the
program to compile to a size object module.
Effectiveness of speed -
the ratio of run-time following the program to compile and
after.
Here's the program:
10 FOR I = 16384 TO 22527
20 POKE I, 255
30 NEXT I
40 STOP
Count the time from when you <ENTER> and before the onset of
the inscriptions: 9 STOP statement, 40:1
Well, it's time to go back to the compiler. The second type
of compilers is also not ideal and
only its merits
are speed and portability of code, ie opportunity
compile almost to
anything and everything else - solid faults. There are more than
enough:
First, the weight restrictions,
imposed by the compiler to
program: one does not "digest" command BEEP, another
multi-dimensional arrays, the third general integer ...
Secondly, because of the complexities
compilation significantly grows
"Load" (block codes, you must compile the program
for work.)
Now more about the specific
compilers:
The first type.
Optimizing compiler BLAST
(Must be provided for this
with the utility TOOLKIT).
Immediately should be noted that
this description is largely drawn on the basis of the book
"Handbook of System Software 48K" firm SOLON and more
from the above needs
experimental verification. Check all of the following on
practice, I could not because of
absence in my archives normally disketirovannoy version
BLAST'a.
BLAST allows you to compile in immediate mode
program of not more than 3K.
At large sizes required
pretreatment program debugger TOOLKIT. The compiler accepts the
following command:
* C - Compiling a program.
* R - Start compiled
program.
* S - Record compiled
th module to the disk.
* I - Selecting the input memory device
Islands to compile.
R - memory;
E - recorder;
M - mikrodrayv.
* O - Select output device
properties (similar to the input)
BLAST can significantly
extend the standard beysika, using the construction: REM option.
Options:
! AUTORUN - Auto-compiled program after downloading;
! PCODE - Generation Secure Pi-code;
! MACHINE CODE - Generation
normal code;
! INT pairs. - Announcement of integer variables (take 2
bytes instead of the usual 5);
% ... - Regular commentary;
'& AmpBREAK (ON / OFF) - Enable /
disabling shutdown by pressing
BREAK.
'& AmpWHILE condition - operator
cycle, familiar to many by language
Pascal, C. When the truth of the conditions the operator is
passed, otherwise - Jumps to the statement following the '&
ampWEND.
'& AmpWEND - acts like
GO TO '& ampWHILE and serves to indicate the end of the cycle
WHILE ... WEND.
'& AmpREPEAT - on the operator, following this transition
occurs with the statement '& ampUNTIL.
'& AmpUNTIL condition - operator
similar '& ampWHILE, used
in the construction REPEAT ... UNTIL.
A small deviation for those
who are not familiar with Pascal or C.
In algorithmic languages generally divided into two types
of cycles: cycles and cycles with the precondition with
postcondition.
Loops with a precondition ('& ampWHILE
... WEND), with an initial value
conditions - a lie, never satisfied. In contrast, the loops
with postcondition (FOR. .. NEXT, REPEAT ... UNTIL) are
performed at least once, even if the condition
false.
'& AmpDOKE x, y - Version POKE, but
record in the x word (2 byte) y;
'& AmpDEEK x, y - Function tantamount: Y = 256 * PEEK (X +1)
+ PEEK (X);
'& AmpCALL x, [a, b, c ,...] - Calling
routines in machine code for
at x, with the transfer of the optional parameters a, b, c, ...
so that on the first of them indicates registry IX;
'& AmpELSE operators - a very useful addition, there
virtually all versions of beysika and is used in the
construction of IF ... THEN ... ELSE ..., where specifies what
actions produce in the event of failure conditions after IF.
And a few more niceties:
1. Likely BLAST hit
(Or fall) to you with the unwithdrawn
protection from this problem, we recommend to apply to the said
above the source.
2. If you managed to compile your program in
BLAST'e, here is the method of unloading
program on tape (on disk as well?):
15 LOAD "PROC"
20 RANDOMIZE USR PEEK 23635 +
256 * PEEK 23636 +150: SAVE
"PROC" LINE 15
3. Compiled module
works only if the
memory unit operating procedures RT
CODE.
4. Compiler Features:
The coefficient of volume: 95%
Speed ratio: 145%
Size of the "sample": 5K
! Program Description TOOLKIT
given in the second issue of the magazine.
Compiler BASIC programs
from the package LASER BASIC
Company OASIS SOFTWARE.
About this compiler says
many will not, because later, when
description of the LASER BASIC,
and tell them about the perceived
extensions.
So take a CLEAR or 59799
below, we load the unit COMPCODE compiler and the program, then
run the compiler directive
RANDOMIZE USR 59800 and wait until
screen is cleared and will not appear
inscription, which, they say, all okay.
Then write a compiled program as a BASIC-block
but in any case do not make any
RUN, or CLEAR, because compiler
places the code in the field variables, and cleaning this area
will destroy the program.
To run the program repeat the same steps, but instead
compiler will ship the package working
procedures - RTCODE. Running the program - GO TO 1.
Compiler Features:
The coefficient of volume: 85-100%
Speed ratio: 130-150%
Size of the "sample": 5.7K
The second type of compilers.
ZX COMPILER v1.0
THRELFALL '& HODGSON.
1982.
This compiler is an integral
is probably the first of
compilers for Spectrum-BASIC. It is not the worst on
Today, though created by
3 years 2 version of the compiler, who lives in our country
under the name MCODER 2 works
somewhat faster. Since
talk about the limitations
the compiler is too long
I will say briefly - if some
design compiler does not accept, he will bring it to the screen
and stop compilation.
To compile the necessary
lower the level of RAMTOP ADDRESS
COMPILATION-1 (the method is applied in all the compilers of
the second type) and run the compiler command RANDOMIZE USR
60000.
Compiler Features:
v1.0 v2.0
Coefficients. volume: 140-180%
Coefficients. speed: 2200% 2500%
Size of the "sample": 4.8K 4.8K
INTEGER COMPILER
Martin Lewis
1983
Martin Lewis in 1983 released a compiler for performance
equal to ZX COMPILER v2.0, though, "Hitch" was
Long at 0.5K, but in the course of compiling the information
displayed is less.
In the same year Lewis launches
and a compiler that works with floating point (fractional
numbers). FLOATING POINT COMPILER occupied almost the same
space as an integral and its sibling, however, performance fell
in 6 times, so if your program does not use fractional numbers
use This compiler is
ineffective.
Both of these compiler run with the address 59300.
Features FPC v1.0:
The coefficient of volume:> 150%
Speed ratio: 400%
Size of the "sample": 5.3K
TOBOS
FULL FLOATING POINT COMPILER.
Perhaps the most powerful
compiler of the second type. He
practically does not put restrictions on the compiled program.
So, how to work with these
compiler:
1. RAMTOP dip to the right
address, but not exceeding 50000.
2. Download a compiler.
3. Download the program you want to compile.
4. Run the compiler directive RANDOMIZE USR 53100.
5. Write the code block to
the compiler.
The main drawback of this compiler - a huge amount of
"sample", as well as clearing the entire memory module, and
between skomplirovannym "hitch."
Compiler Features:
The coefficient of volume: 95-140%
Speed ratio: 600%
Size of the "sample": 12.1K
! Warning:
All the compilers of the second type
require the presence in memory CE
BOJ to normal operation compensated
lated program.
P.S. All the compilers of both
types do not admit of the compiled program with I / O devices
(tape drive), refer to them only from the machine code.
________________________________
Other articles:
Similar articles:
В этот день... 30 November