Subversion Repositories svn.mios

Rev

Rev 679 | Rev 797 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
44 tk 1
; $Id: cs_menu_print.inc 790 2009-06-04 19:16:22Z tk $
1 tk 2
;
3
; SID Control Surface Menu Parameter Print Functions
4
;
5
; ==========================================================================
6
;
7
;  Copyright 1998-2007 Thorsten Klose (tk@midibox.org)
8
;  Licensed for personal non-commercial use only.
9
;  All other rights reserved.
10
;
11
; ==========================================================================
12
 
13
; ==========================================================================
14
; ==========================================================================
15
;  refered by cs_menu_tables.inc
16
; ==========================================================================
17
; ==========================================================================
18
 
19
; ==========================================================================
20
;  All supported PRINT_* indices
21
; ==========================================================================
22
PRINT_NOP		EQU	0x00
23
 
24
PRINT_DEC8		EQU	0x01
25
PRINT_DECP1		EQU	0x02
26
PRINT_PMDEC7		EQU	0x03
27
PRINT_PMDEC8		EQU	0x04
28
PRINT_HEX12		EQU	0x05
29
PRINT_CHN		EQU	0x06
30
PRINT_BNK		EQU	0x07
31
PRINT_PAT		EQU	0x08
32
PRINT_ENS		EQU	0x09
33
PRINT_B0		EQU	0x0a
34
PRINT_B1		EQU	0x0b
35
PRINT_B2		EQU	0x0c
36
 
37
PRINT_VAR_123		EQU	0x0d
38
PRINT_VAR_SID1234	EQU	0x0e
39
PRINT_VAR_DEC		EQU	0x0f
40
PRINT_VAR_DECP1		EQU	0x10
41
PRINT_VAR_CALI		EQU	0x11
42
PRINT_VAR_LR		EQU	0x12
43
 
44
PRINT_Vx_DEC		EQU	0x13
45
PRINT_Vx_DEC4U		EQU	0x14
46
PRINT_Vx_DEC4L		EQU	0x15
47
PRINT_Vx_DECP1		EQU	0x16
362 tk 48
PRINT_Vx_DECPM3		EQU	0x17
49
PRINT_Vx_PMD		EQU	0x18
50
PRINT_Vx_GSA		EQU	0x19
1 tk 51
PRINT_Vx_HEX8		EQU	0x1a
52
PRINT_Vx_HEX12		EQU	0x1b
53
PRINT_Vx_PMDEC7		EQU	0x1c
54
PRINT_Vx_PMDEC8		EQU	0x1d
55
PRINT_Vx_WAV		EQU	0x1e
56
PRINT_Vx_S_R		EQU	0x1f
362 tk 57
PRINT_Vx_NOTE		EQU	0x20
58
PRINT_Vx_ARP_ON		EQU	0x21
59
PRINT_Vx_ARP_DIR	EQU	0x22
60
PRINT_Vx_ARP_SOR	EQU	0x23
61
PRINT_Vx_ARP_HLD	EQU	0x24
679 tk 62
PRINT_Vx_ARP_SNC_ESY	EQU	0x25
362 tk 63
PRINT_Vx_ARP_CAC	EQU	0x26
64
PRINT_Vx_ARP_GLN	EQU	0x27
65
PRINT_Vx_ARP_RNG	EQU	0x28
66
PRINT_Vx_ARP_SPD	EQU	0x29
67
PRINT_Vx_ARP_ONE	EQU	0x2a
1 tk 68
 
362 tk 69
PRINT_M_Vx_VAS		EQU	0x2b
70
PRINT_M_Vx_PHASE	EQU	0x2c
71
PRINT_M_Vx_POL		EQU	0x2d
72
PRINT_BM_Vx_LEG		EQU	0x2e
73
PRINT_M_Vx_WTO		EQU	0x2f
74
PRINT_BM_Vx_SUK		EQU	0x30
75
PRINT_M_D_Vx_ASG	EQU	0x31
1 tk 76
 
362 tk 77
PRINT_D_Vx_VAS		EQU	0x32
1 tk 78
 
362 tk 79
PRINT_Fx_CHN		EQU	0x33
80
PRINT_Fx_CUTOFF		EQU	0x34
81
PRINT_Fx_RESON		EQU	0x35
82
PRINT_Fx_KTR		EQU	0x36
83
PRINT_Fx_MOD		EQU	0x37
84
PRINT_Fx_EXT		EQU	0x38
85
PRINT_Fx_3OF		EQU	0x39
86
PRINT_Fx_FIP		EQU	0x3a
1 tk 87
 
362 tk 88
PRINT_LFOx_WAV		EQU	0x3b
89
PRINT_LFOx_RATE		EQU	0x3c
90
PRINT_LFOx_DEC		EQU	0x3d
91
PRINT_LFOx_PMDEC8	EQU	0x3e
92
PRINT_LFOx_SNC		EQU	0x3f
93
PRINT_LFOx_SNC_M	EQU	0x40
94
PRINT_LFOx_ONE		EQU	0x41
95
PRINT_LFOx_CSN		EQU	0x42
1 tk 96
 
362 tk 97
PRINT_ENVx_DEC		EQU	0x43
98
PRINT_ENVx_PMDEC8	EQU	0x44
99
PRINT_ENVx_LPB		EQU	0x45
100
PRINT_ENVx_LPE		EQU	0x46
101
PRINT_ENVx_CSN		EQU	0x47
102
PRINT_ENVx_CAS		EQU	0x48
1 tk 103
 
362 tk 104
PRINT_MODx_SRC		EQU	0x49
105
PRINT_MODx_OP		EQU	0x4a
106
PRINT_MODx_TAR		EQU	0x4b
107
PRINT_MODx_PMDEC8	EQU	0x4c
108
PRINT_MODx_INV1		EQU	0x4d
109
PRINT_MODx_INV2		EQU	0x4e
110
PRINT_MODx_Nx		EQU	0x4f
1 tk 111
 
362 tk 112
PRINT_TRGx_SRC		EQU	0x50
113
PRINT_TRGx_Nx		EQU	0x51
1 tk 114
 
362 tk 115
PRINT_CLK_BPM		EQU	0x52
116
PRINT_CLK_SLAVE		EQU	0x53
1 tk 117
 
362 tk 118
PRINT_KNB		EQU	0x54
119
PRINT_KNB_VALUE		EQU	0x55
120
PRINT_KNB_PAR		EQU	0x56
121
PRINT_KNB_MINMAX	EQU	0x57
1 tk 122
 
362 tk 123
PRINT_EXT_VALUE		EQU	0x58
124
PRINT_EXT_SWITCH	EQU	0x59
1 tk 125
 
362 tk 126
PRINT_WTx_PAR		EQU	0x5a
127
PRINT_WTx_PAR_P1	EQU	0x5b
128
PRINT_WTx_SID		EQU	0x5c
129
PRINT_WTx_SPD		EQU	0x5d
130
PRINT_WTx_B7		EQU	0x5e
131
PRINT_WTx_POS		EQU	0x5f
132
PRINT_WTx_LOP		EQU	0x60
1 tk 133
 
362 tk 134
PRINT_WTE_POS		EQU	0x61
135
PRINT_WTE_PAR		EQU	0x62
136
PRINT_WT_VAL		EQU	0x63
137
PRINT_WT_GO		EQU	0x64
1 tk 138
 
362 tk 139
PRINT_SEQ_POS		EQU	0x65
140
PRINT_SEQ_NUM		EQU	0x66
141
PRINT_SEQ_S16		EQU	0x67
142
PRINT_D_SEQ_ON		EQU	0x68
143
PRINT_B_SEQ_VAL		EQU	0x69
1 tk 144
 
362 tk 145
PRINT_D_MODEL		EQU	0x6a
1 tk 146
 
362 tk 147
PRINT_RND_GEN		EQU	0x6b
1 tk 148
 
362 tk 149
PRINT_SAVE_BNK		EQU	0x6c
150
PRINT_SAVE_PAT		EQU	0x6d
151
PRINT_SAVE_NAME		EQU	0x6e
152
PRINT_SAVE_ENS		EQU	0x6f
1 tk 153
 
362 tk 154
PRINT_ENSxIx_DECP1	EQU	0x70
155
PRINT_ENSxIx_CHN	EQU	0x71
156
PRINT_ENSxIx_NOTE	EQU	0x72
157
PRINT_ENSxIx_PMDEC7	EQU	0x73
158
PRINT_ENSx_X2A		EQU	0x74
159
PRINT_ENSx_RESERVED	EQU	0x75
160
PRINT_ENSx_MONO		EQU	0x76
161
PRINT_ENSx_FILLOG	EQU	0x77
162
PRINT_ENSx_DOR		EQU	0x78
163
PRINT_ENSx_SPV		EQU	0x79
164
PRINT_ENSx_EXTINV	EQU	0x7a
1 tk 165
 
166
 
167
; ==========================================================================
168
;  The PRINT handler
169
;; IN: PRINT_xxx ID in WREG
170
; ==========================================================================
171
CS_MENU_PRINT_Handler
362 tk 172
	JUMPTABLE_2BYTES (0x7a+1) ; entries
1 tk 173
	rgoto	CS_MENU_PRINT_NOP
174
 
175
	rgoto	CS_MENU_PRINT_DEC8
176
	rgoto	CS_MENU_PRINT_DECP1
177
	rgoto	CS_MENU_PRINT_PMDEC7
178
	rgoto	CS_MENU_PRINT_PMDEC8
179
	rgoto	CS_MENU_PRINT_HEX12
180
	rgoto	CS_MENU_PRINT_CHN
181
	rgoto	CS_MENU_PRINT_BNK
182
	rgoto	CS_MENU_PRINT_PAT
183
	rgoto	CS_MENU_PRINT_ENS
184
	rgoto	CS_MENU_PRINT_B0
185
	rgoto	CS_MENU_PRINT_B1
186
	rgoto	CS_MENU_PRINT_B2
187
 
188
	rgoto	CS_MENU_PRINT_VAR_123
189
	rgoto	CS_MENU_PRINT_VAR_SID1234
190
	rgoto	CS_MENU_PRINT_VAR_DEC
191
	rgoto	CS_MENU_PRINT_VAR_DECP1
192
	rgoto	CS_MENU_PRINT_VAR_CALI
193
	rgoto	CS_MENU_PRINT_VAR_LR
194
 
195
	rgoto	CS_MENU_PRINT_Vx_DEC
196
	rgoto	CS_MENU_PRINT_Vx_DEC4U
197
	rgoto	CS_MENU_PRINT_Vx_DEC4L
198
	rgoto	CS_MENU_PRINT_Vx_DECP1
362 tk 199
	rgoto	CS_MENU_PRINT_Vx_DECPM3
1 tk 200
	rgoto	CS_MENU_PRINT_Vx_PMD
201
	rgoto	CS_MENU_PRINT_Vx_GSA
202
	rgoto	CS_MENU_PRINT_Vx_HEX8
203
	rgoto	CS_MENU_PRINT_Vx_HEX12
204
	rgoto	CS_MENU_PRINT_Vx_PMDEC7
205
	rgoto	CS_MENU_PRINT_Vx_PMDEC8
206
	rgoto	CS_MENU_PRINT_Vx_WAV
207
	rgoto	CS_MENU_PRINT_Vx_S_R
362 tk 208
	rgoto	CS_MENU_PRINT_Vx_NOTE
1 tk 209
	rgoto	CS_MENU_PRINT_Vx_ARP_ON
210
	rgoto	CS_MENU_PRINT_Vx_ARP_DIR
211
	rgoto	CS_MENU_PRINT_Vx_ARP_SOR
212
	rgoto	CS_MENU_PRINT_Vx_ARP_HLD
679 tk 213
	rgoto	CS_MENU_PRINT_Vx_ARP_SNC_ESY
1 tk 214
	rgoto	CS_MENU_PRINT_Vx_ARP_CAC
215
	rgoto	CS_MENU_PRINT_Vx_ARP_GLN
216
	rgoto	CS_MENU_PRINT_Vx_ARP_RNG
217
	rgoto	CS_MENU_PRINT_Vx_ARP_SPD
218
	rgoto	CS_MENU_PRINT_Vx_ARP_ONE
219
 
220
	rgoto	CS_MENU_PRINT_M_Vx_VAS
221
	rgoto	CS_MENU_PRINT_M_Vx_PHASE
222
	rgoto	CS_MENU_PRINT_M_Vx_POL
228 tk 223
	rgoto	CS_MENU_PRINT_BM_Vx_LEG
1 tk 224
	rgoto	CS_MENU_PRINT_M_Vx_WTO
228 tk 225
	rgoto	CS_MENU_PRINT_BM_Vx_SUK
1 tk 226
	rgoto	CS_MENU_PRINT_M_D_Vx_ASG
227
 
228
	rgoto	CS_MENU_PRINT_D_Vx_VAS
229
 
230
	rgoto	CS_MENU_PRINT_Fx_CHN
231
	rgoto	CS_MENU_PRINT_Fx_CUTOFF
232
	rgoto	CS_MENU_PRINT_Fx_RESON
233
	rgoto	CS_MENU_PRINT_Fx_KTR
234
	rgoto	CS_MENU_PRINT_Fx_MOD
235
	rgoto	CS_MENU_PRINT_Fx_EXT
236
	rgoto	CS_MENU_PRINT_Fx_3OF
237
	rgoto	CS_MENU_PRINT_Fx_FIP
238
 
239
	rgoto	CS_MENU_PRINT_LFOx_WAV
