Index of AMPLE Nucleus words

This index is an extract from The AMPLE Nucleus Programmer Guide (c) 1987 Hybrid Technology.
The entries are arranged in a sequence based upon the following order of characters:
 ! " # $ % & ' ( ) * , - / : ; < = > ? @ [ \ ] ^ | ~ 0-9 A-Z
except that leading non-letters are treated as if they were at the end.
Each entry gives the word name and a brief description of its function.
A status may be shown on the right indicating that the word can be used only as a command or used only inside a word definition. If no status is shown the word can be used both as a command and inside a word definition.
Where relevant the following line shows the word's inputs and/or outputs. Where there are both, the -> symbol is used to separate them.
Index of words
<carriage return>  mark line end
<space>  separate items
!  move an extra octave up or down
"  start literal string
"characters" -> string                   inside []
string1 "characters" -> string2 string1  outside []
#!  store number at address
datanumber addressnumber #!
#*  multiply two numbers
number1 number2 #* -> productnumber (number1 x number2)
#+  add two numbers
number1 number2 #+ -> sumnumber (number1 + number2)
#+!  add number to number at address
datanumber addressnumber #+!
#-  subtract number from previous number
number1 number2 #- -> differencenumber (number1 - number2)
#/  divide previous number by number
number1 number2 #/ -> quotientnumber remaindernumber
#11  duplicate number
number #11 -> number number
#12  swap two numbers
number2 number1 #12 -> number1 number2
#2  discard number
number #2
#212  duplicate previous number
number2 number1 #212 -> number2 number1 number2
#2121  duplicate number and previous number
number2 number1 #2121 -> number2 number1 number2 number1
#213  rotate positions of three numbers
number3 number2 number1 #213 -> number2 number1 number3
#<  test previous number is less than number
number1 number2 #< -> flag (number1 < number2)
#=  test numbers are equal
number1 number2 #= -> flag (number1 = number2)
#>  test previous number is greater than number
number1 number2 #> -> flag (number1 > number2)
#?  fetch number from address
addressnumber #? -> datanumber
$+  add string to left end of previous string                      [] only
rightstring leftstring $+ -> string (leftstring + rightstring)
$-  split string after numbered character                          [] only
string number $- -> rightstring leftstring
$12  swap two strings                                              [] only
string1 string2 $12 -> string2 string1
$2  discard string                                                 [] only
string $2
%  introduce comment
&  indicate hexadecimal number
&<hex digits> -> number
'  accent next note or hit
(  start additional chord notes
)  end additional chord notes
*  indicate operating system command                               command
*<line>
+  sharpen next note
,  set length
number ,
-  flatten next note or indicate negative number
/  hold music event
:  set octave
number :
;  set music voice
voicenumber ;
=  naturalise next note
@  set transposition in semitones
transnumber @
[  start word definition                                           command
namestring [...]
\  move back
]  end word definition                                             [] only
~  slur next note
^  play rest
^;  play chord rest
|  mark end of bar
0 to 9  decimal digits
<decimal digits> -> number
A to G  play note with ascending pitch
a to g  play note with descending pitch
ACT  execute music action
see text
ACT(  start music action sequence                                  [] only
positionnumber ACT(
)ACT  end music action sequence                                    [] only
ALIGN  ensure text cursor is at start of line
AMPLE  restart system                                              command
AND  AND bits of numbers
number1 number2 AND -> ANDnumber
ARRAY  access array element
elementnumber baseaddressnumber ARRAY -> addressnumber
ASC  convert character to number                                   [] only
string ASC -> asciinumber
#B!  store low byte of number at address
datanumber addressnumber #B!
#B?  fetch byte from address
addressnumber #B? -> datanumber
#B12  swap high and low bytes of number
number1 #B12 -> number2
BAR  set bar length in length units
lengthsnumber BAR
$CHR  convert number to character                                  [] only
asciinumber $CHR -> string
CLEAR  clear editor data                                           command
CODE  call machine-code routine
YXnumber CAnumber addressnumber CODE -> YXnumber PAnumber
COMPACT  compact unused memory                                     command
COUNT  return loop count                                           [] only
COUNT -> number
DELETE  delete word                                                command
namestring DELETE
DIM  reserve memory
sizenumber DIM -> addressnumber
DISPLAY  display text
DURATION  wait for a period of time
number DURATION
)ELSE(  separate conditional sections                              [] only
EVERY  leave 'every' value
EVERY -> number
FAST  select fast/normal tempo
flag FAST
FCOPY  copy numbers from frame pointer
number -> number1 ... number-n
FIND  find uses of word                                            command
namestring FIND
FOR(  start definite loop                                          [] only
countnumber FOR( ... )FOR
)FOR  end definite loop                                            [] only
FRAME  set frame pointer to top of stack
FRAME!  write frame pointer
pointernumber FRAME!
FRAME?  read frame pointer
FRAME? -> pointernumber
FVAR  access stack frame item
elementnumber FVAR -> addressnumber
GO  start players together
GVAR  create variable                                              [] only
GVAR -> addressnumber
HALT  halt/continue timebase
flag HALT
IDLE  pass control to other players
IF(  start conditional sequence                                    [] only
flag IF( ... )IF  or  flag IF( ... )ELSE( ... )IF
)IF  end conditional                                               [] only
#IN  wait for and get keypress
#IN -> asciinumber
$IN  input line from keyboard                                      [] only
$IN -> string
INDEX  leave loop index                                            [] only
INDEX -> number
INSTALL  install module                                            command
namestring INSTALL
K(  start key signature
)K  end key signature
'L  set accent strength
number 'L
+L  increase dynamic level
changenumber eventsnumber +L
-L  decrease dynamic level
changenumber eventsnumber -L
=L  set dynamic level
number =L
LEN  get length of string                                          [] only
string LEN -> string lengthnumber
LOAD  load program                                                 command
namestring LOAD
MAX  leave larger of two numbers
number1 number2 -> largestnumber
MCAT  display catalogue of modules                                 command
MDELETE  delete module                                             command
namestring MDELETE
MEM  show memory usage in bytes                                    command
MIN  leave smaller of two numbers
number1 number2 -> smallestnumber
MLOAD  load module                                                 command
namestring MLOAD
MODE  enter display mode                                           command
number MODE
MPREFIX  set module filename prefix                                command
string MPREFIX
MSHOW  show list of words in module                                command
modnamestring MSHOW
MVAL!  write music variables
framelev keysig barcountlen octnote length tranvoice MVAL!
MVAL?  read music variables
MVAL? -> framelev keysig barcountlen octnote length tranvoice
NEW  discard program                                               command
NL  print new line
NOT  invert sense of flag
flag1 NOT -> flag2
NOUT  print number in decimal
number NOUT
&NOUT  print number in hexadecimal
number &NOUT
OFF  leave off flag value
OFF -> offflag
ON  leave on flag value
ON -> onflag
OR  OR bits of numbers
number1 number2 OR -> ORnumber
OSCLI  send string to operating system                             [] only
string OSCLI
#OUT  send ASCII code to screen
number #OUT
$OUT  print string                                                 [] only
string $OUT
P(  start concurrent sequence                                      [] only
playernumber P( ... )P
)P  end concurrent sequence                                        [] only
$PAD  pad string to length with spaces                             [] only
string1 lengthnumber $PAD -> string2
PAUSE  pause/continue sound processing  
flag PAUSE
PNUM  leave player number
PNUM -> number
QKEY  test key status or get keypress
negativenumber QKEY -> flag
zeronumber QKEY -> asciinumber
QTIME  return queue time
QTIME -> number
QUIT  leave editor                                                 command
RAND  get random number
RAND -> number
RAND!  set starting point for random numbers
number RAND!
RANDL  get random number in range
maxnumber RANDL -> number
READY  make system ready
RENAME  rename word                                                command
oldnamestring newnamestring RENAME
REP(  start indefinite loop                                        [] only
)REP  end indefinite loop                                          [] only
$REV  reverse the order of characters                              [] only
string $REV -> reversedstring
RVOICES  set voices range
startnumber endnumber RVOICES
SAVE  save program                                                 command
string SAVE
SCORE  prepare for music words
SHARE  select voice ensemble
ensemblenumber SHARE
SHOW  show user words                                              command
SIGN  test number is negative
number SIGN -> flag
SIMPLEACT  remove all music actions
SP  print a space
STOP  stop program
$STR  convert number to decimal string represenation               [] only
number $STR -> string
&$STR  convert number to hex string representation                 [] only
number &$STR -> string
$STRIP  remove leading spaces from string                          [] only
string1 $STRIP -> string2
+T  increase tempo
changenumber beatsnumber +T
-T  decrease tempo
changenumber beatsnumber -T
=T  set tempo
number =T
TYPE  type word definition on the screen                           command
namestring TYPE
)UNTIL(  exit from indefinite loop                                 [] only
UNUSED  make voice(s) unused
VAL  convert string to unsigned decimal number                     [] only
string VAL -> remainingstring number ON    if found
string VAL -> remainingstring OFF          if not found
&VAL      convert to unsigned hex number                           [] only
string &VAL -> remainingstring number ON   if found
string &VAL -> remainingstring OFF         if not found
VOICE  select voice(s)
voicenumber VOICE
VOICE!  set voice settings in frame
voicenumber VOICE!   or   EVERY VOICE!
VOICES  set number of voices
number VOICES
WIND  advance time
ticksnumber WIND
WRITE  display text of all words                                   command
X  play hit
XOR  exclusive-OR bits of numbers
number1 number2 XOR -> XORnumber

Published in AMPLINEX 003, January 1988