Tony Walduck
AMPLE programs are neither stored nor executed in ASCII
format, but are tokenised to save space, as are BASIC and most other languages
on micros. A study of the AMPLE Nucleus ROM, and various programs and modules,
has generated the following lists of AMPLE word and token equivalences.
AMPLE Nucleus tokens:
00 [ (or 'local' definition)
01 to 0A Indicates a word in an
INSTALLed or MLOADed module,
numbered by order of loading
at the time of program
definition. The normal
loading sequence is:
Studio 4000 Studio 5000
01 INT INT
02 M4 M5
03 M5 EW
04 EW MENU
05 MENU FX1A
06 FX1A INS1
07 INS1
08 KFX
00 [ (or 'local' definition)
01 to 0A Indicates a word in an
INSTALLed or MLOADed module,
numbered by order of loading
at the time of program
definition. The normal
loading sequence is:
Studio 4000 Studio 5000
01 INT INT
02 M4 M5
03 M5 EW
04 EW MENU
05 MENU FX1A
06 FX1A INS1
07 INS1
08 KFX
This implies that a maximum of ten modules can be active at
any one time.
The next number identifies the actual word within the module
- see the separate tables at the end of the AMPLE Nucleus token list.
0B <space> followed by length byte (i.e. multiple spaces)
0C 1-byte decimal number follows
0D 1-byte decimal number follows with ',' implied (i.e. note length)
0E " followed by length byte, then string text (no closing " needed)
0F % followed by length byte, then comment text
0C 1-byte decimal number follows
0D 1-byte decimal number follows with ',' implied (i.e. note length)
0E " followed by length byte, then string text (no closing " needed)
0F % followed by length byte, then comment text
10
11
12 GVAR
13 )ELSE(
14 )REP
15
16 )UNTIL(
17
18 IF(
19
1A 2-byte decimal number follows
1B 2-byte hex number follows
1C
1D
1E '
1F )P
11
12 GVAR
13 )ELSE(
14 )REP
15
16 )UNTIL(
17
18 IF(
19
1A 2-byte decimal number follows
1B 2-byte hex number follows
1C
1D
1E '
1F )P
20 ] <return>
21
22
23
24
25
26
27 PNUM
28
29
2A )IF
2B REP(
2C )ACT
2D
2E
2F
21
22
23
24
25
26
27 PNUM
28
29
2A )IF
2B REP(
2C )ACT
2D
2E
2F
30
31
32 FOR(
33
34 INDEX
35 COUNT
36 )FOR
37
38
39 #2
3A #11
3B #12
3C #212
3D #2121
3E #213
3F #+
31
32 FOR(
33
34 INDEX
35 COUNT
36 )FOR
37
38
39 #2
3A #11
3B #12
3C #212
3D #2121
3E #213
3F #+
40 #-
41
42
43 #!
44 #B!
45 #B?
46 #?
47 SIGN
48 NOT
49 #<
4A
4B #B12
4C AND
4D OR
4E XOR
4F CODE
41
42
43 #!
44 #B!
45 #B?
46 #?
47 SIGN
48 NOT
49 #<
4A
4B #B12
4C AND
4D OR
4E XOR
4F CODE
50 #OUT
51 <return>
52 <space>
53 EVERY
54 $+
55 $REV
56 ASC
57 LEN
58 $CHR
59
5A
5B
5C $OUT
5D NL
5E
5F $2
51 <return>
52 <space>
53 EVERY
54 $+
55 $REV
56 ASC
57 LEN
58 $CHR
59
5A
5B
5C $OUT
5D NL
5E
5F $2
60
61
62
63 ^
64 X
65 /
66 ACT
67 \
68 +
69 -
6A =
6B ,
6C ;
6D FAST
6E DISPLAY
6F | (bar)
61
62
63 ^
64 X
65 /
66 ACT
67 \
68 +
69 -
6A =
6B ,
6C ;
6D FAST
6E DISPLAY
6F | (bar)
70 (
71 )
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
71 )
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
80
81
82
83 ARRAY
84 FCOPY
85 FVAR
86 FRAME
87 FRAME!
88 FRAME?
89 MVAL?
8A MVAL!
8B VOICE!
8C
8D ON
8E OFF
8F
81
82
83 ARRAY
84 FCOPY
85 FVAR
86 FRAME
87 FRAME!
88 FRAME?
89 MVAL?
8A MVAL!
8B VOICE!
8C
8D ON
8E OFF
8F
90
91 #+!
92 #>
93 #=
94 MAX
95 MIN
96 $12
97 $-
98 VAL
99
9A
9B
9C
9D
9E
9F
91 #+!
92 #>
93 #=
94 MAX
95 MIN
96 $12
97 $-
98 VAL
99
9A
9B
9C
9D
9E
9F
A0
A1
A2
A3
A4 IDLE
A5 ACT(
A6 &VAL
A7 OSCLI
A8
A9
AA #*
AB #/
AC RAND
AD RAND!
AE RANDL
AF $STR
A1
A2
A3
A4 IDLE
A5 ACT(
A6 &VAL
A7 OSCLI
A8
A9
AA #*
AB #/
AC RAND
AD RAND!
AE RANDL
AF $STR
B0 &$STR
B1 NOUT
B2 &NOUT
B3 $PAD
B4 $STRIP
B5 SP
B6 ALIGN
B7 MODE
B8
B9
BA QKEY
BB 'L
BC #IN
BD $IN
BE
BF
B1 NOUT
B2 &NOUT
B3 $PAD
B4 $STRIP
B5 SP
B6 ALIGN
B7 MODE
B8
B9
BA QKEY
BB 'L
BC #IN
BD $IN
BE
BF
CO UNUSED
C1 VOICE
C2 RVOICES
C3 VOICES
C4 DURATION
C5 WIND
C6 PAUSE
C7 =T
C8 -T
C9 +T
CA QTIME
CB c
CC C
CD d
CE D
CF e
C1 VOICE
C2 RVOICES
C3 VOICES
C4 DURATION
C5 WIND
C6 PAUSE
C7 =T
C8 -T
C9 +T
CA QTIME
CB c
CC C
CD d
CE D
CF e
D0 E
D1 f
D2 F
D3 g
D4 G
D5 a
D6 A
D7 b
D8 B
D9 K(
DA )K
DB :
DC !
DD @
DE BAR
DF ^;
D1 f
D2 F
D3 g
D4 G
D5 a
D6 A
D7 b
D8 B
D9 K(
DA )K
DB :
DC !
DD @
DE BAR
DF ^;
E0 =L
E1 +L
E2 -L
E3 ///
E4 SIMPLEACT
E5 SCORE
E6 P(
E7 ~
E8 HALT
E9 GO
EA SHARE
EB STOP
EC
ED READY
EE
EF
E1 +L
E2 -L
E3 ///
E4 SIMPLEACT
E5 SCORE
E6 P(
E7 ~
E8 HALT
E9 GO
EA SHARE
EB STOP
EC
ED READY
EE
EF
F0
F1
F2
F3 DIM
F4
F5
F6
F7
F8
F9
FA
FB
FC
FD
FE
FF
F1
F2
F3 DIM
F4
F5
F6
F7
F8
F9
FA
FB
FC
FD
FE
FF
Many of the unassigned tokens could be used internally in
AMPLE as non-user-programmable features. Modules and parts of Nucleus itself could
well be programmed in these non-documented and inaccessible parts of AMPLE.
INT definitions (preceded by module number - typically 01):
01 INT
02 METV
02 METV
M4 definitions (preceded by module number - typically 02):
04 KEYS
08 KEYSET
0B KEYB
08 KEYSET
0B KEYB
M5 definitions (preceded by module number - typically 03 or
02):
01 EVEN
02 ODD
03 PAIR
04 PSENS
05 PEN
06 AEN
07 ONEN
08 CHAN
09 CHANS
0A Simpleins
0B M5TUNE
0C GATE
0D PITCH
0E VEL
0F RM
02 ODD
03 PAIR
04 PSENS
05 PEN
06 AEN
07 ONEN
08 CHAN
09 CHANS
0A Simpleins
0B M5TUNE
0C GATE
0D PITCH
0E VEL
0F RM
10 SYNC
11 FM
12 SHIFT
13 OFFSET
14 AMP
15 VOL
16 POS
17 INVERT
18 PHSET
19 PITCHF
1A PAN
1B TRANS
1C DETUNE
1D M5VALS
1E M5INFO
1F M5MIX
11 FM
12 SHIFT
13 OFFSET
14 AMP
15 VOL
16 POS
17 INVERT
18 PHSET
19 PITCHF
1A PAN
1B TRANS
1C DETUNE
1D M5VALS
1E M5INFO
1F M5MIX
EW definitions (preceded by module number - typically 04 or
03):
01 Hollow .....
02 Bright .
03 Broad .
04 Clear .
05 Hard .
06 High .
07 Metal ..... Waveforms
08 Pipes .
09 Reedy .
0A Round .
0B Syncer .
0C Sharp .
0D Pure .
0E Watery .....
02 Bright .
03 Broad .
04 Clear .
05 Hard .
06 High .
07 Metal ..... Waveforms
08 Pipes .
09 Reedy .
0A Round .
0B Syncer .
0C Sharp .
0D Pure .
0E Watery .....
0F Trill .....
10 Cycle .
11 Deepvib .
12 Delvib .
13 Drop .
14 Pow .
15 Ramp .
16 Rise ..... Pitch
17 Slowvib . Envelopes
18 Sweep .
19 Bend .
1A Vibrato .
1B Warble .
1C Wide .
1D Wow .
1E Zap .....
10 Cycle .
11 Deepvib .
12 Delvib .
13 Drop .
14 Pow .
15 Ramp .
16 Rise ..... Pitch
17 Slowvib . Envelopes
18 Sweep .
19 Bend .
1A Vibrato .
1B Warble .
1C Wide .
1D Wow .
1E Zap .....
1F Burst .....
20 Short .
21 Click .
22 Tailed .
23 Echohit .
24 Verylong ..... Amplitude
25 Long . Envelopes
26 Onoff .
27 Puff .
28 Reverse .
29 Percuss .
2A Swell .
2B Soft .
2C Spike .
2D Strike .
2E Tremolo .....
20 Short .
21 Click .
22 Tailed .
23 Echohit .
24 Verylong ..... Amplitude
25 Long . Envelopes
26 Onoff .
27 Puff .
28 Reverse .
29 Percuss .
2A Swell .
2B Soft .
2C Spike .
2D Strike .
2E Tremolo .....
2F Flat ......... Pitch Envelope
30 Peaked .........
Amplitude Envelope
MENU definitions (preceded by module number - typically 05
or 04):
01 MENUDISP
02 MENU
02 MENU
FX1A definitions (preceded by module number - typically 06
or 05):
01 PLAY
02 Echo
03 Len
04 Autopan
05 Slide
06 Perc
02 Echo
03 Len
04 Autopan
05 Slide
06 Perc
INS1 definitions (preceded by module number - typically 07
or 06):
04 Drum
05 Cymbal
06 Elguit
07 Ironpipe
08 Moog
09 Organ
0A Panflute
0B Ringsyn
0C Slapbass
0D Upright
0E Vibglock
0F Wha
10 Yakbell
11 Simpleins
05 Cymbal
06 Elguit
07 Ironpipe
08 Moog
09 Organ
0A Panflute
0B Ringsyn
0C Slapbass
0D Upright
0E Vibglock
0F Wha
10 Yakbell
11 Simpleins
KFX definitions (preceded by module number - typically 08):
01 Expand
02 Scale
03 Split
04 Spread
05 Reduce
06 KEYB
02 Scale
03 Split
04 Spread
05 Reduce
06 KEYB
Within a program, word definitions start at byte &18.
From this point the relative positions within a word definition are as
follows:-
00/01 word definition
length (i.e. relative pointer to next word)
02/03 possibly the absolute address of the previous word definition
04 &80+length of word name (i.e. top bit set)
05-nn ASCII for word name
nn+1 word definition number
nn+2 00, i.e. [, start of word definition
02/03 possibly the absolute address of the previous word definition
04 &80+length of word name (i.e. top bit set)
05-nn ASCII for word name
nn+1 word definition number
nn+2 00, i.e. [, start of word definition
and so on to the end of that word definition, to be followed
by further word definitions.
At the end of the program you will find that any modules
whose words are used in the definitions are listed; each module will feature in
a sequence like: -
00/01 length of sequence
02/03
04 length of used module's name
05-nn ASCII for module name
nn+1 used module's number code
02/03
04 length of used module's name
05-nn ASCII for module name
nn+1 used module's number code
It also appears from studying the modules themselves that,
because of words from other modules which are used, the following module dependencies
arise:
EW needs M5
INS1 needs M5 and EW
MIX needs M5
REC needs M4 and FX1A
KFX needs M5 and M4
INS1 needs M5 and EW
MIX needs M5
REC needs M4 and FX1A
KFX needs M5 and M4
Published in AMPLINEX 008, November
1988