240
	rgoto	CS_MENU_PRINT_LFOx_RATE
241
	rgoto	CS_MENU_PRINT_LFOx_DEC
242
	rgoto	CS_MENU_PRINT_LFOx_PMDEC8
243
	rgoto	CS_MENU_PRINT_LFOx_SNC
244
	rgoto	CS_MENU_PRINT_LFOx_SNC_M
245
	rgoto	CS_MENU_PRINT_LFOx_ONE
246
	rgoto	CS_MENU_PRINT_LFOx_CSN
247
 
248
	rgoto	CS_MENU_PRINT_ENVx_DEC
249
	rgoto	CS_MENU_PRINT_ENVx_PMDEC8
250
	rgoto	CS_MENU_PRINT_ENVx_LPB
251
	rgoto	CS_MENU_PRINT_ENVx_LPE
252
	rgoto	CS_MENU_PRINT_ENVx_CSN
228 tk 253
	rgoto	CS_MENU_PRINT_ENVx_CAS
1 tk 254
 
255
	rgoto	CS_MENU_PRINT_MODx_SRC
256
	rgoto	CS_MENU_PRINT_MODx_OP
257
	rgoto	CS_MENU_PRINT_MODx_TAR
258
	rgoto	CS_MENU_PRINT_MODx_PMDEC8
259
	rgoto	CS_MENU_PRINT_MODx_INV1
260
	rgoto	CS_MENU_PRINT_MODx_INV2
261
	rgoto	CS_MENU_PRINT_MODx_Nx
262
 
263
	rgoto	CS_MENU_PRINT_TRGx_SRC
264
	rgoto	CS_MENU_PRINT_TRGx_Nx
265
 
266
	rgoto	CS_MENU_PRINT_CLK_BPM
267
	rgoto	CS_MENU_PRINT_CLK_SLAVE
268
 
269
	rgoto	CS_MENU_PRINT_KNB
270
	rgoto	CS_MENU_PRINT_KNB_VALUE
271
	rgoto	CS_MENU_PRINT_KNB_PAR
272
	rgoto	CS_MENU_PRINT_KNB_MINMAX
273
 
274
	rgoto	CS_MENU_PRINT_EXT_VALUE
275
	rgoto	CS_MENU_PRINT_EXT_SWITCH
276
 
277
	rgoto	CS_MENU_PRINT_WTx_PAR
278
	rgoto	CS_MENU_PRINT_WTx_PAR_P1
279
	rgoto	CS_MENU_PRINT_WTx_SID
280
	rgoto	CS_MENU_PRINT_WTx_SPD
281
	rgoto	CS_MENU_PRINT_WTx_B7
282
	rgoto	CS_MENU_PRINT_WTx_POS
283
	rgoto	CS_MENU_PRINT_WTx_LOP
284
 
285
	rgoto	CS_MENU_PRINT_WTE_POS
286
	rgoto	CS_MENU_PRINT_WTE_PAR
287
	rgoto	CS_MENU_PRINT_WT_VAL
288
	rgoto	CS_MENU_PRINT_WT_GO
289
 
290
	rgoto	CS_MENU_PRINT_SEQ_POS
291
	rgoto	CS_MENU_PRINT_SEQ_NUM
292
	rgoto	CS_MENU_PRINT_SEQ_S16
293
	rgoto	CS_MENU_PRINT_D_SEQ_ON
294
	rgoto	CS_MENU_PRINT_B_SEQ_VAL
295
 
296
	rgoto	CS_MENU_PRINT_D_MODEL
297
 
298
	rgoto	CS_MENU_PRINT_RND_GEN
299
 
300
	rgoto	CS_MENU_PRINT_SAVE_BNK
301
	rgoto	CS_MENU_PRINT_SAVE_PAT
302
	rgoto	CS_MENU_PRINT_SAVE_NAME
303
	rgoto	CS_MENU_PRINT_SAVE_ENS
304
 
305
	rgoto	CS_MENU_PRINT_ENSxIx_DECP1
306
	rgoto	CS_MENU_PRINT_ENSxIx_CHN
307
	rgoto	CS_MENU_PRINT_ENSxIx_NOTE
308
	rgoto	CS_MENU_PRINT_ENSxIx_PMDEC7
309
	rgoto	CS_MENU_PRINT_ENSx_X2A
310
	rgoto	CS_MENU_PRINT_ENSx_RESERVED
311
	rgoto	CS_MENU_PRINT_ENSx_MONO
340 tk 312
	rgoto	CS_MENU_PRINT_ENSx_FILLOG
313
	rgoto	CS_MENU_PRINT_ENSx_DOR
1 tk 314
	rgoto	CS_MENU_PRINT_ENSx_SPV
315
	rgoto	CS_MENU_PRINT_ENSx_EXTINV
316
 
317
 
318
; ==========================================================================
319
; ==========================================================================
320
; ==========================================================================
321
 
322
CS_MENU_PRINT_NOP
521 tk 323
	movlw	4
1 tk 324
	goto	SID_LCD_PrintSpaces
325
 
326
; --------------------------------------------------------------------------
327
CS_MENU_PRINT_DEC8
328
	movf	INDF0, W
329
	goto	CS_MENU_PRINT_Dec
330
 
331
; --------------------------------------------------------------------------
332
CS_MENU_PRINT_DECP1
333
	incf	INDF0, W
334
	goto	CS_MENU_PRINT_Dec
335
 
336
; --------------------------------------------------------------------------
337
CS_MENU_PRINT_PMDEC7
338
	movf	INDF0, W
339
	goto	CS_MENU_PRINT_PMDec7
340
 
341
; --------------------------------------------------------------------------
342
CS_MENU_PRINT_PMDEC8
343
	movf	INDF0, W
344
	goto	CS_MENU_PRINT_PMDec8
345
 
346
; --------------------------------------------------------------------------
347
CS_MENU_PRINT_HEX12
521 tk 348
	goto	CS_MENU_PRINT_Hex12
1 tk 349
 
350
; --------------------------------------------------------------------------
351
CS_MENU_PRINT_CHN
352
	lfsr	FSR1, CS_MENU_SID_M_CHN
353
	movf	CS_MENU_SID, W
354
	andlw	0x03
355
	addwf	FSR1L, F
356
	incf	INDF1, W
357
	andlw	0x7f		; mask out "sent" flag
358
	goto	CS_MENU_PRINT_Dec
359
 
360
; --------------------------------------------------------------------------
361
CS_MENU_PRINT_BNK
362
	movlw	' '
363
	call	CS_MENU_PRINT_Char
364
 
365
	call	CS_MENU_MS_GetSIDPatch
366
	movwf	SID_PATCH
367
	call	CS_MENU_MS_GetSIDBank
368
	movwf	SID_BANK
369
	addlw	'A'
370
	rcall	CS_MENU_PRINT_Char
371
 
372
	;; add '*' if BankStick or Patch not available
373
	call	SID_PBANK_CheckPatchValid
374
	movlw	' '
375
	skpz
376
	movlw	'*'
521 tk 377
	rcall	CS_MENU_PRINT_Char
378
	movlw	' '
1 tk 379
	rgoto	CS_MENU_PRINT_Char
380
 
381
; --------------------------------------------------------------------------
382
CS_MENU_PRINT_PAT
383
	call	CS_MENU_MS_GetSIDPatch
384
	addlw	1
385
	goto	CS_MENU_PRINT_Dec000
386
 
387
; --------------------------------------------------------------------------
388
CS_MENU_PRINT_ENS
389
	call	CS_MENU_PRINT_GetVAR	; pointer to variable in FSR0
390
	addlw	1
391
	goto	CS_MENU_PRINT_Dec000
392
 
393
; --------------------------------------------------------------------------
394
CS_MENU_PRINT_B0
395
	movlw	0
396
	goto	CS_MENU_PRINT_OnOff_INDF0
397
 
398
; --------------------------------------------------------------------------
399
CS_MENU_PRINT_B1
400
	movlw	1
401
	goto	CS_MENU_PRINT_OnOff_INDF0
402
 
403
; --------------------------------------------------------------------------
404
CS_MENU_PRINT_B2
405
	movlw	2
406
	goto	CS_MENU_PRINT_OnOff_INDF0
407
 
408
; --------------------------------------------------------------------------
409
CS_MENU_PRINT_VAR_SID1234
410
	call	CS_MENU_PRINT_GetVAR	; pointer to variable in FSR0
411
	movwf	TMP1
412
	movff	MBNET_NODE_AVAIL, TMP2
413
 
414
	movlw	'-'
415
	btfsc	TMP1, 0
521 tk 416
	movlw	'1'
1 tk 417
	btfss	TMP2, 0
521 tk 418
	movlw	'*'
1 tk 419
	rcall	CS_MENU_PRINT_Char
420
	movlw	'-'
421
	btfsc	TMP1, 1
521 tk 422
	movlw	'2'
1 tk 423
	btfss	TMP2, 1
521 tk 424
	movlw	'*'
1 tk 425
	rcall	CS_MENU_PRINT_Char
426
	movlw	'-'
427
	btfsc	TMP1, 2
521 tk 428
	movlw	'3'
1 tk 429
	btfss	TMP2, 2
521 tk 430
	movlw	'*'
1 tk 431
	rcall	CS_MENU_PRINT_Char
432
	movlw	'-'
433
	btfsc	TMP1, 3
521 tk 434
	movlw	'4'
1 tk 435
	btfss	TMP2, 3
521 tk 436
	movlw	'*'
1 tk 437
	rgoto	CS_MENU_PRINT_Char
438
 
439
; --------------------------------------------------------------------------
440
CS_MENU_PRINT_VAR_123
441
	call	CS_MENU_PRINT_GetVAR	; pointer to variable in FSR0
442
	goto	CS_MENU_PRINT_123
443
 
444
; --------------------------------------------------------------------------
445
CS_MENU_PRINT_VAR_DEC
446
	rcall	CS_MENU_PRINT_GetVAR	; pointer to variable in FSR0
447
	goto	CS_MENU_PRINT_Dec
448
 
449
; --------------------------------------------------------------------------
450
CS_MENU_PRINT_VAR_DECP1
451
	rcall	CS_MENU_PRINT_GetVAR	; pointer to variable in FSR0
452
	rgoto	CS_MENU_PRINT_DecPlus1
453
 
454
; --------------------------------------------------------------------------
455
CS_MENU_PRINT_VAR_LR
456
	rcall	CS_MENU_PRINT_GetVAR	; pointer to variable in FSR0
457
	movlw	' '
458
	rcall	CS_MENU_PRINT_Char
459
	movlw	'-'
460
	btfsc	INDF0, 0
521 tk 461
	movlw	'L'
1 tk 462
	rcall	CS_MENU_PRINT_Char
463
	movlw	'-'
464
	btfsc	INDF0, 1
521 tk 465
	movlw	'R'
466
	rcall	CS_MENU_PRINT_Char
467
	movlw	' '
1 tk 468
	rgoto	CS_MENU_PRINT_Char
469
 
470
; --------------------------------------------------------------------------
471
CS_MENU_PRINT_VAR_CALI
472
	call	CS_MENU_FSR0_ENS
473
 
474
	;; add offset 4 if left SID is not selected
475
	movlw	0x00
476
	btfss	CS_MENU_SELECTED_SID_LR, 0
477
	addlw 4
478
	addwf	FSR0L, F
479
	movf	INDF0, W
480
	swapf	PREINC0, W
481
	call	MIOS_LCD_PrintHex1
482
	swapf	POSTDEC0, W
483
	andlw	0xf0
484
	movwf	PRODL
485
	swapf	INDF0, W
486
	andlw	0x0f
487
	iorwf	PRODL, W
521 tk 488
	call	MIOS_LCD_PrintHex2
489
	movlw	' '
490
	rgoto	CS_MENU_PRINT_Char
1 tk 491
 
492
; --------------------------------------------------------------------------
493
CS_MENU_PRINT_Vx_DEC
494
	rcall	CS_MENU_PRINT_GetVx
495
	rgoto	CS_MENU_PRINT_Dec
496
 
497
; --------------------------------------------------------------------------
498
CS_MENU_PRINT_Vx_DEC4U
499
	rcall	CS_MENU_PRINT_GetVx
500
	swapf	WREG, W
501
	andlw	0x0f
502
	rgoto	CS_MENU_PRINT_Dec
503
 
504
; --------------------------------------------------------------------------
505
CS_MENU_PRINT_Vx_DEC4L
506
	rcall	CS_MENU_PRINT_GetVx
507
	andlw	0x0f
508
	rgoto	CS_MENU_PRINT_Dec
509
 
510
; --------------------------------------------------------------------------
511
CS_MENU_PRINT_Vx_DECP1
512
	rcall	CS_MENU_PRINT_GetVx
513
	andlw	0x7f
514
	rgoto	CS_MENU_PRINT_DecPlus1
515
 
516
; --------------------------------------------------------------------------
362 tk 517
CS_MENU_PRINT_Vx_DECPM3
518
	rcall	CS_MENU_PRINT_GetVx
519
	andlw	0x07
520
	movwf	PRODL
521
	andlw	0x04
522
	bz	CS_MENU_PRINT_Vx_DECPM3_Pos
523
CS_MENU_PRINT_Vx_DECPM3_Neg
524
	movf	PRODL, W
525
	andlw	0x03
526
	addlw	0x80-4
527
	rgoto	CS_MENU_PRINT_PMDec8
528
CS_MENU_PRINT_Vx_DECPM3_Pos
529
	movf	PRODL, W
