xref: /386bsd/usr/src/usr.bin/tn3270/ctlr/hostctlr.h (revision a2142627)
1 /*-
2  * Copyright (c) 1988 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. All advertising materials mentioning features or use of this software
14  *    must display the following acknowledgement:
15  *	This product includes software developed by the University of
16  *	California, Berkeley and its contributors.
17  * 4. Neither the name of the University nor the names of its contributors
18  *    may be used to endorse or promote products derived from this software
19  *    without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  *
33  *	@(#)hostctlr.h	4.2 (Berkeley) 4/26/91
34  */
35 
36 #define	INCLUDED_HOST3270
37 
38 /* define orders given to 3270's */
39 
40 #define	ORDER_SF	0x1d		/* Start Field */
41 #define	ORDER_SFE	0x29		/* Start Field Extended */
42 #define	ORDER_SBA	0x11		/* Set Buffer Address (for output) */
43 #define	ORDER_SA	0x28		/* Set Attribute */
44 #define	ORDER_MF	0x2c		/* Modify field */
45 #define	ORDER_IC	0x13		/* Insert Cursor (at buffer address) */
46 #define	ORDER_PT	0x05		/* Program Tab (absurdly complicated) */
47 #define	ORDER_RA	0x3c		/* Repeat next character to some addr */
48 #define	ORDER_EUA	0x12		/* Null out every unprotected field
49 					 * to some address.
50 					 */
51 #define	ORDER_GE	0x08		/* Graphics Escape */
52 #define	ORDER_YALE	0x2b		/* This is a special YALE order, which
53 					 * introduces YALE extended orders
54 					 * (like setting tabs, etc.).
55 					 */
56 
57 /* The following is defined for initialization and error messages. */
58 
59 struct orders_def {
60     int
61 	code;			/* As in 3270 data stream */
62     char
63 	*short_name,		/* Short name */
64 	*long_name;		/* Long name */
65 };
66 
67 #define	ORDERS_DEF { \
68 			    ORDER_SF, "SF", "Start Field", \
69 			    ORDER_SFE, "SFE", "Start Field Extended", \
70 			    ORDER_SBA, "SBA", "Set Buffer Address", \
71 			    ORDER_SA, "SA", "Set Attribute", \
72 			    ORDER_MF, "MF", "Modify Field", \
73 			    ORDER_IC, "IC", "Insert Cursor", \
74 			    ORDER_PT, "PT", "Program Tab", \
75 			    ORDER_RA, "RA", "Repeat to Address", \
76 			    ORDER_EUA, "EUA", "Erase Unprotected to Address", \
77 			    ORDER_GE, "GE", "Graphics Escape", \
78 			    ORDER_YALE, "YALE", "Yale Order" \
79 			}
80 
81 
82 #define	ATTR_RESET		0x00		/* SA only - reset to default */
83 #	define	ATTR_DEFAULT	0x00		/* reset to default */
84 						/* Also for 0x41-43 below */
85 #define	ATTR_FIELD		0xC0		/* Field attributes */
86 #	define	ATTR_MASK		0xc0	/* control bits */
87 #	define	ATTR_PROT		0x20	/* protected bit */
88 #	define	ATTR_NUMERIC		0x10	/* numeric field */
89 #	define	ATTR_AUTO_SKIP_MASK	0x30	/* mask to check auto skip */
90 #	define	ATTR_AUTO_SKIP_VALUE	0x30	/* value to have auto skip */
91 #	define	ATTR_DSPD_MASK		0x0c	/* highlighting, etc. */
92 #	define	ATTR_DSPD_DNSPD		0x00	/* display, no select */
93 #	define	ATTR_DSPD_DSPD		0x04	/* display, select */
94 #	define	ATTR_DSPD_HIGH		0x08	/* highlighted, select */
95 #	define	ATTR_DSPD_NONDISPLAY	0x0c	/* non-display, no select */
96 #	define	ATTR_MDT		0x01		/* modified data tag */
97 
98 #define	ATTR_EXTENDED_HIGHLIGHT	0x41		/* Extended highlighting */
99 #	define	ATTR_BLINK		0xf1	/* Blinking */
100 #	define	ATTR_REVERSE_VIDEO	0xf2	/* Reverse video */
101 #	define	ATTR_UNDERSCORE		0xf3	/* Underline */
102 #define	ATTR_COLOR		0x42		/* Color */
103 #	define	ATTR_BLUE		0xf1
104 #	define	ATTR_RED		0xf2
105 #	define	ATTR_PINK		0xf3
106 #	define	ATTR_GREEN		0xf4
107 #	define	ATTR_TURQUOISE		0xf5
108 #	define	ATTR_YELLOW		0xf6
109 #	define	ATTR_WHITE		0xf7	/* for 3279; black for 3287; */
110 						/* multicolor for triple */
111 						/* plane symbol */
112 #define	ATTR_PROGRAMMED_SYMBOLS	0x43		/* Programmed Symbols */
113 #	define	ATTR_SYMBOL_SET_LOW	0x40	/* Lowest loadable set ID */
114 #	define	ATTR_SYMBOL_SET_HIGH	0xef	/* Highest loadable set ID */
115 #	define	ATTR_SYMBOL_SET_APLTEXT	0xf1
116 
117 /* Non-SNA control unit commands */
118 
119 #define	CMD_ERASE_ALL_UNPROTECTED	0x0f
120 #define	CMD_ERASE_WRITE			0x05
121 #define	CMD_ERASE_WRITE_ALTERNATE	0x0d
122 #define	CMD_READ_BUFFER			0x02
123 #define	CMD_READ_MODIFIED		0x06
124 #define	CMD_WRITE			0x01
125 #define	CMD_WRITE_STRUCTURED_FIELD	0x11
126 
127 /* SNA control unit commands */
128 
129 #define	CMD_SNA_COPY			0xf7
130 #define	CMD_SNA_ERASE_ALL_UNPROTECTED	0x6f
131 #define	CMD_SNA_ERASE_WRITE		0xf5
132 #define	CMD_SNA_ERASE_WRITE_ALTERNATE	0x7e
133 #define	CMD_SNA_READ_BUFFER		0xf2
134 #define	CMD_SNA_READ_MODIFIED		0xf6
135 #define	CMD_SNA_READ_MODIFIED_ALL	0x6e
136 #define	CMD_SNA_WRITE			0xf1
137 #define	CMD_SNA_WRITE_STRUCTURED_FIELD	0xf3
138 
139 
140 #define	WCC_RESET	0x40
141 #define	WCC_ALARM	0x04
142 #define	WCC_RESTORE	0x02
143 #define	WCC_RESET_MDT	0x01
144 
145 
146 /* Special EBCDIC characters unique to a 3270 */
147 
148 #define	EBCDIC_BLANK	0x40			/* Space */
149 #define	EBCDIC_CENTSIGN	0x4a			/* Cent sign */
150 #define	EBCDIC_DUP	0x1c			/* DUP character */
151 #define	EBCDIC_FM	0x1e			/* Field mark character */
152 #define	EBCDIC_PERCENT	0x6c			/* Percent sign */
153 #define	EBCDIC_SLASH	0x61			/* Slash */
154 #define	EBCDIC_SOH	0x01			/* Start of Heading */
155 #define	EBCDIC_STX	0x02			/* Start of Text */
156 
157 /* Structured field types */
158 #define	SF_3270DS	0x40			/* For write operations */
159 #define	SF_LPS		0x06			/* Load Programmed Symbols */
160 #define	SF_SRM		0x09			/* Set Reply Mode */
161 #define	SF_SWO		0x0b			/* Set Window Origin */
162 #define	SF_READ_PARTITION	0x01		/* Read Partition (Query) */
163 #define	SF_ERASE_RESET		0x03		/* Erase (and/or Reset) */
164 #define	SF_SCS_DATA		0x41		/* SCS Data */
165 #define	SF_CREATE_PARTITION	0x0c		/* Create a partition */
166 
167 /* AID characters sent to host.
168  *
169  * Note that this file (the following entries) are scanned by mkhit.c,
170  * and that the format must remain more-or-less consistent
171  * (#define\tAID_name\t[\t]*TOKEN)
172  */
173 
174 #define	AID_NONE		0x60		/* No AID (display) */
175 #define	AID_NONE_PRINTER	0xe8		/* No AID (printer) */
176 
177 #define	AID_PA1			0x6c
178 #define	AID_PA2			0x6e
179 #define	AID_PA3			0x6b
180 #define	AID_CLEAR		0x6d
181 #define	AID_TREQ		0xf0
182 #define	AID_ENTER		0x7d
183 #define	AID_SELPEN		0x7e	/*
184 					 * Really, only SELPEN with DESIGNATOR
185 					 * = space or null
186 					 */
187 #define	AID_PF1			0xf1
188 #define	AID_PF2			0xf2
189 #define	AID_PF3			0xf3
190 #define	AID_PF4			0xf4
191 #define	AID_PF5			0xf5
192 #define	AID_PF6			0xf6
193 #define	AID_PF7			0xf7
194 #define	AID_PF8			0xf8
195 #define	AID_PF9			0xf9
196 #define	AID_PF10		0x7a
197 #define	AID_PF11		0x7b
198 #define	AID_PF12		0x7c
199 #define	AID_PF13		0xc1
200 #define	AID_PF14		0xc2
201 #define	AID_PF15		0xc3
202 #define	AID_PF16		0xc4
203 #define	AID_PF17		0xc5
204 #define	AID_PF18		0xc6
205 #define	AID_PF19		0xc7
206 #define	AID_PF20		0xc8
207 #define	AID_PF21		0xc9
208 #define	AID_PF22		0x4a
209 #define	AID_PF23		0x4b
210 #define	AID_PF24		0x4c
211 #define	AID_PF25		0xd1
212 #define	AID_PF26		0xd2
213 #define	AID_PF27		0xd3
214 #define	AID_PF28		0xd4
215 #define	AID_PF29		0xd5
216 #define	AID_PF30		0xd6
217 #define	AID_PF31		0xd7
218 #define	AID_PF32		0xd8
219 #define	AID_PF33		0xd9
220 #define	AID_PF34		0x5a
221 #define	AID_PF35		0x5b
222 #define	AID_PF36		0x5c
223