Subversion Repositories svn.mios

Rev

Rev 1 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
44 tk 1
; $Id: cs_menu_tables_struct.inc 44 2008-01-30 21:39:30Z tk $
1 tk 2
;
3
; Control Surface Menu Tables Structures
4
; (outsourced as they are really unreadable ;-)
5
;
6
; ==========================================================================
7
;
8
;  Copyright 1998-2007 Thorsten Klose (tk@midibox.org)
9
;  Licensed for personal non-commercial use only.
10
;  All other rights reserved.
11
;
12
; ==========================================================================
13
 
14
 
15
; ==========================================================================
16
;  CS_MENU_TABLES contains the number of tables and a pointer to all
17
;  available menu tables and the appr. table handler function
18
; ==========================================================================
19
CS_MENU_T_ENTRY_REF_LEN		EQU	2
20
CS_MENU_T_ENTRY_HANDLER_OFFSET	EQU	CS_MENU_T_ENTRY_REF_LEN
21
CS_MENU_T_ENTRY_HANDLER_LEN	EQU	2
22
CS_MENU_T_ENTRY_EXEC_OFFSET	EQU	CS_MENU_T_ENTRY_HANDLER_OFFSET+CS_MENU_T_ENTRY_HANDLER_LEN
23
CS_MENU_T_ENTRY_EXEC_LEN	EQU	2
24
CS_MENU_T_ENTRY_PGNAME_OFFSET	EQU	CS_MENU_T_ENTRY_EXEC_OFFSET+CS_MENU_T_ENTRY_EXEC_LEN
25
CS_MENU_T_ENTRY_PGNAME_LEN	EQU	3
26
CS_MENU_T_ENTRY_NUMVAR_OFFSET	EQU	CS_MENU_T_ENTRY_PGNAME_OFFSET+CS_MENU_T_ENTRY_PGNAME_LEN
27
CS_MENU_T_ENTRY_NUMVAR_LEN	EQU	1
28
CS_MENU_T_ENTRY_NUMMAX_OFFSET	EQU	CS_MENU_T_ENTRY_NUMVAR_OFFSET+CS_MENU_T_ENTRY_NUMVAR_LEN
29
CS_MENU_T_ENTRY_NUMMAX_LEN	EQU	1
30
CS_MENU_T_ENTRY_PRINT_IX_OFFSET	EQU	CS_MENU_T_ENTRY_NUMMAX_OFFSET+CS_MENU_T_ENTRY_NUMMAX_LEN
31
CS_MENU_T_ENTRY_PRINT_IX_LEN	EQU	1
32
CS_MENU_T_ENTRY_LEN		EQU	CS_MENU_T_ENTRY_PRINT_IX_OFFSET+CS_MENU_T_ENTRY_PRINT_IX_LEN
33
 
34
CS_MENU_T_ENTRY MACRO ref, handler, exec, pgname, numvar, nummax, print_ix
35
	dw	ref, handler, exec
36
	db	pgname, numvar, nummax, print_ix
37
	ENDM
38
 
39
 
40
; ==========================================================================
41
;  This defines the structure of a table entry
42
; ==========================================================================
43
CS_MENU_ENTRY_REG_OFFSET	EQU	0
44
CS_MENU_ENTRY_REG_LEN		EQU	1
45
CS_MENU_ENTRY_SLABEL_OFFSET	EQU	CS_MENU_ENTRY_REG_OFFSET+CS_MENU_ENTRY_REG_LEN
46
CS_MENU_ENTRY_SLABEL_LEN	EQU	3
47
CS_MENU_ENTRY_MAX_OFFSET	EQU	CS_MENU_ENTRY_SLABEL_OFFSET+CS_MENU_ENTRY_SLABEL_LEN
48
CS_MENU_ENTRY_MAX_LEN		EQU	2
49
CS_MENU_ENTRY_PRINT_IX_OFFSET	EQU	CS_MENU_ENTRY_MAX_OFFSET+CS_MENU_ENTRY_MAX_LEN
50
CS_MENU_ENTRY_PRINT_IX_LEN	EQU	1
51
CS_MENU_ENTRY_EXEC_IX_OFFSET	EQU	CS_MENU_ENTRY_PRINT_IX_OFFSET+CS_MENU_ENTRY_PRINT_IX_LEN
52
CS_MENU_ENTRY_EXEC_IX_LEN	EQU	1
53
CS_MENU_ENTRY_R2PP2R_IX_OFFSET	EQU	CS_MENU_ENTRY_EXEC_IX_OFFSET+CS_MENU_ENTRY_EXEC_IX_LEN
54
CS_MENU_ENTRY_R2PP2R_IX_LEN	EQU	1
55
CS_MENU_ENTRY_DUMMY_OFFSET	EQU	CS_MENU_ENTRY_R2PP2R_IX_OFFSET+CS_MENU_ENTRY_R2PP2R_IX_LEN
56
CS_MENU_ENTRY_DUMMY_LEN		EQU	1
57
CS_MENU_ENTRY_LEN		EQU	CS_MENU_ENTRY_DUMMY_OFFSET+CS_MENU_ENTRY_DUMMY_LEN
58
 
59
CS_MENU_ENTRY MACRO reg, short, max, print_ix, exec_ix, p2r_r2p_ix
60
	db	reg, short
61
	dw	max
62
	db	print_ix, exec_ix, p2r_r2p_ix, 0
63
	ENDM
64
 
65
	;; the first two bytes contain
66
	;;    o the length of the table
67
	;;    o and a dummy byte (necessary due to assembler imperfection)
68
 
69
	;; we are using the following structure for every entry:
70
	;;   o 1 byte for the parameter register offset
71
	;;   o 3 characters for the short label
72
	;;   o 1 spare byte
73
	;;   o the 8-bit max value
74
	;;   o an index to the print function
75
	;;   o an index to the select function
76
	;;   o an index to the p2r-r2p function
77