530
	addlw	0x80
531
	rgoto	CS_MENU_PRINT_PMDec8
532
 
533
; --------------------------------------------------------------------------
1 tk 534
CS_MENU_PRINT_Vx_PMD
535
	rcall	CS_MENU_PRINT_GetVx
536
	TABLE_ADDR CS_MENU_PRINT_PMD_Tab
537
	movlw	0
538
	btfsc	INDF0, SID_I_V_FLAGS1_PORTA_CTG
521 tk 539
	movlw	1
1 tk 540
	btfsc	INDF0, SID_I_V_FLAGS1_PORTA_GLISSANDO
521 tk 541
	movlw	2
1 tk 542
	rgoto	CS_MENU_PRINT_StringFromTable
543
CS_MENU_PRINT_PMD_Tab
544
	dw	"Nor "
545
	dw	"CTG "
546
	dw	"Gls "
547
	dw	"??? "
548
 
549
; --------------------------------------------------------------------------
550
CS_MENU_PRINT_Vx_GSA
551
	rcall	CS_MENU_PRINT_GetVx
552
 	movlw	SID_I_V_FLAGS1_GSA
553
	rgoto	CS_MENU_PRINT_OnOff_INDF0
554
 
555
; --------------------------------------------------------------------------
556
CS_MENU_PRINT_Vx_HEX8
557
	rcall	CS_MENU_PRINT_GetVx
558
	rgoto	CS_MENU_PRINT_Hex
559
 
560
; --------------------------------------------------------------------------
561
CS_MENU_PRINT_Vx_HEX12
562
	rcall	CS_MENU_PRINT_GetVx
521 tk 563
	rgoto	CS_MENU_PRINT_Hex12
1 tk 564
 
565
; --------------------------------------------------------------------------
566
CS_MENU_PRINT_Vx_PMDEC7
567
	rcall	CS_MENU_PRINT_GetVx
568
	rgoto	CS_MENU_PRINT_PMDec7
569
 
570
; --------------------------------------------------------------------------
571
CS_MENU_PRINT_Vx_PMDEC8
572
	rcall	CS_MENU_PRINT_GetVx
573
	rgoto	CS_MENU_PRINT_PMDec8
574
 
575
; --------------------------------------------------------------------------
576
CS_MENU_PRINT_Vx_WAV
577
	rcall	CS_MENU_PRINT_GetVx
578
	TABLE_ADDR CS_MENU_PRINT_Vx_WAV_Tab
579
	;; if INDF0[4], then oscillator has been switched off
580
	;; -> index 0
581
	;; else index = INDF0[2..0] (if INDF0[3] then noise, index=8)
582
	movf	INDF0, W
583
	andlw	0x07
584
	btfsc	INDF0, 3
521 tk 585
	movlw	0x08
1 tk 586
	btfsc	INDF0, 4
521 tk 587
	movlw	0x00
1 tk 588
	rgoto	CS_MENU_PRINT_StringFromTable
589
 
590
; --------------------------------------------------------------------------
591
CS_MENU_PRINT_Vx_S_R
592
	rcall	CS_MENU_PRINT_GetVx
593
	TABLE_ADDR CS_MENU_PRINT_Vx_S_R_Tab
594
	;; status in INDF0[6..5]
595
	;; table allocates 4 bytes per entry
596
	;; therefore: offset = INDF0[6..5] >> 3
597
	rrf	INDF0, W
598
	swapf	WREG, W
599
	andlw	0x03
600
	rgoto	CS_MENU_PRINT_StringFromTable
601
 
602
; --------------------------------------------------------------------------
362 tk 603
CS_MENU_PRINT_Vx_NOTE
604
	rcall	CS_MENU_PRINT_GetVx
605
	skpnz
521 tk 606
	rgoto	CS_MENU_PRINT_MMM ; prints "--- "
607
	call	SID_NOTE_Print
608
	movlw	' '
609
	rgoto	CS_MENU_PRINT_Char
362 tk 610
 
611
; --------------------------------------------------------------------------
1 tk 612
CS_MENU_PRINT_Vx_ARP_ON
613
	rcall	CS_MENU_PRINT_GetVx
614
	movlw	SID_I_V_ARP_MODE_ENABLE
615
	rgoto	CS_MENU_PRINT_OnOff_INDF0
616
 
617
; --------------------------------------------------------------------------
618
CS_MENU_PRINT_Vx_ARP_DIR
619
	rcall	CS_MENU_PRINT_GetVx
620
	TABLE_ADDR CS_MENU_PRINT_Vx_ARP_DIR_Tab
621
	rrf	INDF0, W
622
	andlw	0x07
623
	rgoto	CS_MENU_PRINT_StringFromTable
624
 
625
; --------------------------------------------------------------------------
626
CS_MENU_PRINT_Vx_ARP_SOR
627
	rcall	CS_MENU_PRINT_GetVx
628
	movlw	SID_I_V_ARP_MODE_SORTED
629
	rgoto	CS_MENU_PRINT_OnOff_INDF0
630
 
631
; --------------------------------------------------------------------------
632
CS_MENU_PRINT_Vx_ARP_HLD
633
	rcall	CS_MENU_PRINT_GetVx
634
	movlw	SID_I_V_ARP_MODE_HOLD
635
	rgoto	CS_MENU_PRINT_OnOff_INDF0
636
 
637
; --------------------------------------------------------------------------
679 tk 638
CS_MENU_PRINT_Vx_ARP_SNC_ESY
1 tk 639
	rcall	CS_MENU_PRINT_GetVx
679 tk 640
	movlw	SID_I_V_ARP_MODE_DIV_SYNC ; same as SID_I_V_ARP_SPEED_DIV_EASY_CHORD
1 tk 641
	rgoto	CS_MENU_PRINT_OnOff_INDF0
642
 
643
; --------------------------------------------------------------------------
644
CS_MENU_PRINT_Vx_ARP_CAC
645
	rcall	CS_MENU_PRINT_GetVx
646
	movlw	SID_I_V_ARP_MODE_CAC
647
	rgoto	CS_MENU_PRINT_OnOff_INDF0
648
 
649
; --------------------------------------------------------------------------
650
CS_MENU_PRINT_Vx_ARP_GLN
651
	rcall	CS_MENU_PRINT_GetVx
652
	movf	INDF0, W
653
	andlw	0x1f
654
	rgoto	CS_MENU_PRINT_DecPlus1
655
 
656
; --------------------------------------------------------------------------
657
CS_MENU_PRINT_Vx_ARP_RNG
658
	rcall	CS_MENU_PRINT_GetVx
659
	swapf	INDF0, W
660
	rrf	WREG, W
661
	andlw	0x07
662
	rgoto	CS_MENU_PRINT_DecPlus1
663
 
664
; --------------------------------------------------------------------------
665
CS_MENU_PRINT_Vx_ARP_SPD
666
	rcall	CS_MENU_PRINT_GetVx
667
	movf	INDF0, W
668
	andlw	0x3f
669
	rgoto	CS_MENU_PRINT_DecPlus1
670
 
671
; --------------------------------------------------------------------------
672
CS_MENU_PRINT_Vx_ARP_ONE
673
	rcall	CS_MENU_PRINT_GetVx
674
	movlw	SID_I_V_ARP_SPEED_DIV_ONESHOT
675
	rgoto	CS_MENU_PRINT_OnOff_INDF0
676
 
677
; --------------------------------------------------------------------------
678
CS_MENU_PRINT_M_Vx_VAS
679
	rcall	CS_MENU_PRINT_GetVx
680
	TABLE_ADDR CS_MENU_PRINT_Vx_VAS_Tab
681
	movf	INDF0, W
682
	andlw	0x0f
683
	rgoto	CS_MENU_PRINT_StringFromTable
684
 
685
; --------------------------------------------------------------------------
686
CS_MENU_PRINT_M_Vx_PHASE
687
	rcall	CS_MENU_PRINT_GetVx
688
	movlw	SID_I_M_V_FLAGS2_PHASE
689
	rgoto	CS_MENU_PRINT_OnOff_INDF0
690
 
691
; --------------------------------------------------------------------------
692
CS_MENU_PRINT_M_Vx_POL
693
	rcall	CS_MENU_PRINT_GetVx
694
	movlw	SID_I_M_V_FLAGS2_POLY
695
	rgoto	CS_MENU_PRINT_OnOff_INDF0
696
 
697
; --------------------------------------------------------------------------
228 tk 698
CS_MENU_PRINT_BM_Vx_LEG
1 tk 699
	rcall	CS_MENU_PRINT_GetVx
700
	movlw	SID_I_M_V_FLAGS2_LEGATO
701
	rgoto	CS_MENU_PRINT_OnOff_INDF0
702
 
703
; --------------------------------------------------------------------------
704
CS_MENU_PRINT_M_Vx_WTO
705
	rcall	CS_MENU_PRINT_GetVx
706
	movlw	SID_I_M_V_FLAGS2_WT_ONLY
707
	rgoto	CS_MENU_PRINT_OnOff_INDF0
708
 
709
; --------------------------------------------------------------------------
228 tk 710
CS_MENU_PRINT_BM_Vx_SUK
1 tk 711
	rcall	CS_MENU_PRINT_GetVx
712
	movlw	SID_I_M_V_FLAGS2_SUS_KEY
713
	rgoto	CS_MENU_PRINT_OnOff_INDF0
714
 
715
; --------------------------------------------------------------------------
716
CS_MENU_PRINT_M_D_Vx_ASG
717
	;; special code only as notifier for assignment message - checked in cs_menu.inc
718
	rgoto	CS_MENU_PRINT_Vx_DEC
719
 
720
; --------------------------------------------------------------------------
721
CS_MENU_PRINT_D_Vx_VAS
722
	rcall	CS_MENU_PRINT_GetVx
723
	TABLE_ADDR CS_MENU_PRINT_Vx_VAS_Tab
724
	swapf	INDF0, W
725
	andlw	0x0f
726
	rgoto	CS_MENU_PRINT_StringFromTable
727
 
728
; --------------------------------------------------------------------------
729
CS_MENU_PRINT_Fx_CHN
730
	;; print selected channels
731
	TABLE_ADDR CS_MENU_PRINT_Fx_CHN_Tab
732
	call	CS_MENU_FSR0_Filter
733
	movf	INDF0, W
734
	andlw	0x07
735
	rgoto	CS_MENU_PRINT_StringFromTable
736
 
737
; --------------------------------------------------------------------------
738
CS_MENU_PRINT_Fx_CUTOFF
739
	call	CS_MENU_FSR0_Filter
521 tk 740
	rgoto	CS_MENU_PRINT_Hex12
1 tk 741
 
742
; --------------------------------------------------------------------------
743
CS_MENU_PRINT_Fx_RESON
744
	call	CS_MENU_FSR0_Filter
745
	movf	INDF0, W
746
	rgoto	CS_MENU_PRINT_Dec
747
 
748
; --------------------------------------------------------------------------
749
CS_MENU_PRINT_Fx_KTR
750
	call	CS_MENU_FSR0_Filter
751
	movf	INDF0, W
752
	rgoto	CS_MENU_PRINT_Dec
753
 
754
; --------------------------------------------------------------------------
755
CS_MENU_PRINT_Fx_MOD
756
	TABLE_ADDR CS_MENU_PRINT_Fx_MOD_Tab
757
	call	CS_MENU_FSR0_Filter
758
	swapf	INDF0, W
759
	andlw	0x07
760
	rgoto	CS_MENU_PRINT_StringFromTable
761
 
762
; --------------------------------------------------------------------------
763
CS_MENU_PRINT_Fx_EXT
764
	call	CS_MENU_FSR0_Filter
765
	movff	INDF0, MIOS_PARAMETER1
766
	movlw	3
767
	rgoto	CS_MENU_PRINT_OnOff
768
 
769
; --------------------------------------------------------------------------
770
CS_MENU_PRINT_Fx_3OF
771
CS_MENU_PRINT_Fx_FIP
772
	call	CS_MENU_FSR0_Filter
773
	movff	INDF0, MIOS_PARAMETER1
774
	movlw	7
775
	rgoto	CS_MENU_PRINT_OnOff
776
 
777
; --------------------------------------------------------------------------
778
CS_MENU_PRINT_LFOx_WAV
779
	TABLE_ADDR CS_MENU_PRINT_LFOx_WAV_Tab
780
	;; waveform stored in INDF0[6..4]
781
	;; 8 waveforms provided
782
	;; add 1, index 0 notifies "LFO Off"
783
	rcall	CS_MENU_PRINT_GetLFOx
784
	swapf	WREG, W
785
	andlw	0x0f
786
	addlw	1
787
	btfss	INDF0, 0
788
	movlw 0x00
789
	rgoto	CS_MENU_PRINT_StringFromTable
790
 
791
; --------------------------------------------------------------------------
792
CS_MENU_PRINT_LFOx_RATE
793
	rcall	CS_MENU_PRINT_GetLFOx	; FSR0 will point to SID_Ix_LFOx_RATE
794
 
795
	;; prepare TBLPTR[LH]
796
	TABLE_ADDR CS_MENU_PRINT_LFOx_RATE_Tab
797
	;; if clock sync activated, and rate >= 245, print period length
798
	movlw	(SID_Ix_LFOx_MODE-SID_Ix_LFOx_RATE)
799
	BRA_IFCLR PLUSW0, SID_I_LFO_MODE_CLKSYNC, ACCESS, CS_MENU_PRINT_LFOx_RATE_Dec
800
	movf	INDF0, W
801
	addlw	-245
