As mentioned in the "Original SCI syntax" thread, disks of AGI releases sometimes contain remnants of internal data.
Below are some fragments of the original AGI specs. Missing parts are marked as "@@@".
@@@
esult in the var.
div.v(VAR, VAR)
Parameters: destination, divisor
No alternate way to write it in the compiler.
Divide the first var by the second, leaving the quotient in the
first var.
lindirectv(VAR, VAR)
[Written as var1 @= var2]
Left indirect assignment of vars. Takes the value in var1 and uses it
as the var number in which to store the value of var2. In essence,
var1 is a 'pointer' to the var for the assignment. Thus,
%var var1 39
%var var2 56
var1 = 27;
@@@
rks
on white and the picture being overlayed is probably not all white.
As in draw.pic(), a call to show.pic() is necessary to bring the
new picture to the foreground screen.
show.pri.screen()
Show the priority screen, then wait for ENTER or ESC before returning
to the game. Generally implemented as a debug action.
------ View actions
load.view(VIEW)
Load the view whose number is given by the number.
load.view.f(var)
Load the view whose number is in the var.
discard.view(VI
@@@
t.motion(), start.cycling(), normal.cycle(), observe.blocks(),
observe.horizon(), on.anything(), release.priority(), release.loop(),
and observe.objects() on the object and sets its direction to 0.
unanimate.all()
Unanimate all animated objects. If you're going to draw a second picture
in a room (using draw.pic() without doing a new.room()) do this first
to make sure that you don't end up with a number of animated objects
which you don't want in the new picture. You'll have to do an
anima
@@@
T)
Erase the object from the screen. Erased objects do not move or
interact with drawn objects.
position(OBJECT, NUM, NUM)
Parameters: object, x coord, y coord.
Set the position of the object (the lower left corner of its baseline)
to the (x, y) coords given in the numbers. x is measured from the right
edge of the screen, y from the top. If part of the object will be off
the screen, if the object is above the horizon and must observe it, or
if the object's baseline is on a priority lin
@@@
error to that corresponding to an object's
current direction. A non-moving object (direction = 0) remains in
its last loop.
set.loop.f(OBJECT, VAR)
Set the object's loop to that in the var.
fix.loop(OBJECT)
Fix the object's loop. It will no longer adjust to the direction
in which the object is moving.
release.loop(OBJECT)
Undo a fix.loop(). The object will now face in the direction
appropriate to its direction.
set.cel(OBJECT, NUM)
Set the object's cel to that in the number. Cels
@@@
s is done by
animate.obj().
end.of.loop(OBJECT, FLAG)
Reset the flag. Increment the cel number at each animation cycle.
When the last cel of the loop is reached, stop cycling and set the flag.
reverse.cycle(OBJECT)
Cycle the object from the current cel number to cel 0. When cel 0
is reached, start again at the last cel of the current loop.
reverse.loop(OBJECT, FLAG)
Reset the flag. Decrement the cel number at each animation cycle.
When cel 0 is reached, stop cycling and set the fl
@@@
nd background colors for text. Not all combinations
will necessarily be supported on all machines. We will try to
approximate where we can, but no guarantees. The colors are:
0 black
1 dark blue
2 dark green
3 cyan
4 red
5 magenta
6 brown
7 light grey
8 dark grey
9 light blue
10 light green
11 light cyan
12 pink
13 light magenta
14 yellow
15 white
All combinations will (I believe) be supported on the Atari ST, Amiga,
and the NEC 9801.
On th
@@@
The number is the
number of figure eights to do. This will be a no-op on some hardware,
so don't depend on it.
------ Screen handling
[* 25 lines total
configure.screen(NUM, NUM, NUM)
Parameters: picture row, input row, status row.
This call, which should be done as soon as the game starts, sets
where the various components of the screen are placed. The first
number is the CHARACTER row number (starting at zero) for the upper
left corner of the picture, the second is the row n
@@@
ers: string number, message number.
Copy the message into the string given by the number.
get.string(NUM, MSGNUM, NUM, NUM)
Parameters: string number, message number, row, column.
Prints the message as a prompt at the given screen position, then
allows the user to enter the string for string number NUM. If the
row is >24, the message will be printed at the current cursor
position.
Since string 0 is the prompt, set the prompt by
%message 1 "> "
set.string(0, 1);
The code to le
@@@
ilable to all said() tests for the remainder
of the current logic scan.
get.num(MSGNUM, VAR)
Prompt the user with the message and get a (purportedly) numeric reply.
Put the number into var. If a non-numeric reply is typed, var will
be 0.
------ Input handling
prevent.input()
Clear the input line and do not accept input from the user. Input
is off at startup.
accept.input()
Display the input line and accept input from the user.
set.key(NUM, NUM, NUM)
Parameters: low byte
@@@
set.key(27, 0, c.pause); [ESC
set.key(18, 0, c.rgb.toggle); [^R
set.key(16, 0, c.new.prompt); [^P
set.key(joy.low.byte, button0, c.doit);
set.key(joy.low.byte, button1, c.useit);
set.key(joy.low.byte, button0.dbl, c.lookit);
set.key(joy.low.byte, button1.dbl, c.status);
The controller definitions are in 'sysdefs'. You may map up to
29 keys. More than one key may map to a single controller, but
a single key can't map to more than one controller.
****** Note that the key
@@@