****************************************************************************
* *
* EdScheme for the Atari *
* *
****************************************************************************
(c) Schemers Inc, Fort Lauderdale, FL, Release 3.2, 1990
Distributed by
Lambda Publications
194 Cheney Manor Road
Swindon, Wiltshire
England
CONTENTS:
1. Disk contents.
2. Running EdScheme.
3. Command line parameters.
4. Strings.
5. Additional functions.
6. Editor commands.
7. Graphics functions.
8. Addendum to documentation.
***************************************************************************
* 1. Disk Contents. *
***************************************************************************
The implementation disk contains the following files:
README This file of up-to-date information
EDS.TTP EdScheme (with editor and graphics interface)
EDSR.TTP Restricted EdScheme (with neither editor nor graphics,
for use in machines with very limited memory)
SHELP.TXT Editor help file
GAME.S Documented Scheme program for playing a game involving AI
and object-oriented programming
***************************************************************************
* 2. Running EdScheme *
***************************************************************************
To run EdScheme from the desktop, double click on the EDS.TTP
icon.
Not that EdScheme programs may be iterruptedby pressing th
key marked 'Esc'.
***************************************************************************
* 3. Command line parameters *
***************************************************************************
The following command line parameters are permitted:
a. File names. Scheme files named in the command line are loaded and
compiled (just as though their contents were typed into EdScheme via
the keyboard), in the order in which they appear, when EdScheme is
invoked. For example, invoking EdScheme by typing
init code\myfile
causes EdScheme to load and compile the files INIT and
CODE\MYFILE.
b. Workspace parameters, one or more of
-b -c -d -g -i -m -n -o -p -r
followed by an integer x, as described below.
Note: These parameters are set automatically by EdScheme. Most users
will never have cause to amend any of these values.
Param Description
-bx Sets the workspace available for backtraces to x in bytes.
If backtraces are not to be used, x may be set to a low value,
(to create more space for the garbage collector, for example.)
x must be a positive, non-zero integer.
Default value: 512
-cx Sets the maximum permitted number of simultaneously active
continuations. (See also '-nx'.) x must be non-zero.
Default value: 8
-dx Sets the compiler workspace to x in bytes. (When compiling
truly massive expressions, the compiler may run out of
workspace. Use this parameter to increase the workspace if
necessary.) x must be non-zero.
Default value: 8192
-ix If x is 1, causes EdScheme to print a table displaying its
memory allocations (after taking into account any changes
made by other command line parameters). If x is zero, no
table is displayed.
Default value: 0
-mx Sets the maximum permitted number of simultaneously open files
to x. x must be non-zero.
Default value: 8
-nx Sets the continuation workspace to x in bytes. If EdScheme
generates the message 'Cannot create continuation' in response
to a call to the function 'call/cc', and the number of
continuations created is less than the maximum permitted (see
parameter '-cx' above), then the continuation workspace should
be increased. x must be non-zero.
Default value: 1024
-ox Sets the oblist space to x, in bytes. x should never be less
4196.
Default value: 16384.
-px Sets the maximum permitted number of nested repeat-loops.
Default value: 8
-rx Sets the maximum permitted recursion depth, to x. That is,
it sets the maximum number of full recursive (as opposed to
tail recursive) calls that are permitted before EdScheme
generates a 'too complex' error.
Note: It is highly unlikely that most users will ever need
to increase this figure. The most likely cause of a
'too complex' error is that a fully recursive function
has failed to terminate properly. However, it may
sometimes be useful to decrease the maximum recursion
depth, since this a convenient means of releasing memory space
(see the example immediately below). Note that x should never
be set less than 150.
Default value: 1024
For example, typing the command line parameters
init -o32000 myfile -r512
at the * prompt causes EdScheme to set the oblist length
to 32000 bytes, the maximum recursion depth to 512, and to read
and compile the files INIT and MYFILE.
If there is insufficient space to implement the workspace requests,
EdScheme displays the mesage
memory error: not enough
and aborts.
***************************************************************************
* 4. Strings *
***************************************************************************
Release 3.2 has an additional primitive S-expression category designed
to allow strings of characters, including special characters, to be
entered without the need for slashification. Such `strings' are
enclosed in double quotation marks. So, for example, the funcional
expression
(define A "A cat sat on the mat")
defines the variable 'A' to be the string 'A cat sat on the mat'. Strings
are disjoint from other primitive data types; the predicate function
'string?' takes any S-expression as its only input and returns the atom
't' if and only if its input is a string.
For the most part, strings may be manipulated as though they are atoms;
thus strings are suitable inputs for the functions 'implode', 'explode',
'load', 'display', 'open-output-file', and so on. Strings are printed
with the enclosing quotes unless displayed using the functions 'display'
and 'turtle-display', when the quotes are omitted. For example, suppose
the variable 'A' is defined as above:
==> A
"A cat sat on the mat"
==> (begin (display A) (fresh-line))
A cat sat on the mat
==>_
***************************************************************************
* 5. Additional Functions *
***************************************************************************
The following additional functions are provided to allow EdSchemer's to
take advantage of the abilities of the Atari ST computer. (Certain
of EdScheme's core functions have been given extra inputs in order to
take full advantage of the facilities; these are also described
below.) Additional graphics functions are described in Section 7. Note
that EdScheme may be interrupted by pressing the 'Esc' key.
run-time The no-input primitive function 'run-time' returns the current
value of the system clock.
dir The functional expression '(dir)' returns a list containing
the names of the files in the current directory. The
functional expression of the form '(dir atom)' returns a
list of the files in the directory named by 'atom'. For
example, '(dir 'mydir)' lists the files in 'mydir'.
delete! Takes two inputs, the first of which may be any S-expression
r and the second of which must be a list s. It returns the
list s with each occurrence of the S-expression r removed.
(The symbol '!', pronounced 'bang' by Schemers, indicates
that, like other bang functions, delete! may change the list
given as its second input. In other words, the expression
(let ((s '(a b c d e f g)))
(let ((result (delete! 'c s)))
s))
does not evaluate to the list '(a b c d e f g)' as might be
expected since the function delete! has the side effect
of modifying the list s.
string? A one-input predicate function that returns the atom 't' if and
only if its input is a string.
print-length Inputs any S-expression and returns the number of symbols that
are needed to print it on the screen. For example,
(print-length '(a b c)) ==> 7
palette This function does not behave as described in the
documentation. In particular, th second input to the function
must be a list containing exactly three numbers corresponding
to the required red, green and blue components, respectively.
For example, the expression
(palette 1 (32 64 128))
defines colour 1 to have red, green and blue components
of 32, 64 and 128 respectively.
get-palette Returns a list containing three numbers, being the
red, green, and blue components, respectively, of the colour
given as the first component.
mouse-off No inputs. Turns off the mouse pointer (equivalent to
the VDI function v_hide_c).
mouse-on Takes one optional input, an integer n. Turns on th mouse
pointer. (Equivalent to the VDI function v_show_c with
the reset input set to n. If the input is omitted, n is
assumed to b zero.)
get-mouse-state Returns a list containing exactly two S-expressions,
namely,
1. A pair giving the curret coordinates of the mouse, and
2. A number indicating the current button state.
See VDI function vq_mouse in th Atari documentation for more
information.
screen-red On colour systems, behaves as described in the documentation.
However, in monochrome systems, the value of this variable
is used to determine the text font effect used for
printing S-expressions.
screen-black On colour systems, behaves as described in the documentation.
However, in monochrome systems, the value of this variable
is used to determine the text font effect used for
printing functional expressions.
screen-colourless On colour systems, behaves as described in the
documentation. However, in monochrome systems, the
value of this variable is used to determine the text
font effect used for printing system messages.
display-effect Takes one inut, an integer, and sets the text font effect
for S-expressions written to the screen using the display
function in colour mode.
***************************************************************************
* 6. Editor commands *
***************************************************************************
The following commands are available in addition to those listed in
The EdSchemer's Guide. Most of these are displayed by pressing key F1
while in the editor.
CURSOR MOVEMENT
Up arrow Up Ctrl-up Page up Shift-up Start of file
Down arrow Down Ctrl-down Page down Shift-down End of file
Right arrow Right Ctrl-right Jump right Shift-right End of line
Left arrow Left Ctrl-left Jump left Shift-left Start of line
Home Start of line
GENERAL
Insert Toggle mode Ctrl-Y Delete line Del Delete character
Tab Indent line Enter Insert line Backspace Delete char left
Clr Delete line
FILE SEARCH BLOCK
Ctrl-F R Load Ctrl-Q F Find Ctrl-K B Begin block
Ctrl-F W Save Ctrl-Q A Replace Ctrl-K K End block
Ctrl-F C New G - global, Ctrl-K H Hide/reveal block
Ctrl-X Evaluate K - block, Ctrl-K C Copy block
& exit N - without asking Ctrl-K V Move block
Ctrl-E Exit Ctrl-L Repeat last Ctrl-K Y Delete block
search Ctrl-K X Evaluate block
Ctrl-K R/W Read/Write block
FUNCTION KEYS
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10
Help Save Find Find & Begin End Hide Copy Move Evaluate
file Replace block block block block block & exit
***************************************************************************
* 7. Graphics functions *
***************************************************************************
The following functions and function inputs are specific to this version of
EdScheme:
graphics-screen Normally, this function is called with no inputs, as in
(graphics-screen)
The function takes an optional input, being
the number of lines used for the text window. For
example, the expression
(graphics-screen 10)
causes EdScheme to use 10 lines (which is the maximum
permitted number) of text.
fill-style Takes one input, being the fill pattern (from 1, meaning
solid fill, to 25---see the Atari documentation for a list
of fill patterns).
turtle-fill This function takes one input, a colour c, and flood fills
the screen using the current fill pattern and taking
c as the border. (Therefore, in a monochrome system, the
input to turtle-fill withh usually be 1.)
line-style Takes one input, a list containing three numbers, namely,
the line thickness, line style, and line end style,
respectively. See the VDI functions vsl_type, vsl_width
and vsl_ends in te Atari documntation for more
information.
***************************************************************************
* 8. Addendum *
***************************************************************************
1. Addendum to The EdSchemer's Guide.
======================================
Page 3, footnote.
Change: ... such as displaying a expression on ...
To read: ... such as displaying an expression on ...
Page 5, line 11.
Change: ( ) [ ] ' ; space \
To read: ( ) [ ] ' ; space \ "
Page 12, line 6.
Change: ... is given on page 14 of ...
To read: ... is given on page 10 of ...
Page 12, line 24.
Change: ... is provided on page 14 of ...
To read: ... is provided on page 9 of ...
Page 13, line -2.
Change: ... is provided on page 12 of ...
To read: ... is provided on page 10 of ...
Page 17, line 18.
Change: ... three S-expression (in addition ...
To read: ... three S-expressions (in addition ...
Page 20, Figure 4.1, line -2.
Change: (1 a b c)
To read: (100 a b c)
Page 20, line -4.
Change: (a b c)1
To read: (a b c)100
Page 22, line -12 (in conversation box).
Change: a ==> (rest '(a b c))
To read: a
==> (rest '(a b c))
Page 24, line 1.
Change: ... in this makes a permanently ...
To read: ... in this way makes a permanently ...
Page 30, line -8.
Change: ... soon become comfused ...
To read: ... soon become confused ...
Page 31, line 1.
Change: ... prints as '(((a 1) (b 2)))' The function ...
To read: ... prints as '(((a 1) (b 2)))'. The function ...
Page 31, line 5.
Change: ... on page 3) that EdScheme ...
To read: ... on page 3) so EdScheme ...
Page 31, line -13.
Change: ... on page 17).
To read: ... on page 18).
Page 54, Figure 9.1.
The function fast-poly should be defined as follows:
(define (fast-poly n len)
(let ((pen-state (pen-down?))
(show-state (turtle-shown?))
(angle (/360 n)))
(begin
(pen-down)
(hide-turtle)
(repeat n (forward len) (right angle))
(if (not (pen-state)) (pen-up))
(if (show-state) (show-turtle)))))
Page 54, line -7.
The function turtle-fast-poly should be defined as follows:
(define (turtle-fast-poly n len turtle)
(let ((pen-state (turtle-pen-down? turtle))
(angle (/360 n)))
(begin
(turtle-pen-down turtle)
(hide-turtle)
(repeat n (turtle-forward len turtle)
(turtle-right angle turtle))
(if (not (pen-state)) (turtle-pen-up turtle))
(show-turtle))))
2. Addendum to The EdSchemer's Reference.
=========================================
Page 5, line -7.
Change: (i) prefixing the ...
To read: prefixing the ...
Page 17, line 11.
Change: (open-output-port ...
To read: (open-output-file ...
Page 20, line 18.
Change: (open-input-port ...
To read: (open-input-file ...
Page 25, line 17.
Change: ... value returned. Examples:
To read: ... value returned (or the atom 'nil' if fexp2 is omitted).
Examples:
Page 25, line -13.
Change: Concatenates the characters ... only characters.
To read: Concatenates the atoms ... only atoms.
Page 35, line 18.
Change: (f int))
To read: (foo int))
***************************************************************************
* End of File : ReadMe *
***************************************************************************