802
	bnc	CS_MENU_PRINT_LFOx_RATE_Dec
803
CS_MENU_PRINT_LFOx_RATE_Str
804
	rgoto	CS_MENU_PRINT_StringFromTable
805
 
806
CS_MENU_PRINT_LFOx_RATE_Dec
807
	movf	INDF0, W
808
	rgoto	CS_MENU_PRINT_Dec
809
 
810
; --------------------------------------------------------------------------
811
CS_MENU_PRINT_LFOx_DEC
812
	call	CS_MENU_PRINT_GetLFOx
813
	rgoto	CS_MENU_PRINT_Dec
814
 
815
; --------------------------------------------------------------------------
816
CS_MENU_PRINT_LFOx_PMDEC8
817
	call	CS_MENU_PRINT_GetLFOx
818
	rgoto	CS_MENU_PRINT_PMDec8
819
 
820
; --------------------------------------------------------------------------
821
CS_MENU_PRINT_LFOx_SNC
822
	;; controlled from trigger matrix (Note On Event)
823
	;; index already in CS_MENU_PARAMETER_IX, add LFO offset
824
	movf	CS_MENU_SELECTED_LFO, W
825
	addwf	CS_MENU_PARAMETER_IX, F
826
	movff	CS_MENU_SELECTED_TRG, TMP5	; store current trigger number
827
	clrf	CS_MENU_SELECTED_TRG; (Note On)
828
	rcall	CS_MENU_PRINT_TRGx_Nx
829
	movff	TMP5, CS_MENU_SELECTED_TRG	; restore old trigger number
830
	return
831
 
832
; --------------------------------------------------------------------------
833
CS_MENU_PRINT_LFOx_SNC_M
834
	rcall	CS_MENU_PRINT_GetLFOx
835
	movlw	SID_I_LFO_MODE_SYNC_M
836
	rgoto	CS_MENU_PRINT_OnOff_INDF0
837
 
838
; --------------------------------------------------------------------------
839
CS_MENU_PRINT_LFOx_ONE
840
	rcall	CS_MENU_PRINT_GetLFOx
841
	movlw	SID_I_LFO_MODE_ONESHOT
842
	rgoto	CS_MENU_PRINT_OnOff_INDF0
843
 
844
; --------------------------------------------------------------------------
845
CS_MENU_PRINT_LFOx_CSN
846
	rcall	CS_MENU_PRINT_GetLFOx
847
	movlw	SID_I_LFO_MODE_CLKSYNC
848
	rgoto	CS_MENU_PRINT_OnOff_INDF0
849
 
850
; --------------------------------------------------------------------------
851
CS_MENU_PRINT_ENVx_DEC
852
	rcall	CS_MENU_PRINT_GetENVx
853
	rgoto	CS_MENU_PRINT_Dec
854
 
855
; --------------------------------------------------------------------------
856
CS_MENU_PRINT_ENVx_PMDEC8
857
	rcall	CS_MENU_PRINT_GetENVx
858
	rgoto	CS_MENU_PRINT_PMDec8
859
 
860
; --------------------------------------------------------------------------
861
CS_MENU_PRINT_ENVx_LPB
862
	rcall	CS_MENU_PRINT_GetENVx
863
	andlw	0x07
864
	;; 	rgoto	CS_MENU_PRINT_ENVx_PrnLoop
865
 
866
CS_MENU_PRINT_ENVx_PrnLoop
867
	movwf	PRODL
868
	TABLE_ADDR CS_MENU_PRINT_ENVx_Loop_Tab
869
	movf	PRODL, W
870
	rgoto	CS_MENU_PRINT_StringFromTable
871
 
872
; --------------------------------------------------------------------------
873
CS_MENU_PRINT_ENVx_LPE
874
	rcall	CS_MENU_PRINT_GetENVx
875
	swapf	INDF0, W
876
	andlw	0x07
877
	rgoto	CS_MENU_PRINT_ENVx_PrnLoop
878
 
879
; --------------------------------------------------------------------------
880
CS_MENU_PRINT_ENVx_CSN
881
	rcall	CS_MENU_PRINT_GetENVx
882
	movlw	SID_I_ENV_MODE_CLKSYNC
883
	rgoto	CS_MENU_PRINT_OnOff_INDF0
884
 
885
; --------------------------------------------------------------------------
228 tk 886
CS_MENU_PRINT_ENVx_CAS
887
	TABLE_ADDR CS_MENU_PRINT_ENVx_CAS_Tab
888
	rcall	CS_MENU_PRINT_GetENVx
889
	swapf	INDF0, W
890
	andlw	0x07
891
	rgoto	CS_MENU_PRINT_StringFromTable
892
 
893
; --------------------------------------------------------------------------
1 tk 894
CS_MENU_PRINT_MODx_SRC
895
	TABLE_ADDR CS_MENU_PRINT_MODx_SRC_Tab
896
	rcall	CS_MENU_PRINT_GetMODx
897
	BRA_IFCLR WREG, 7, ACCESS, CS_MENU_PRINT_MODx_SRC_Norm
898
CS_MENU_PRINT_MODx_SRC_Const
899
	andlw	0x7f
900
	rgoto	CS_MENU_PRINT_Dec
901
 
902
CS_MENU_PRINT_MODx_SRC_Norm
903
	rgoto	CS_MENU_PRINT_StringFromTable
904
 
905
; --------------------------------------------------------------------------
906
CS_MENU_PRINT_MODx_OP
907
	TABLE_ADDR CS_MENU_PRINT_MODx_OP_Tab
908
	rcall	CS_MENU_PRINT_GetMODx
909
	andlw	0x0f
910
	rgoto	CS_MENU_PRINT_StringFromTable
911
 
912
; --------------------------------------------------------------------------
913
CS_MENU_PRINT_MODx_TAR
914
	TABLE_ADDR CS_MENU_PRINT_MODx_TAR_Tab
915
	rcall	CS_MENU_PRINT_GetMODx
916
	rgoto	CS_MENU_PRINT_StringFromTable
917
 
918
; --------------------------------------------------------------------------
919
CS_MENU_PRINT_MODx_INV1
920
	rcall	CS_MENU_PRINT_GetMODx
921
	movlw	6
922
	rgoto	CS_MENU_PRINT_OnOff_INDF0
923
 
924
; --------------------------------------------------------------------------
925
CS_MENU_PRINT_MODx_INV2
926
	rcall	CS_MENU_PRINT_GetMODx
927
	movlw	7
928
	rgoto	CS_MENU_PRINT_OnOff_INDF0
929
 
930
; --------------------------------------------------------------------------
931
CS_MENU_PRINT_MODx_Nx
932
	;; bit number stored in CS_MENU_PARAMETER_IX
933
 
934
	;; get pointer to modulation nodes
935
	call	CS_MENU_FSR0_MOD_TARG_L
936
 
937
	;; determine mask
938
	movf	CS_MENU_PARAMETER_IX, W
939
	call	MIOS_HLP_GetBitORMask
940
	movwf	TMP1
941
 
942
	;; print L/R depending on activated flags
943
	movf	POSTINC0, W
944
	andwf	TMP1, W
945
	movlw	'L'
946
	skpnz
947
	movlw	'-'
948
	rcall	CS_MENU_PRINT_Char
949
 
950
	movlw	'/'
951
	rcall	CS_MENU_PRINT_Char
952
 
953
	movf	POSTDEC0, W
954
	andwf	TMP1, W
955
	movlw	'R'
956
	skpnz
957
	movlw	'-'
521 tk 958
	rcall	CS_MENU_PRINT_Char
959
 
960
	movlw	' '
1 tk 961
	rgoto	CS_MENU_PRINT_Char
962
 
963
; --------------------------------------------------------------------------
964
CS_MENU_PRINT_MODx_PMDEC8
965
	rcall	CS_MENU_PRINT_GetMODx
966
	rgoto	CS_MENU_PRINT_PMDec8
967
 
968
; --------------------------------------------------------------------------
969
CS_MENU_PRINT_TRGx_SRC
970
	TABLE_ADDR CS_MENU_PRINT_TRGx_SRC_Tab
971
#if 0
385 tk 972
	movf	INDF0, W
1 tk 973
	rgoto	CS_MENU_PRINT_StringFromTable
974
#else
975
	;; special variation required for Page Up/Down print function (only 3 characters print)
385 tk 976
	rlf	INDF0, W
1 tk 977
	rlf	WREG, W
978
	andlw	0xfc
979
	TABLE_ADD_W
521 tk 980
	movlw	4
1 tk 981
	goto	MIOS_LCD_PrintPreconfString
982
#endif
983
 
984
; --------------------------------------------------------------------------
985
CS_MENU_PRINT_TRGx_Nx
986
	;; also used by CS_MENU_PRINT_LFOx_SNC
987
	;; don't overwrite TMP5 !!!
988
 
989
	;; bit number stored in CS_MENU_PARAMETER_IX
990
 
991
	;; get pointer to trigger target
992
	call	CS_MENU_FSR0_TRG
993
 
994
	;; print On/Off
995
	movf	CS_MENU_PARAMETER_IX, W
996
	rgoto	CS_MENU_PRINT_OnOff_INDF0
997
 
998
; --------------------------------------------------------------------------
999
CS_MENU_PRINT_CLK_BPM
1000
	call	CS_MENU_FSR0_ENS
1001
	movf	INDF0, W
1002
	rgoto	CS_MENU_PRINT_Dec
1003
 
1004
; --------------------------------------------------------------------------
1005
CS_MENU_PRINT_CLK_SLAVE
1006
	TABLE_ADDR CS_MENU_PRINT_CLK_SLAVE_Tab
1007
	call	CS_MENU_FSR0_ENS
1008
	movlw	0
1009
	btfsc	INDF0, SID_ENS_CTRL1_CLK_SLAVE
521 tk 1010
	movlw	1
1 tk 1011
	btfsc	INDF0, SID_ENS_CTRL1_CLK_AUTO
521 tk 1012
	movlw	2
1 tk 1013
	rgoto	CS_MENU_PRINT_StringFromTable
1014
CS_MENU_PRINT_CLK_SLAVE_Tab
1015
	dw	"Mst."
1016
	dw	"Slv."
1017
	dw	"Auto"
1018
 
1019
; --------------------------------------------------------------------------
1020
CS_MENU_PRINT_KNB
1021
	TABLE_ADDR CS_MENU_PRINT_KNB_Tab
1022
	rcall	CS_MENU_PRINT_GetVAR	; pointer to variable in FSR0
1023
	rgoto	CS_MENU_PRINT_StringFromTable
1024
 
1025
; --------------------------------------------------------------------------
1026
CS_MENU_PRINT_KNB_VALUE
1027
	movf	CS_MENU_PARAMETER_IX, W
1028
	call	SID_KNOB_GetPtr
1029
	movlw	HIGH(SID_EDIT_BUFFER)-HIGH(SID_PATCH_BUFFER)
1030
	addwf	FSR1H, F
1031
	movlw	SID_Ix_Px_VALUE
1032
	movf	PLUSW1, W
1033
	rgoto	CS_MENU_PRINT_Dec
1034
 
1035
; --------------------------------------------------------------------------
1036
CS_MENU_PRINT_KNB_PAR
1037
	call	CS_MENU_FSR0_Knob
1038
	movf	INDF0, W
1039
	rgoto	CS_MENU_PRINT_Dec
1040
 
1041
; --------------------------------------------------------------------------
1042
CS_MENU_PRINT_KNB_MINMAX
1043
	call	CS_MENU_FSR0_Knob
1044
	movf	INDF0, W
1045
	rgoto	CS_MENU_PRINT_Dec
1046
 
1047
; --------------------------------------------------------------------------
1048
CS_MENU_PRINT_EXT_VALUE
1049
	;; convert 16bit -> 12bit
1050
	movff	POSTINC0, PRODL
1051
	movff	POSTDEC0, PRODH
1052
 
1053
	swapf	PRODH, W
1054
	call	MIOS_LCD_PrintHex1
521 tk 1055
	movf	PRODH, W
1056
	call	MIOS_LCD_PrintHex1
1 tk 1057
	swapf	PRODL, W
521 tk 1058
	call	MIOS_LCD_PrintHex1
1059
	movlw	' '
1060
	rgoto	CS_MENU_PRINT_Char
1 tk 1061
 
1062
; --------------------------------------------------------------------------
1063
CS_MENU_PRINT_EXT_SWITCH
1064
	;; change address to custom switch register
1065
	movlw	SID_Ix_CUSTOM_SW
1066
	movwf	FSR0L
1067
	;; flag number in CS_MENU_PARAMETER_IX
1068
	movf	CS_MENU_PARAMETER_IX, W
1069
	rgoto	CS_MENU_PRINT_OnOff_INDF0
1070
 
1071
; --------------------------------------------------------------------------
1072
CS_MENU_PRINT_WTx_PAR
1073
	call	CS_MENU_FSR0_WT
1074
	movf	INDF0, W
1075
	rgoto	CS_MENU_PRINT_Dec
1076
 
1077
; --------------------------------------------------------------------------
1078
CS_MENU_PRINT_WTx_PAR_P1
1079
	call	CS_MENU_FSR0_WT
1080
	movf	INDF0, W
1081
	rgoto	CS_MENU_PRINT_DecPlus1
1082
 
1083
; --------------------------------------------------------------------------
1084
CS_MENU_PRINT_WTx_SID
1085
	call	CS_MENU_FSR0_WT
1086
	;; print L/R depending on activated flags
1087
	movlw	'-'
