-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathstring.asm
307 lines (244 loc) · 15.8 KB
/
string.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
; ==============================================================================
; YAMAHA DX9/7 FIRMWARE
; Copyright (C) 2022 AJXS (https://ajxs.me/)
;
; SPDX-License-Identifier: GPL-3.0-or-later
; ==============================================================================
; string.asm
; ==============================================================================
; DESCRIPTION:
; This file contains string definitions used in the firmware ROM.
; ==============================================================================
.PROCESSOR HD6303
; ==============================================================================
; String Table.
; This is the synth's main string table.
; Note: Some strings are not null-terminated, and are instead terminated with
; another integer. The string copy function will consider any ASCII character
; below 0x20 (space) to be the equivalent of a null-terminating character.
; This character value will effectively be returned by the string copy function.
; This value is actually used by the menu printing function to determine what
; function to use to print the parameter value associated with the parameter
; name string. This functionality was taken from the original DX9 ROM.
; ==============================================================================
str_algorithm_select: DC.B STR_FRAGMENT_OFFSET_ALG
DC "ORITHM "
DC.B STR_FRAGMENT_OFFSET_SELECT, 0
str_are_you_sure: DC "ARE YOU SURE ?", 0
str_battery_warning: DC "CHANGE BATTERY !", 0
str_battery_voltage: DC "BATTERY VOLT="
DC.B PRINT_PARAM_FUNCTION_BATTERY_VOLTAGE
str_breath_range: DC.B STR_FRAGMENT_OFFSET_BREATH
DC.B STR_FRAGMENT_OFFSET_RANGE
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_breath_pitch: DC.B STR_FRAGMENT_OFFSET_BREATH
DC.B STR_FRAGMENT_OFFSET_PITCH
DC.B PRINT_PARAM_FUNCTION_BOOLEAN
str_breath_amp: DC.B STR_FRAGMENT_OFFSET_BREATH
DC.B STR_FRAGMENT_OFFSET_AMP
DC.B PRINT_PARAM_FUNCTION_BOOLEAN
str_breath_eg_b: DC.B STR_FRAGMENT_OFFSET_BREATH
DC.B STR_FRAGMENT_OFFSET_EG_B
DC.B PRINT_PARAM_FUNCTION_BOOLEAN
str_edit_recall: DC "EDIT RECALL ?", 0
str_eg_copy: DC "EG COPY", 0
str_eg_rate: DC.B STR_FRAGMENT_OFFSET_EG
DC.B $20 ; Space
DC.B STR_FRAGMENT_OFFSET_RATE
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_eg_level: DC.B STR_FRAGMENT_OFFSET_EG
DC.B $20 ; Space
DC.B STR_FRAGMENT_OFFSET_LEVEL
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_err: DC "ERR", 0
str_error: DC "ERROR!", 0
str_feedback: DC "FEEDBACK"
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_freq_coarse: DC "F COARSE"
DC.B PRINT_PARAM_FUNCTION_OSC_FREQ
str_freq_fine: DC "F FINE"
DC.B PRINT_PARAM_FUNCTION_OSC_FREQ
str_from_mem_to_tape: DC "from MEM to TAPEall "
DC.B STR_FRAGMENT_OFFSET_READY
str_from_tape_to_mem: DC "from TAPE to MEMall "
DC.B STR_FRAGMENT_OFFSET_READY
str_from_tape_to_buf: DC "from TAPE to BUFsingle ? (1-20)", 0
str_function_control: DC "FUNCTION CONTROL", 0
str_int: DC "INT", 0
str_lfo_name_triangle: DC "TRIANGLE", 0
str_lfo_name_saw_down: DC "SAW DWN", 0
str_lfo_name_saw_up: DC "SAW UP", 0
str_lfo_name_square: DC "SQUARE", 0
str_lfo_name_sine: DC "SINE", 0
str_lfo_name_sample_hold: DC "S/HOLD", 0
str_lfo_speed: DC.B STR_FRAGMENT_OFFSET_LFO
DC "SPEED"
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_lfo_wave: DC.B STR_FRAGMENT_OFFSET_LFO
DC "WAVE"
DC.B PRINT_PARAM_FUNCTION_LFO_WAVE
str_lfo_delay: DC.B STR_FRAGMENT_OFFSET_LFO
DC "DELAY"
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_lfo_pm_depth: DC.B STR_FRAGMENT_OFFSET_LFO
DC "PM"
DC.B STR_FRAGMENT_OFFSET_DEPTH
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_lfo_am_depth: DC.B STR_FRAGMENT_OFFSET_LFO
DC "AM"
DC.B STR_FRAGMENT_OFFSET_DEPTH
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_lvl_scaling: DC.B "LVL "
DC.B STR_FRAGMENT_OFFSET_SCALING, 0
str_master_tune: DC "MASTER "
DC.B STR_FRAGMENT_OFFSET_TUNE
DC " ADJ", 0
str_mem_protect: DC "MEM. PROTECT"
DC.B PRINT_PARAM_FUNCTION_BOOLEAN
str_memory_select: DC.B STR_FRAGMENT_OFFSET_MEMORY
DC.B STR_FRAGMENT_OFFSET_SELECT, 0
str_memory_store: DC.B STR_FRAGMENT_OFFSET_MEMORY
DC.B STR_FRAGMENT_OFFSET_STORE, 0
str_memory_protect: DC.B STR_FRAGMENT_OFFSET_MEMORY
DC "PROTECT", 0
str_midi_ch: DC "MIDI CH"
DC.B PRINT_PARAM_FUNCTION_MIDI_CHANNEL
str_midi_error_buffer_full: DC "MIDI BUFFER FULL", 0
str_midi_error_data: DC "MIDI DATA ERROR", 0
str_midi_received: DC " MIDI RECEIVED", 0
str_midi_checksum_error: DC "MIDI CSUM ERROR", 0
str_midi_transmit: DC " MIDI TRANSMIT ?", 0
str_middle_c: DC "MIDDLE C"
DC.B PRINT_PARAM_FUNCTION_KEY_TRANSPOSE
str_mod_sens_a: DC "A MOD SENS."
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_mod_sens_p: DC "P MOD SENS."
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_mode_poly: DC "POLY"
DC.B STR_FRAGMENT_OFFSET_MODE,0
str_mode_mono: DC "MONO"
DC.B STR_FRAGMENT_OFFSET_MODE
DC.B PRINT_PARAM_FUNCTION_MONO_POLY
str_note_names: DC "C C#D D#E F F#G G#A A#B "
str_off: DC "OFF", 0
str_ok: DC "OK!", 0
str_on: DC " ON", 0
str_op_copy: DC "from OP to OP?", 0
str_osc_detune: DC "OSC DE"
DC.B STR_FRAGMENT_OFFSET_TUNE
DC.B PRINT_PARAM_FUNCTION_OSC_DETUNE
str_osc_key_sync: DC "OSC KEY SYNC"
DC.B PRINT_PARAM_FUNCTION_BOOLEAN
str_osc_mode: DC "OSC MODE"
DC.B PRINT_PARAM_FUNCTION_OSC_MODE
str_osc_mode_ratio: DC "RATIO", 0
str_osc_mode_fixed: DC "FIXED", 0
str_output_level: DC "OUTPUT "
DC.B STR_FRAGMENT_OFFSET_LEVEL
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_p_bend_range: DC "P BEND "
DC.B STR_FRAGMENT_OFFSET_RANGE
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_porta_full_time: DC "FULL TIME "
DC.B STR_FRAGMENT_OFFSET_PORTA, 0
str_porta_fingered: DC "FINGERED "
DC.B STR_FRAGMENT_OFFSET_PORTA, 0
str_porta_retain: DC.B STR_FRAGMENT_OFFSET_SUS_KEY
DC "RETAIN", 0
str_porta_follow: DC.B STR_FRAGMENT_OFFSET_SUS_KEY
DC "FOLLOW", 0
str_porta_time: DC.B STR_FRAGMENT_OFFSET_PORTA
DC " TIME"
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_rate_scaling: DC.B STR_FRAGMENT_OFFSET_RATE
DC.B STR_FRAGMENT_OFFSET_SCALING
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_sys_info: DC "SYS INFO "
DC.B PRINT_PARAM_FUNCTION_AVAIL_UNAVAIL
str_sys_info_unavail: DC "UNAVAIL", 0
str_tape_save: DC "SAVE TO TAPE ?", 0
str_tape_verify: DC "VERIFY TAPE ?", 0
str_tape_load: DC "LOAD FROM TAPE ?", 0
str_tape_single: DC "LOAD SINGLE ?", 0
str_tape_remote: DC "TAPE REMOTE", 0
; Note that this string is not null-terminated.
; The test UI routine will copy both lines to the LCD buffer.
str_test_mode_prompt: DC "V1.0.2 20-Jun-24"
str_test_mode_prompt_line_2: DC " Test Entry ?", 0
str_verify_complete: DC "VERIFY COMPLETED", 0
str_verify_tape: DC "VERIFY TAPE "
DC.B STR_FRAGMENT_OFFSET_READY
str_voice_init: DC "VOICE INIT ?", 0
str_welcome_message: DC "* YAMAHA DX9/7 *https://ajxs.me ", 0
str_wheel_range: DC.B STR_FRAGMENT_OFFSET_WHEEL
DC.B STR_FRAGMENT_OFFSET_RANGE
DC.B PRINT_PARAM_FUNCTION_NUMERIC
str_wheel_pitch: DC.B STR_FRAGMENT_OFFSET_WHEEL
DC.B STR_FRAGMENT_OFFSET_PITCH
DC.B PRINT_PARAM_FUNCTION_BOOLEAN
str_wheel_amp: DC.B STR_FRAGMENT_OFFSET_WHEEL
DC.B STR_FRAGMENT_OFFSET_AMP
DC.B PRINT_PARAM_FUNCTION_BOOLEAN
str_wheel_eg_b: DC.B STR_FRAGMENT_OFFSET_WHEEL
DC.B STR_FRAGMENT_OFFSET_EG_B
DC.B PRINT_PARAM_FUNCTION_BOOLEAN
str_test: DC "TEST", 0
; ==============================================================================
; String Fragment Table.
; The DX9 firmware uses an novel method for saving space in the string table.
; It stores commonly printed 'fragments' of strings, which can be reused in
; regular strings.
; If the LCD string copy function encounters a byte with a value above 0x80, it
; treats this byte as an offset from the start of the 'string fragment table',
; and will then use this offset to load, and copy the specified 'fragment'.
; The 'start' offset below is 128 bytes offset from the start of the table so
; that the string copy code does not require any pointer arithmetic.
; The string copy function will add the offset to this pointer to find the
; specified fragment.
; This functionality is used in the DX100, and TX81Z, most likely others.
; It is not used in the DX7.
; ==============================================================================
string_fragment_offset_start: EQU (#str_fragment_table_start - 0x80)
str_fragment_table_start:
str_fragment_alg: DC "ALG", 0
str_fragment_amp: DC "AMP", 0
str_fragment_breath: DC "BREATH ", 0
str_fragment_depth: DC " DEPTH", 0
str_fragment_eg: DC "EG ", 0
str_fragment_eg_b: DC "EG B.", 0
str_fragment_level: DC "LEVEL", 0
str_fragment_lfo: DC "LFO ", 0
str_fragment_memory: DC "MEMORY ", 0
str_fragment_mode: DC " MODE", 0
str_fragment_pitch: DC "PITCH ", 0
str_fragment_porta: DC "PORTA", 0
str_fragment_range: DC "RANGE", 0
str_fragment_rate: DC "RATE ", 0
str_fragment_scaling: DC "SCALING", 0
str_fragment_select: DC "SELECT", 0
str_fragment_store: DC "STORE", 0
str_fragment_tune: DC "TUNE", 0
str_fragment_wheel: DC "WHEEL ", 0
str_fragment_sus_key: DC "SUS-KEY P ", 0
str_fragment_ready: DC "ready?", 0
STR_FRAGMENT_OFFSET_ALG: EQU (str_fragment_alg - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_AMP: EQU (str_fragment_amp - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_BREATH: EQU (str_fragment_breath - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_DEPTH: EQU (str_fragment_depth - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_EG: EQU (str_fragment_eg - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_EG_B: EQU (str_fragment_eg_b - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_LEVEL: EQU (str_fragment_level - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_LFO: EQU (str_fragment_lfo - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_MEMORY: EQU (str_fragment_memory - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_MODE: EQU (str_fragment_mode - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_PITCH: EQU (str_fragment_pitch - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_PORTA: EQU (str_fragment_porta - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_RANGE: EQU (str_fragment_range - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_RATE: EQU (str_fragment_rate - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_SCALING: EQU (str_fragment_scaling - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_SELECT: EQU (str_fragment_select - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_STORE: EQU (str_fragment_store - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_TUNE: EQU (str_fragment_tune - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_WHEEL: EQU (str_fragment_wheel - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_SUS_KEY: EQU (str_fragment_sus_key - #string_fragment_offset_start)
STR_FRAGMENT_OFFSET_READY: EQU (str_fragment_ready - #string_fragment_offset_start)