1088
	btfsc	INDF0, 6
521 tk 1089
	movlw	'L'
1 tk 1090
	rcall	CS_MENU_PRINT_Char
1091
 
1092
	movlw	'/'
1093
	rcall	CS_MENU_PRINT_Char
1094
 
1095
	movlw	'-'
1096
	btfsc	INDF0, 7
521 tk 1097
	movlw	'R'
1098
	rcall	CS_MENU_PRINT_Char
1099
 
1100
	movlw	' '
1 tk 1101
	rgoto	CS_MENU_PRINT_Char
1102
 
1103
; --------------------------------------------------------------------------
1104
CS_MENU_PRINT_WTx_SPD
1105
	call	CS_MENU_FSR0_WT
1106
	movf	INDF0, W
1107
	andlw	0x3f
1108
	rgoto	CS_MENU_PRINT_DecPlus1
1109
 
1110
; --------------------------------------------------------------------------
1111
CS_MENU_PRINT_WTx_B7
1112
	call	CS_MENU_FSR0_WT
1113
	movlw	7
1114
	rgoto	CS_MENU_PRINT_OnOff_INDF0
1115
 
1116
; --------------------------------------------------------------------------
1117
CS_MENU_PRINT_WTx_POS
1118
	call	CS_MENU_FSR0_WT
1119
	movf	INDF0, W
1120
	andlw	0x7f
521 tk 1121
	rcall	CS_MENU_PRINT_WTVal
1122
	movlw	' '		; fill with space
1123
	rgoto	CS_MENU_PRINT_Char
1 tk 1124
 
1125
; --------------------------------------------------------------------------
1126
CS_MENU_PRINT_WTx_LOP
1127
	call	CS_MENU_FSR0_WT
1128
	BRA_IFSET INDF0, 7, ACCESS, CS_MENU_PRINT_WTx_LOP_One
1129
	movf	INDF0, W
1130
	andlw	0x7f
521 tk 1131
	rcall	CS_MENU_PRINT_WTVal
1132
	movlw	' '		; fill with space
1133
	rgoto	CS_MENU_PRINT_Char
1 tk 1134
CS_MENU_PRINT_WTx_LOP_One
521 tk 1135
	rgoto	CS_MENU_PRINT_MMM ; prints "--- "
1 tk 1136
 
1137
; --------------------------------------------------------------------------
1138
CS_MENU_PRINT_WTE_POS
1139
	;; value 0x00-0x1f: print decimal number
1140
	;; value >= 0x80: print "All"
1141
	rcall	CS_MENU_PRINT_GetVAR
1142
	movlw	0x7f
1143
	cpfsgt	CS_MENU_WT_POS, ACCESS
1144
	rgoto CS_MENU_PRINT_WTE_POS_Val
1145
CS_MENU_PRINT_WTE_POS_All
1146
	movlw	'A'
1147
	rcall	CS_MENU_PRINT_Char
1148
	movlw	'l'
1149
	rcall	CS_MENU_PRINT_Char
1150
	movlw	'l'
521 tk 1151
	rcall	CS_MENU_PRINT_Char
1152
	movlw	' '
1 tk 1153
	rgoto	CS_MENU_PRINT_Char
1154
 
1155
CS_MENU_PRINT_WTE_POS_Val
1156
	movf	INDF0, W
521 tk 1157
	rcall	CS_MENU_PRINT_WTVal
1158
	movlw	' '		; fill with space
1159
	rgoto	CS_MENU_PRINT_Char
1 tk 1160
 
1161
; --------------------------------------------------------------------------
1162
CS_MENU_PRINT_WTE_PAR
1163
	call	CS_MENU_FSR0_WTPos		; sets ZERO flag if value outside range
1164
	bnz	CS_MENU_PRINT_WTE_PAR_Ok
1165
CS_MENU_PRINT_WTE_PAR_Inv
1166
	movlw	'.'
1167
	rcall	CS_MENU_PRINT_Char
1168
	movlw	'.'
1169
	rcall	CS_MENU_PRINT_Char
1170
	movlw	'.'
1171
	rcall	CS_MENU_PRINT_Char
1172
	rgoto	CS_MENU_PRINT_WTE_PAR_End
1173
 
1174
CS_MENU_PRINT_WTE_PAR_Ok
1175
	BRA_IFCLR INDF0, 7, ACCESS, CS_MENU_PRINT_WTE_PAR_PM
1176
CS_MENU_PRINT_WTE_PAR_Px
1177
	;; special case: if Assignment in between 0xfc..0xff: print note instead of hex/dec number
1178
 
1179
	;; get WT assignment which corresponds to displayed entry
1180
	movff	SID_EDIT_BUFFER + SID_Ix_ENGINE, WREG
1181
	BRA_IFSET WREG, 1, ACCESS, CS_MENU_PRINT_WTE_PAR_Px_DM
1182
CS_MENU_PRINT_WTE_PAR_Px_LB
1183
	BRA_IFSET WREG, 0, ACCESS, CS_MENU_PRINT_WTE_PAR_Px_B
1184
CS_MENU_PRINT_WTE_PAR_Px_L
1185
	lfsr	FSR1, SID_EDIT_BUFFER + SID_Ix_L_WT1_BASE + SID_Ix_WTx_ASSGN
1186
	movf	CS_MENU_PARAMETER_IX, W
1187
	andlw	0x03
1188
	mullw	SID_Ix_L_WT2_BASE-SID_Ix_L_WT1_BASE
1189
	movf	PRODL, W
1190
	addwf	FSR1L, F
1191
	movf	INDF1, W
1192
	andlw	0xfc
1193
	xorlw	0xfc
1194
	rgoto	CS_MENU_PRINT_WTE_PAR_Px_FOk
1195
CS_MENU_PRINT_WTE_PAR_Px_B
1196
	rgoto	CS_MENU_PRINT_WTE_PAR_Px_L	; not implemented yet
1197
CS_MENU_PRINT_WTE_PAR_Px_DM
1198
	BRA_IFSET WREG, 0, ACCESS, CS_MENU_PRINT_WTE_PAR_Px_M
1199
CS_MENU_PRINT_WTE_PAR_Px_D
1200
	rgoto	CS_MENU_PRINT_WTE_PAR_Px_L	; not implemented yet
1201
CS_MENU_PRINT_WTE_PAR_Px_M
1202
	lfsr	FSR1, SID_EDIT_BUFFER + SID_Ix_M_I1_BASE + SID_Ix_M_Vx_WT_ASSGN
1203
	movf	CS_MENU_PARAMETER_IX, W
1204
	andlw	0x07
1205
	mullw	SID_Ix_M_I2_BASE - SID_Ix_M_I1_BASE
1206
	movf	PRODL, W
1207
	addwf	FSR1L, F
1208
	movf	PRODH, W
1209
	addwfc	FSR1H, F
1210
	movf	INDF1, W
1211
	andlw	0xf8
1212
	xorlw	0xf8
1213
	;; 	rgoto	CS_MENU_PRINT_WTE_PAR_Px_FOk
1214
 
1215
CS_MENU_PRINT_WTE_PAR_Px_FOk
1216
 
1217
	bnz	CS_MENU_PRINT_WTE_PAR_Px_Hex
1218
CS_MENU_PRINT_WTE_PAR_Px_Note
1219
	;; if INDF0 >= 0xfc, print Ky1...Ky4 (for arpeggiator)
1220
	movf	INDF0, W
1221
	andlw	0xfc
1222
	xorlw	0xfc
1223
	bnz	CS_MENU_PRINT_WTE_PAR_Px_NoArp
1224
CS_MENU_PRINT_WTE_PAR_Px_Arp
1225
	movlw	'K'
1226
	rcall	CS_MENU_PRINT_Char
1227
	movlw	'y'
1228
	rcall	CS_MENU_PRINT_Char
1229
	movf	INDF0, W
1230
	andlw	0x03
1231
	addlw	1
1232
	call	MIOS_LCD_PrintBCD1
1233
	rgoto	CS_MENU_PRINT_WTE_PAR_End
1234
 
1235
CS_MENU_PRINT_WTE_PAR_Px_NoArp
1236
	;; if INDF0 == 0, print "---" (for no note)
1237
	movf	INDF0, W
1238
	andlw	0x7f
1239
	bz	CS_MENU_PRINT_WTE_PAR_Px_NoN
1240
	;; if INDF0 == 1, print "+++" (for hold note)
1241
	addlw	-1
1242
	bz	CS_MENU_PRINT_WTE_PAR_Px_Hold
1243
	;; else print note name
1244
CS_MENU_PRINT_WTE_PAR_Px_NoHld
1245
	addlw	+1
1246
	call	SID_NOTE_Print
1247
	rgoto	CS_MENU_PRINT_WTE_PAR_End
1248
 
1249
CS_MENU_PRINT_WTE_PAR_Px_NoN
1250
	movlw	'-'
1251
	rgoto	CS_MENU_PRINT_WTE_PAR_Px_NoNC
1252
CS_MENU_PRINT_WTE_PAR_Px_Hold
1253
	movlw	'+'
1254
CS_MENU_PRINT_WTE_PAR_Px_NoNC
1255
	movwf	TABLAT
1256
	rcall	CS_MENU_PRINT_Char
1257
	movf	TABLAT, W
1258
	rcall	CS_MENU_PRINT_Char
1259
	movf	TABLAT, W
1260
	rcall	CS_MENU_PRINT_Char
1261
	rgoto	CS_MENU_PRINT_WTE_PAR_End
1262
 
1263
CS_MENU_PRINT_WTE_PAR_Px_Hex
1264
	movf	INDF0, W
1265
	andlw	0x7f
1266
	rcall	CS_MENU_PRINT_WTVal
1267
	rgoto	CS_MENU_PRINT_WTE_PAR_End
1268
 
1269
CS_MENU_PRINT_WTE_PAR_PM
1270
	movf	INDF0, W
1271
	rcall	CS_MENU_PRINT_PMWTVal
1272
	;; 	rgoto	CS_MENU_PRINT_WTE_PAR_End
1273
 
1274
CS_MENU_PRINT_WTE_PAR_End
1275
	;; if position matches with loop point, add '<' marker
1276
	movff	SID_EDIT_BUFFER + SID_Ix_ENGINE, WREG
1277
	BRA_IFSET WREG, 1, ACCESS, CS_MENU_PRINT_WTE_PAR_LC_DM
1278
CS_MENU_PRINT_WTE_PAR_LC_LB
1279
	BRA_IFSET WREG, 0, ACCESS, CS_MENU_PRINT_WTE_PAR_LC_B
1280
CS_MENU_PRINT_WTE_PAR_LC_L
1281
	lfsr	FSR1, SID_EDIT_BUFFER + SID_Ix_L_WT1_BASE + SID_Ix_WTx_LOOP
1282
	movf	CS_MENU_PARAMETER_IX, W
1283
	andlw	0x03
1284
	mullw	SID_Ix_L_WT2_BASE-SID_Ix_L_WT1_BASE
1285
	rgoto	CS_MENU_PRINT_WTE_PAR_LC_FOk
1286
CS_MENU_PRINT_WTE_PAR_LC_B
1287
	rgoto	CS_MENU_PRINT_WTE_PAR_LC_L	; not implemented yet
1288
CS_MENU_PRINT_WTE_PAR_LC_DM
1289
	BRA_IFSET WREG, 0, ACCESS, CS_MENU_PRINT_WTE_PAR_LC_M
1290
CS_MENU_PRINT_WTE_PAR_LC_D
1291
	rgoto	CS_MENU_PRINT_WTE_PAR_LC_L	; not implemented yet
1292
CS_MENU_PRINT_WTE_PAR_LC_M
1293
	lfsr	FSR1, SID_EDIT_BUFFER + SID_Ix_M_I1_BASE + SID_Ix_WTx_LOOP
1294
	movf	CS_MENU_PARAMETER_IX, W
1295
	andlw	0x07
1296
	mullw	SID_Ix_M_I2_BASE - SID_Ix_M_I1_BASE
1297
	;; 	rgoto	CS_MENU_PRINT_WTE_PAR_LC_FOk
1298
 
1299
CS_MENU_PRINT_WTE_PAR_LC_FOk
1300
	movf	PRODL, W
1301
	addwf	FSR1L, F
1302
	movf	PRODH, W
1303
	addwfc	FSR1H, F
1304
 
1305
	;; skip if oneshot flag set
1306
	btfsc	INDF1, 7
1307
	return
1308
	movf	INDF1, W
1309
	andlw	0x7f
1310
	movwf	PRODL
1311
 
1312
	movf	FSR0L, W
1313
	addlw	0-LOW(SID_Ix_WAVETABLE)
1314
	xorwf	PRODL, W
1315
	movlw	'<'
521 tk 1316
	skpz
1317
	movlw	' '
1 tk 1318
	rcall	CS_MENU_PRINT_Char
1319
	return
1320
 
1321
 
1322
; --------------------------------------------------------------------------
1323
CS_MENU_PRINT_WT_VAL
1324
	movlw	'H'
1325
	btfsc	CS_STAT2, CS_STAT2_WT_DEC_VIEW
521 tk 1326
	movlw	'D'
1 tk 1327
	rcall	CS_MENU_PRINT_Char
1328
	movlw	'e'
1329
	rcall	CS_MENU_PRINT_Char
1330
	movlw	'x'
1331
	btfsc	CS_STAT2, CS_STAT2_WT_DEC_VIEW
521 tk 1332
	movlw	'c'
1333
	rcall	CS_MENU_PRINT_Char
1334
	movlw	' '
1 tk 1335
	rgoto	CS_MENU_PRINT_Char
1336
 
1337
; --------------------------------------------------------------------------
1338
CS_MENU_PRINT_WT_GO
1339
	movlw	'G'
1340
	rcall	CS_MENU_PRINT_Char
1341
	movlw	'o'
1342
	rcall	CS_MENU_PRINT_Char
1343
	movlw	'!'
521 tk 1344
	rcall	CS_MENU_PRINT_Char
1345
	movlw	' '
1 tk 1346
	rgoto	CS_MENU_PRINT_Char
1347
 
1348
; --------------------------------------------------------------------------
1349
CS_MENU_PRINT_SEQ_POS
1350
	;; value 0x00-0x0f: print decimal number+1
1351
	;; value >= 0x10: print "All"
1352
	rcall	CS_MENU_PRINT_GetVAR
1353
	movlw	0x0f
1354
	cpfsgt	CS_MENU_WT_POS, ACCESS
1355
	rgoto CS_MENU_PRINT_SEQ_POS_Val
1356
CS_MENU_PRINT_SEQ_POS_All
1357
	rgoto	CS_MENU_PRINT_WTE_POS_All
1358
 
1359
CS_MENU_PRINT_SEQ_POS_Val
1360
	movf	INDF0, W
1361
	rgoto	CS_MENU_PRINT_DecPlus1
1362
 
1363
; --------------------------------------------------------------------------
1364
CS_MENU_PRINT_SEQ_NUM
1365
	call	CS_MENU_FSR0_WT
1366
	movf	INDF0, W
1367
	andlw	0xf8
1368
	bnz	CS_MENU_PRINT_SEQ_NUM_Dis
1369
CS_MENU_PRINT_SEQ_NUM_Valid
1370
	movf	INDF0, W
1371
	rgoto	CS_MENU_PRINT_DecPlus1
1372
CS_MENU_PRINT_SEQ_NUM_Dis
1373
	movlw	' '
1374
	rcall	CS_MENU_PRINT_Char
1375
	movlw	' '
1376
	rcall	CS_MENU_PRINT_Char
1377
	movlw	'-'
521 tk 1378
	rcall	CS_MENU_PRINT_Char
1379
	movlw	' '
1 tk 1380
	rgoto	CS_MENU_PRINT_Char
1381
 
1382
; --------------------------------------------------------------------------
1383
CS_MENU_PRINT_SEQ_S16
1384
	call	CS_MENU_FSR0_WT
1385
	movlw	SID_I_V_SEQ_SYNC16
1386
	rgoto	CS_MENU_PRINT_OnOff_INDF0
1387
 
1388
; --------------------------------------------------------------------------
1389
CS_MENU_PRINT_D_SEQ_ON
1390
	call	CS_MENU_FSR0_WT
1391
	movlw	SID_I_V_SEQ_ON
1392
	rgoto	CS_MENU_PRINT_OnOff_INDF0
1393
 
1394
; --------------------------------------------------------------------------
1395
CS_MENU_PRINT_B_SEQ_VAL
1396
	;; determine pointer to parameter depending on CS_MENU_WT_SEQ/CS_MENU_WT_POS
1397
	call	CS_MENU_FSR0_WTPos
1398
 
1399
	;; branch depending on parameter part:
1400
	;; 0 = note, 1 = Octave, 2 = Slide/Gate, 3 = Accent, 4 = Parameter
1401
	movf	CS_MENU_PARAMETER_IX, W
1402
	bz	CS_MENU_PRINT_B_SEQ_VAL_Note
1403
	addlw	-1
1404
	bz	CS_MENU_PRINT_B_SEQ_VAL_Oct
1405
	addlw	-1
1406
	bz	CS_MENU_PRINT_B_SEQ_VAL_S_G
1407
	addlw	-1
1408
	bz	CS_MENU_PRINT_B_SEQ_VAL_Acc
1409
	rgoto	CS_MENU_PRINT_B_SEQ_VAL_Par
1410
 
1411
CS_MENU_PRINT_B_SEQ_VAL_Note
1412
	movlw	' '
1413
	rcall	CS_MENU_PRINT_Char
1414
	movf	INDF0, W
1415
	andlw	0x0f
1416
	TABLE_ADDR_MUL_W CS_MENU_PRINT_SEQ_NOTE_Tab, 2
1417
	movlw	2
521 tk 1418
	call	MIOS_LCD_PrintPreconfString
1419
	movlw	' '
1420
	rgoto	CS_MENU_PRINT_Char
1 tk 1421
 
1422
CS_MENU_PRINT_B_SEQ_VAL_Oct
1423
	TABLE_ADDR CS_MENU_PRINT_B_SEQ_VAL_Oct_Tab
1424
	swapf	INDF0, W
521 tk 1425
	andlw	0x04
1 tk 1426
	rgoto	CS_MENU_PRINT_StringFromTable
1427
CS_MENU_PRINT_B_SEQ_VAL_Oct_Tab
1428
	dw	" -  "	; mapped to 0
1429
	dw	" Up "	; mapped to 1
1430
	dw	"Dwn "	; mapped to 3
1431
	dw	"Up2 "	; mapped to 2
1432
 
1433
CS_MENU_PRINT_B_SEQ_VAL_S_G
1434
	movlw	'-'
1435
	btfsc	INDF0, 6
1436
	movlw '*'
1437
	rcall	CS_MENU_PRINT_Char
1438
 
1439
	movlw	' '
1440
	rcall	CS_MENU_PRINT_Char
1441
 
1442
	movlw	'-'
1443
	btfsc	INDF0, 7
521 tk 1444
	movlw	'*'
1445
	rcall	CS_MENU_PRINT_Char
1446
	movlw	' '
1 tk 1447
	rgoto	CS_MENU_PRINT_Char
1448
 
1449
CS_MENU_PRINT_B_SEQ_VAL_Acc
1450
	movlw	0x80		; accent flag is located in upper bank
1451
	addwf	FSR0L, F
1452
	movlw	7
1453
	rgoto	CS_MENU_PRINT_OnOff_INDF0
1454
 
1455
CS_MENU_PRINT_B_SEQ_VAL_Par
1456
	movlw	0x80		; 7bit parameter is located in upper bank
1457
	addwf	FSR0L, F
1458
	movf	INDF0, W
1459
	andlw	0x7f
1460
	rgoto	CS_MENU_PRINT_Dec
1461
 
1462
; --------------------------------------------------------------------------
1463
CS_MENU_PRINT_D_MODEL
1464
	rcall	CS_MENU_PRINT_GetVx
1465
	movf	INDF0, W
1466
	rgoto	CS_MENU_PRINT_DModel
1467
 
1468
; --------------------------------------------------------------------------
1469
CS_MENU_PRINT_RND_GEN
1470
	movlw	'G'
1471
	rcall	CS_MENU_PRINT_Char
1472
	movlw	'e'
1473
	rcall	CS_MENU_PRINT_Char
1474
	movlw	'n'
521 tk 1475
	rcall	CS_MENU_PRINT_Char
1476
	movlw	' '
1 tk 1477
	rgoto	CS_MENU_PRINT_Char
1478
 
1479
; --------------------------------------------------------------------------
1480
CS_MENU_PRINT_SAVE_BNK
1481
	movff	CS_MENU_SAVE_BANK, SID_BANK
1482
	movff	CS_MENU_SAVE_PATCH, SID_PATCH
1483
	call	SID_PBANK_CheckPatchValid
1484
	bz	CS_MENU_PRINT_SAVE_BAK_Ok
1485
	movf	SID_BANK, W	; always allow to store in bank #0
1486
	bz	CS_MENU_PRINT_SAVE_BAK_Ok
1487
 
1488
CS_MENU_PRINT_SAVE_BNK_Inv
1489
	movf	CS_MENU_SAVE_BANK, W
1490
	addlw	'A'
1491
	rcall	CS_MENU_PRINT_Char
521 tk 1492
	movlw	'-'
1 tk 1493
	rcall	CS_MENU_PRINT_Char
1494
	movlw	'-'
1495
	rcall	CS_MENU_PRINT_Char
1496
	movlw	'-'
521 tk 1497
	rcall	CS_MENU_PRINT_Char
1498
	movlw	' '
1 tk 1499
	rgoto	CS_MENU_PRINT_Char
1500
 
1501
CS_MENU_PRINT_SAVE_BAK_Ok
1502
	movff	CS_MENU_SAVE_BANK, PRODL
1503
	movff	CS_MENU_SAVE_PATCH, PRODH
521 tk 1504
	call	SID_LCD_PrintPatchNumber
1505
	movlw	' '
1506
	rgoto	CS_MENU_PRINT_Char
1 tk 1507
 
1508
; --------------------------------------------------------------------------
1509
CS_MENU_PRINT_SAVE_PAT
1510
	return			; (already print)
1511
 
1512
; --------------------------------------------------------------------------
1513
CS_MENU_PRINT_SAVE_NAME
1514
	;; (dirty but required for save menu) set cursor
1515
	movlw	0x45
1516
	call	MIOS_LCD_CursorSet
1517
 
1518
	movff	CS_MENU_SAVE_PATCH, SID_PATCH
1519
	movff	CS_MENU_SAVE_BANK, SID_BANK
1520
	goto	SID_LCD_PrintPatchEE
1521
 
1522
; --------------------------------------------------------------------------
1523
CS_MENU_PRINT_SAVE_ENS
790 tk 1524
	movf	CS_MENU_SAVE_ENS, W	; always allow to store in bank #0
1525
	bz	CS_MENU_PRINT_SAVE_ENS_Ok
1 tk 1526
	call	SID_EBANK_CheckValid
1527
	bz	CS_MENU_PRINT_SAVE_ENS_Ok
1528
 
1529
CS_MENU_PRINT_SAVE_ENS_Inv
1530
	movlw	'E'
1531
	rcall	CS_MENU_PRINT_Char
362 tk 1532
	rgoto	CS_MENU_PRINT_MMM ; prints "---"
1 tk 1533
 
1534
CS_MENU_PRINT_SAVE_ENS_Ok
1535
	movff	CS_MENU_SAVE_ENS, PRODL
1536
	goto	SID_LCD_PrintEnsembleNumberPRODL
1537
 
1538
 
1539
; --------------------------------------------------------------------------
1540
CS_MENU_PRINT_ENSxIx_DECP1
1541
	rcall	CS_MENU_PRINT_GetEnsIx
1542
	rgoto	CS_MENU_PRINT_DecPlus1
1543
 
1544
; --------------------------------------------------------------------------
1545
CS_MENU_PRINT_ENSxIx_CHN
1546
	rcall	CS_MENU_PRINT_GetEnsIx
1547
	andlw	0xf0
1548
	bnz	CS_MENU_PRINT_ENSxIx_CHN_Dis
1549
	movf	INDF0, W
1550
	rgoto	CS_MENU_PRINT_DecPlus1
1551
CS_MENU_PRINT_ENSxIx_CHN_Dis
1552
	movlw	' '
1553
	rcall	CS_MENU_PRINT_Char
1554
	movlw	'-'
1555
	rcall	CS_MENU_PRINT_Char
1556
	movlw	'-'
521 tk 1557
	rcall	CS_MENU_PRINT_Char
1558
	movlw	' '
1 tk 1559
	rgoto	CS_MENU_PRINT_Char
1560
 
1561
; --------------------------------------------------------------------------
1562
CS_MENU_PRINT_ENSxIx_NOTE
1563
	rcall	CS_MENU_PRINT_GetEnsIx
521 tk 1564
	call	SID_NOTE_Print
1565
	movlw	' '
1566
	rgoto	CS_MENU_PRINT_Char
1 tk 1567
 
1568
; --------------------------------------------------------------------------
1569
CS_MENU_PRINT_ENSxIx_PMDEC7
1570
	rcall	CS_MENU_PRINT_GetEnsIx
1571
	rgoto	CS_MENU_PRINT_PMDec7
1572
 
1573
; --------------------------------------------------------------------------
1574
CS_MENU_PRINT_ENSx_X2A
1575
	call	CS_MENU_FSR0_ENS_CTRL2
1576
	movf	CS_MENU_PARAMETER_IX, W		; contains x2A flag
1577
	rgoto	CS_MENU_PRINT_OnOff_INDF0
1578
 
1579
; --------------------------------------------------------------------------
1580
CS_MENU_PRINT_ENSx_RESERVED
1581
	return
1582
 
1583
; --------------------------------------------------------------------------
1584
CS_MENU_PRINT_ENSx_MONO
1585
	call	CS_MENU_FSR0_ENS
1586
	movlw	SID_ENS_CTRL1_MONO
1587
	rgoto	CS_MENU_PRINT_OnOff_INDF0
1588
 
1589
; --------------------------------------------------------------------------
340 tk 1590
CS_MENU_PRINT_ENSx_FILLOG
1591
	call	CS_MENU_FSR0_ENS
1592
	movlw	SID_ENS_CTRL1_FIL_LOG
1593
	rgoto	CS_MENU_PRINT_OnOff_INDF0
1594
 
1595
; --------------------------------------------------------------------------
1596
CS_MENU_PRINT_ENSx_DOR
1597
	call	CS_MENU_FSR0_ENS
1598
	movlw	SID_ENS_CTRL1_DOR
1599
	rgoto	CS_MENU_PRINT_OnOff_INDF0
1600
 
1601
; --------------------------------------------------------------------------
1 tk 1602
CS_MENU_PRINT_ENSx_SPV
1603
	call	CS_MENU_FSR0_ENS
1604
	movf	INDF0, W
1605
	andlw	0x07
1606
	bz	CS_MENU_PRINT_ENSx_SPV_Zero
653 tk 1607
	;; don't touch value if master SID not selected
1608
	movf	CS_MENU_SID, W
1 tk 1609
	movlw	' '
653 tk 1610
	skpz
1611
	movlw	'('		; (to notify, that value not selectable from slave)
521 tk 1612
	rcall	CS_MENU_PRINT_Char
653 tk 1613
 
1614
	movf	INDF0, W
1615
	andlw	0x07
1616
	call	MIOS_LCD_PrintBCD1
1617
	movf	CS_MENU_SID, W
521 tk 1618
	movlw	' '
653 tk 1619
	skpz
1620
	movlw	')'		; (to notify, that value not selectable from slave)
1621
	rcall	CS_MENU_PRINT_Char
1622
	movlw	' '
1 tk 1623
	rgoto	CS_MENU_PRINT_Char
1624
 
1625
CS_MENU_PRINT_ENSx_SPV_Zero
1626
	movlw	'o'
1627
	rcall	CS_MENU_PRINT_Char
1628
	movlw	'f'
1629
	rcall	CS_MENU_PRINT_Char
1630
	movlw	'f'
521 tk 1631
	rcall	CS_MENU_PRINT_Char
1632
	movlw	' '
1 tk 1633
	rgoto	CS_MENU_PRINT_Char
1634
 
1635
; --------------------------------------------------------------------------
1636
CS_MENU_PRINT_ENSx_EXTINV
1637
	call	CS_MENU_FSR0_ENS
1638
	movf	FSR0L, W	; (CS_MENU_PARAMETER_IX and FSR0L contain offset to bit instead of address)
1639
	andlw	0xf0
1640
	addlw	SID_ENSx_AOUT_INVERTED
1641
	movwf	FSR0L
1642
	movf	CS_MENU_PARAMETER_IX, W
1643
	rgoto	CS_MENU_PRINT_OnOff_INDF0
1644
 
1645
 
1646
; ==========================================================================
1647
; ==========================================================================
1648
;  Help Functions
1649
; ==========================================================================
1650
; ==========================================================================
1651
 
1652
; --------------------------------------------------------------------------
1653
;; get variable (value in WREG, pointer in FSR0)
1654
CS_MENU_PRINT_GetVAR
1655
	clrf	FSR0H
1656
	movf	INDF0, W
1657
	return
1658
 
1659
; --------------------------------------------------------------------------
1660
;; get ENSx_Ix variable (value in WREG, pointer in FSR0)
1661
CS_MENU_PRINT_GetEnsIx
1662
	call	CS_MENU_FSR0_ENS_Ix
1663
	movf	INDF0, W
1664
	return
1665
 
1666
; --------------------------------------------------------------------------
1667
;; get Vx variable (value in WREG, pointer in FSR0)
1668
CS_MENU_PRINT_GetVx
1669
	call	CS_MENU_FSR0_Voice
1670
	movf	INDF0, W
1671
	return
1672
 
1673
; --------------------------------------------------------------------------
1674
;; get LFOx variable (value in WREG, pointer in FSR0)
1675
CS_MENU_PRINT_GetLFOx
1676
	call	CS_MENU_FSR0_LFO
1677
	movf	INDF0, W
1678
	return
1679
 
1680
; --------------------------------------------------------------------------
1681
;; get ENVx variable (value in WREG, pointer in FSR0)
1682
CS_MENU_PRINT_GetENVx
1683
	call	CS_MENU_FSR0_ENV
1684
	movf	INDF0, W
1685
	return
1686
 
1687
; --------------------------------------------------------------------------
1688
;; get MODx variable (value in WREG, pointer in FSR0)
1689
CS_MENU_PRINT_GetMODx
1690
	call	CS_MENU_FSR0_MOD
1691
	movf	INDF0, W
1692
	return
1693
 
1694
; --------------------------------------------------------------------------
1695
;; print character
1696
CS_MENU_PRINT_Char
1697
	goto	MIOS_LCD_PrintChar
1698
 
1699
; --------------------------------------------------------------------------
1700
;; print hex value 00..FF
1701
CS_MENU_PRINT_Hex
1702
	movwf	TMP1
1703
	movlw	' '		; fill with space
1704
	rcall	CS_MENU_PRINT_Char
1705
	movf	TMP1, W
521 tk 1706
	call	MIOS_LCD_PrintHex2
1707
	movlw	' '		; fill with space
1708
	rgoto	CS_MENU_PRINT_Char
1 tk 1709
 
1710
; --------------------------------------------------------------------------
1711
;; print hex value -0x40..0x3f
1712
CS_MENU_PRINT_PMHex
1713
	movwf	TMP1
1714
	movlw	'+'		; "+" or "-"?
1715
	btfss	TMP1, 6; (if value <= 0x3f (6th bit cleared), print "-"
1716
	movlw '-'
1717
	rcall	CS_MENU_PRINT_Char
1718
 
1719
	movf	TMP1, W		; calc: 0x40-value
1720
	andlw	0x7f
1721
	sublw	0x40
1722
	btfsc	WREG, 7			; negate value if negative to get absolute value
1723
	negf	WREG, ACCESS
521 tk 1724
	call	MIOS_LCD_PrintHex2	; and print it
1725
	movlw	' '		; fill with space
1726
	rgoto	CS_MENU_PRINT_Char
1 tk 1727
 
1728
; --------------------------------------------------------------------------
521 tk 1729
;; print 12bit hex value 0x000..0xfff
1730
;; expecting pointer to value in FSR0
1731
CS_MENU_PRINT_Hex12
1732
	movf	PREINC0, W
1733
	call	MIOS_LCD_PrintHex1
1734
	movf	POSTDEC0, W
1735
	movf	INDF0, W
1736
	call	MIOS_LCD_PrintHex2
1737
	movlw	' '
1738
	rgoto	CS_MENU_PRINT_Char
1739
 
1740
; --------------------------------------------------------------------------
1 tk 1741
;; print dec value 1..128
1742
CS_MENU_PRINT_DecPlus1
1743
	addlw	1
1744
CS_MENU_PRINT_Dec
1745
;; print dec value 0..127
521 tk 1746
	call	MIOS_LCD_PrintBCD3
1747
	movlw	' '		; fill with space
1748
	rgoto	CS_MENU_PRINT_Char
1 tk 1749
 
1750
; --------------------------------------------------------------------------
1751
;; print dec value patted with 0
1752
CS_MENU_PRINT_Dec000
1753
	clrf	MIOS_PARAMETER1
1754
	call	MIOS_HLP_Dec2BCD
1755
	movf	MIOS_PARAMETER2, W
1756
	call	MIOS_LCD_PrintHex1
1757
	movf	MIOS_PARAMETER1, W
521 tk 1758
	call	MIOS_LCD_PrintHex2
1759
	movlw	' '		; fill with space
1760
	rgoto	CS_MENU_PRINT_Char
1 tk 1761
 
1762
; --------------------------------------------------------------------------
1763
;; print dec value -64..63
1764
CS_MENU_PRINT_PMDec7
1765
	movwf	TMP1
1766
	movlw	' '		; space or "-"?
1767
	btfss	TMP1, 6; (if value <= 0x3f (6th bit cleared), print "-"
1768
	movlw '-'
1769
	rcall	CS_MENU_PRINT_Char
1770
 
1771
CS_MENU_PRINT_PMDec7_WO_Sign
1772
	movf	TMP1, W		; calc: 0x40-value
1773
	sublw	0x40
1774
	btfsc	WREG, 7			; negate value if negative to get absolute value
1775
	negf	WREG, ACCESS
521 tk 1776
	call	MIOS_LCD_PrintBCD2	; and print it
1777
	movlw	' '		; fill with space
1778
	rgoto	CS_MENU_PRINT_Char
1 tk 1779
 
1780
; --------------------------------------------------------------------------
1781
;; print dec value -128..127
1782
CS_MENU_PRINT_PMDec8
1783
	BRA_IFCLR WREG, 7, ACCESS, CS_MENU_PRINT_PMDec8_Neg
1784
CS_MENU_PRINT_PMDec8_Pos
1785
	;; positive value: always 3 characters
1786
	andlw	0x7f
521 tk 1787
	call	MIOS_LCD_PrintBCD3
1788
	movlw	' '		; fill with space
1789
	rgoto	CS_MENU_PRINT_Char
1 tk 1790
 
1791
CS_MENU_PRINT_PMDec8_Neg
1792
	;; negative value: if <= -100, use special character for "-1"
1793
	sublw	0x80
1794
	movwf	TMP1
1795
	addlw	-100
1796
	bc	CS_MENU_PRINT_PMDec8_Neg_3
1797
CS_MENU_PRINT_PMDec8_Neg_2
1798
	movlw	'-'
1799
	rcall	CS_MENU_PRINT_Char
1800
	movf	TMP1, W
521 tk 1801
	call	MIOS_LCD_PrintBCD2
1802
	movlw	' '		; fill with space
1803
	rgoto	CS_MENU_PRINT_Char
1804
 
1 tk 1805
CS_MENU_PRINT_PMDec8_Neg_3
1806
	movlw	0x06		; "-1" in one character
1807
	rcall	CS_MENU_PRINT_Char
1808
	movf	TMP1, W
1809
	addlw	-100
1810
#if 0
521 tk 1811
	call	MIOS_LCD_PrintBCD2
1 tk 1812
#else
1813
	clrf	MIOS_PARAMETER1
1814
	call	MIOS_HLP_Dec2BCD
521 tk 1815
	call	MIOS_LCD_PrintHex2
1 tk 1816
#endif
521 tk 1817
	movlw	' '		; fill with space
1818
	rgoto	CS_MENU_PRINT_Char
1 tk 1819
 
1820
 
1821
; --------------------------------------------------------------------------
1822
;; bit which should be selected in WREG, byte in MIOS_PARAMETER1
1823
CS_MENU_PRINT_OnOff_INDF0
1824
	movff	INDF0, MIOS_PARAMETER1
1825
CS_MENU_PRINT_OnOff
1826
	call	MIOS_HLP_GetBitORMask
1827
	andwf	MIOS_PARAMETER1, W
1828
	bnz 	CS_MENU_PRINT_OnOff1
1829
CS_MENU_PRINT_OnOff0
1830
	movlw	' '
1831
	rcall	CS_MENU_PRINT_Char
1832
	movlw	'o'
521 tk 1833
	rgoto	CS_MENU_PRINT_OnOff_Cont
1 tk 1834
CS_MENU_PRINT_OnOff1
1835
	movlw	' '
1836
	rcall	CS_MENU_PRINT_Char
1837
	movlw	'*'
521 tk 1838
 
1839
CS_MENU_PRINT_OnOff_Cont
1 tk 1840
	rcall	CS_MENU_PRINT_Char
1841
	movlw	' '
521 tk 1842
	rcall	CS_MENU_PRINT_Char
1843
	movlw	' '
1 tk 1844
	rgoto	CS_MENU_PRINT_Char
1845
 
1846
 
1847
; --------------------------------------------------------------------------
1848
;; print string from table, offset in WREG
1849
CS_MENU_PRINT_StringFromTable
1850
	rlf	WREG, F
1851
	rlf	WREG, W
1852
	andlw	0xfc
1853
	TABLE_ADD_W
1854
	movlw	0x04
1855
	goto	MIOS_LCD_PrintPreconfString
1856
 
1857
; --------------------------------------------------------------------------
362 tk 1858
;; print "---"
1859
CS_MENU_PRINT_MMM
1860
	movlw	'-'
1861
	rcall	CS_MENU_PRINT_Char
1862
	movlw	'-'
1863
	rcall	CS_MENU_PRINT_Char
1864
	movlw	'-'
521 tk 1865
	rcall	CS_MENU_PRINT_Char
1866
	movlw	' '		; fill with space
362 tk 1867
	rgoto	CS_MENU_PRINT_Char
1868
 
1869
 
1870
; --------------------------------------------------------------------------
1 tk 1871
;; print 123 depending on TMP[2..0]
1872
CS_MENU_PRINT_123
1873
	movwf	TMP1
1874
	movlw	'-'
1875
	btfsc	TMP1, 0
521 tk 1876
	movlw	'1'
1 tk 1877
	rcall	CS_MENU_PRINT_Char
1878
	movlw	'-'
1879
	btfsc	TMP1, 1
521 tk 1880
	movlw	'2'
1 tk 1881
	rcall	CS_MENU_PRINT_Char
1882
	movlw	'-'
1883
	btfsc	TMP1, 2
521 tk 1884
	movlw	'3'
1885
	rcall	CS_MENU_PRINT_Char
1886
	movlw	' '		; fill with space
1 tk 1887
	rgoto	CS_MENU_PRINT_Char
1888
 
1889
; --------------------------------------------------------------------------
1890
;; prints the name of a drum model
1891
CS_MENU_PRINT_DModel
1892
	TABLE_ADDR_MUL_W SID_DMODEL_TABLE, 2
1893
	tblrd*+
1894
	movff	TABLAT, PRODL
1895
	tblrd*+
1896
	movff	TABLAT, TBLPTRH
1897
	movff	PRODL, TBLPTRL
1898
	movlw	0x04
1899
	goto	MIOS_LCD_PrintPreconfString
1900
 
1901
 
1902
; --------------------------------------------------------------------------
1903
;; print the 16 selected sequencer steps (called from cs_menu.inc,
1904
CS_MENU_PRINT_SeqSteps
1905
	;; pointer to 16bit entry -> FSR0
1906
	call	CS_MENU_FSR0_WTPos
1907
	;; print 16 steps
1908
	movff	POSTINC0, TMP1	; gate shift register (Step 1-8)
1909
	movff	POSTINC0, TMP3	; accent shift register (Step 1-8)
1910
	movff	POSTINC0, TMP2	; gate shift register (Step 9-16)
1911
	movff	POSTINC0, TMP4	; accent shift register (Step 9-16)
1912
	movlw	16
1913
	movwf	PRODL		; counter
1914
CS_MENU_PRINT_SeqSteps_Loop
1915
	;; coding:
1916
	;; Gate  Accent  Result
1917
	;;    0       0  Don't play note
1918
	;;    1       0  Play Note w/o accent
1919
	;;    0       1  Play Note w/ accent
1920
	;;    1       1  Play Secondary Note
1921
 
1922
	BRA_IFSET TMP1, 0, ACCESS, CS_MENU_PRINT_SeqSteps_Loop_G1
1923
CS_MENU_PRINT_SeqSteps_Loop_G0
1924
	BRA_IFSET TMP3, 0, ACCESS, CS_MENU_PRINT_SeqSteps_Loop_G0A1
1925
CS_MENU_PRINT_SeqSteps_Loop_G0A0
1926
	movlw	0xa5	; (dot)
1927
	rgoto	CS_MENU_PRINT_SeqSteps_Loop_Cont
1928
CS_MENU_PRINT_SeqSteps_Loop_G0A1
1929
	movlw	'A'
1930
	rgoto	CS_MENU_PRINT_SeqSteps_Loop_Cont
1931
 
1932
CS_MENU_PRINT_SeqSteps_Loop_G1
1933
	BRA_IFSET TMP3, 0, ACCESS, CS_MENU_PRINT_SeqSteps_Loop_G1A1
1934
CS_MENU_PRINT_SeqSteps_Loop_G1A0
1935
	movlw	'*'
1936
	rgoto	CS_MENU_PRINT_SeqSteps_Loop_Cont
1937
CS_MENU_PRINT_SeqSteps_Loop_G1A1
1938
	movlw	'S'
1939
	;; 	rgoto	CS_MENU_PRINT_SeqSteps_Loop_Cont
1940
 
1941
CS_MENU_PRINT_SeqSteps_Loop_Cont
1942
	rcall	CS_MENU_PRINT_Char
1943
	rrf	TMP2, F
1944
	rrf	TMP1, F
1945
	rrf	TMP4, F
1946
	rrf	TMP3, F
1947
	decfsz	PRODL, F
1948
	rgoto	CS_MENU_PRINT_SeqSteps_Loop
1949
 
1950
	return
1951
 
1952
 
1953
; --------------------------------------------------------------------------
1954
;; print 7bit hex/dec number depending on WT_DEC_VIEW flag
521 tk 1955
;; another difference: this function only prints 3 characters instead of 4,
1956
;; so that the caller can add a custom char behind the item if required
1 tk 1957
;; value in WREG
1958
CS_MENU_PRINT_WTVal
521 tk 1959
	BRA_IFCLR CS_STAT2, CS_STAT2_WT_DEC_VIEW, ACCESS, CS_MENU_PRINT_WTVal_Hex
1960
	goto	MIOS_LCD_PrintBCD3
1961
CS_MENU_PRINT_WTVal_Hex
1962
	movwf	TMP1
1963
	movlw	' '		; fill with space
1964
	rcall	CS_MENU_PRINT_Char
1965
	movf	TMP1, W
1966
	goto	MIOS_LCD_PrintHex2
1 tk 1967
 
1968
CS_MENU_PRINT_PMWTVal
521 tk 1969
	BRA_IFSET CS_STAT2, CS_STAT2_WT_DEC_VIEW, ACCESS, CS_MENU_PRINT_PMWTVal_Dec
1 tk 1970
	movwf	TMP1
1971
	movlw	'+'		; "+" or "-"?
1972
	btfss	TMP1, 6; (if value <= 0x3f (6th bit cleared), print "-"
1973
	movlw '-'
1974
	rcall	CS_MENU_PRINT_Char
1975
 
521 tk 1976
	movf	TMP1, W		; calc: 0x40-value
1977
	andlw	0x7f
1978
	sublw	0x40
1979
	btfsc	WREG, 7			; negate value if negative to get absolute value
1980
	negf	WREG, ACCESS
1981
	goto	MIOS_LCD_PrintHex2	; and print it
1 tk 1982
 
521 tk 1983
CS_MENU_PRINT_PMWTVal_Dec
1984
	movwf	TMP1
1985
	movlw	'+'		; "+" or "-"?
1986
	btfss	TMP1, 6; (if value <= 0x3f (6th bit cleared), print "-"
1987
	movlw	'-'
1988
	rcall	CS_MENU_PRINT_Char
1989
	movf	TMP1, W		; calc: 0x40-value
1990
	sublw	0x40
1991
	btfsc	WREG, 7			; negate value if negative to get absolute value
1992
	negf	WREG, ACCESS
1993
	call	MIOS_LCD_PrintBCD2	; and print it
1994
#if 0
1995
	movlw	' '		; fill with space
1996
	rgoto	CS_MENU_PRINT_Char
1997
#else
1998
	return			; mostly need only 3 chars
1999
#endif
1 tk 2000
 
2001
; --------------------------------------------------------------------------
2002
;  Large String tables (located here to ensure that CS_MENU_PRINT_Handler can
2003
;  work with 2byte "rgoto"'s
2004
; --------------------------------------------------------------------------
340 tk 2005
CS_MENU_PRINT_Fx_MOD_Tab
2006
	dw	"--- "
2007
	dw	"L-- "
2008
	dw	"-B- "
2009
	dw	"LB- "
2010
	dw	"--H "
2011
	dw	"L-H "
2012
	dw	"-BH "
2013
	dw	"LBH "
2014
 
2015
CS_MENU_PRINT_Fx_CHN_Tab
2016
	dw	"--- "
2017
	dw	"1-- "
2018
	dw	"-2- "
2019
	dw	"12- "
2020
	dw	"--3 "
2021
	dw	"1-3 "
2022
	dw	"-23 "
2023
	dw	"123 "
2024
 
2025
CS_MENU_PRINT_Vx_WAV_Tab
2026
	dw	"off "
2027
	dw	"Tri "
2028
	dw	"Saw "
2029
	dw	"T+S "
2030
	dw	"Pul "
2031
	dw	"P+T "
2032
	dw	"P+S "
2033
	dw	"PST "
2034
	dw	"Noi "
2035
 
2036
CS_MENU_PRINT_Vx_S_R_Tab
2037
	dw	"--- "
2038
	dw	"Syn "
2039
	dw	"Rin "
2040
	dw	"R&S "
2041
 
1 tk 2042
CS_MENU_PRINT_Vx_VAS_Tab
2043
	dw	" LR "
2044
	dw	" L- "
2045
	dw	" -R "
2046
	dw	" O1 "
2047
	dw	" O2 "
2048
	dw	" O3 "
2049
	dw	" O4 "
2050
	dw	" O5 "
2051
	dw	" O6 "
2052
 
2053
CS_MENU_PRINT_Vx_ARP_DIR_Tab
2054
	dw	"Up  "
2055
	dw	"Dwn "
2056
	dw	"U&D "
2057
	dw	"D&U "
2058
	dw	"UD2 "
2059
	dw	"DU2 "
2060
	dw	"Rnd "
2061
	dw	"r.7 "		; reserved
2062
 
2063
CS_MENU_PRINT_LFOx_WAV_Tab
2064
	dw	"off "
2065
	dw	"Sin "
2066
	dw	"Tri "
2067
	dw	"Saw "
2068
	dw	"Pul "
2069
	dw	"Ran "
2070
	dw	"PSn "
2071
	dw	"PTr "
2072
	dw	"PSw "
2073
	dw	"PPl "
2074
 
2075
CS_MENU_PRINT_LFOx_RATE_Tab
2076
	dw	"64/1"
2077
	dw	"32/1"
2078
	dw	"16/1"
2079
	dw	"8/1 "
2080
	dw	"4/1 "
2081
	dw	"2/1 "
2082
	dw	"1/1 "
2083
	dw	"1/2 "
2084
	dw	"1/4 "
2085
	dw	"1/8 "
2086
	dw	"1/16"
2087
 
2088
CS_MENU_PRINT_ENVx_Loop_Tab
2089
	dw	"--- "
2090
	dw	"At1 "
2091
	dw	"At2 "
2092
	dw	"De1 "
2093
	dw	"De2 "
2094
	dw	"Sus "
2095
	dw	"Re1 "
2096
	dw	"Re2 "
2097
 
228 tk 2098
CS_MENU_PRINT_ENVx_CAS_Tab
2099
	dw	"--- "
2100
	dw	"A-- "
2101
	dw	"-D- "
2102
	dw	"AD- "
2103
	dw	"--R "
2104
	dw	"A-R "
2105
	dw	"-DR "
2106
	dw	"ADR "
2107
 
1 tk 2108
CS_MENU_PRINT_MODx_SRC_Tab
2109
	dw	"--- "
2110
	dw	"EG1 "
2111
	dw	"EG2 "
2112
	dw	"LF1 "
2113
	dw	"LF2 "
2114
	dw	"LF3 "
2115
	dw	"LF4 "
2116
	dw	"LF5 "
2117
	dw	"LF6 "
2118
	dw	"MP1 "
2119
	dw	"MP2 "
2120
	dw	"MP3 "
2121
	dw	"MP4 "
2122
	dw	"MP5 "
2123
	dw	"MP6 "
2124
	dw	"MP7 "
2125
	dw	"MP8 "
2126
	dw	"MdW "
2127
	dw	"Key "
2128
	dw	"K#1 "
2129
	dw	"K#2 "
2130
	dw	"K#3 "
2131
	dw	"K#4 "
2132
	dw	"K#5 "
2133
	dw	"K#V "
2134
	dw	"K#P "
2135
	dw	"K#A "
2136
	dw	"WT1 "
2137
	dw	"WT2 "
2138
	dw	"WT3 "
2139
	dw	"WT4 "
2140
 
2141
CS_MENU_PRINT_MODx_OP_Tab
2142
	dw	"--- "
2143
	dw	"Sr1 "
2144
	dw	"Sr2 "
2145
	dw	"1+2 "
2146
	dw	"1-2 "
2147
	dw	"1*2 "
2148
	dw	"XOR "
2149
	dw	"OR  "
2150
	dw	"AND "
2151
	dw	"MIN "
2152
	dw	"MAX "
2153
	dw	"1<2 "
2154
	dw	"1>2 "
2155
	dw	"1=2 "
2156
	dw	"S&H "
2157
	dw	"r.2 "
2158
 
2159
CS_MENU_PRINT_MODx_TAR_Tab
2160
	dw	"--- "
2161
	dw	"Pt1 "
2162
	dw	"Pt2 "
2163
	dw	"Pt3 "
2164
	dw	"Pt4 "
2165
	dw	"Pt5 "
2166
	dw	"Pt6 "
2167
	dw	"PW1 "
2168
	dw	"PW2 "
2169
	dw	"PW3 "
2170
	dw	"PW4 "
2171
	dw	"PW5 "
2172
	dw	"PW6 "
2173
	dw	"Fl1 "
2174
	dw	"Fl2 "
2175
	dw	"Vl1 "
2176
	dw	"Vl2 "
2177
	dw	"LD1 "
2178
	dw	"LD2 "
2179
	dw	"LD3 "
2180
	dw	"LD4 "
2181
	dw	"LD5 "
2182
	dw	"LD6 "
2183
	dw	"LR1 "
2184
	dw	"LR2 "
2185
	dw	"LR3 "
2186
	dw	"LR4 "
2187
	dw	"LR5 "
2188
	dw	"LR6 "
2189
	dw	"Ex1 "
2190
	dw	"Ex2 "
2191
	dw	"Ex3 "
2192
	dw	"Ex4 "
2193
	dw	"Ex5 "
2194
	dw	"Ex6 "
2195
	dw	"Ex7 "
2196
	dw	"Ex8 "
2197
	dw	"WT1 "
2198
	dw	"WT2 "
2199
	dw	"WT3 "
2200
	dw	"WT4 "
2201
 
2202
CS_MENU_PRINT_TRGx_SRC_Tab
2203
	dw	"NOn "
2204
	dw	"NOf "
2205
	dw	"E1S "
2206
	dw	"E2S "
2207
	dw	"L1P "
2208
	dw	"L2P "
2209
	dw	"L3P "
2210
	dw	"L4P "
2211
	dw	"L5P "
2212
	dw	"L6P "
2213
	dw	"Clk "
248 tk 2214
	dw	"Cl6 "
2215
	dw	"C24 "
1 tk 2216
	dw	"MSt "
2217
 
2218
CS_MENU_PRINT_KNB_Tab
2219
	dw	"K#1 "
2220
	dw	"K#2 "
2221
	dw	"K#3 "
2222
	dw	"K#4 "
2223
	dw	"K#5 "
2224
	dw	"K#V "
2225
	dw	"K#P "
2226
	dw	"K#A "
2227
 
2228
CS_MENU_PRINT_SEQ_NOTE_Tab
2229
	db	"C ", "C#", "D ", "D#", "E ", "F ", "F#", "G ", "G#", "A ", "A#", "B ", "C+"