1 /* $NetBSD: itevar.h,v 1.5 1996/04/18 08:52:04 leo Exp $ */ 2 3 /* 4 * Copyright (c) 1995 Leo Weppelman (Atari modifications) 5 * Copyright (c) 1994 Christian E. Hopps 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. All advertising materials mentioning features or use of this software 17 * must display the following acknowledgement: 18 * This product includes software developed by Christian E. Hopps. 19 * 4. The name of the author may not be used to endorse or promote products 20 * derived from this software without specific prior written permission 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 27 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 31 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 #ifndef _ITEVAR_H 35 #define _ITEVAR_H 36 37 #include <atari/dev/font.h> 38 39 enum ite_arraymaxs { 40 MAX_ARGSIZE = 256, 41 MAX_TABS = 256, 42 }; 43 44 enum ite_attr { 45 ATTR_NOR = 0, 46 ATTR_INV = 1, 47 ATTR_UL = 2, 48 ATTR_BOLD = 4, 49 ATTR_BLINK = 8, 50 ATTR_ALL = 16-1, 51 52 ATTR_KEYPAD = 0x80 /* XXX */ 53 }; 54 55 struct ite_softc { 56 struct device device; /* _Must_ be first */ 57 char argbuf[MAX_ARGSIZE]; 58 struct grf_softc *grf; /* XXX */ 59 char *ap; 60 struct tty *tp; 61 void *priv; 62 font_info font; 63 u_char *tabs; 64 struct kbdmap *kbdmap; 65 int flags; 66 short cursorx; 67 short cursory; 68 short rows; 69 short cols; 70 u_char *cursor; 71 char imode; 72 u_char escape; 73 u_char cursor_opt; 74 u_char key_repeat; 75 char GL; 76 char GR; 77 char G0; 78 char G1; 79 char G2; 80 char G3; 81 char linefeed_newline; 82 char auto_wrap; 83 char cursor_appmode; 84 char keypad_appmode; 85 short top_margin; 86 short bottom_margin; 87 short inside_margins; 88 short eightbit_C1; 89 short emul_level; 90 enum ite_attr attribute; 91 enum ite_attr save_attribute; 92 int curx; 93 int save_curx; 94 int cury; 95 int save_cury; 96 }; 97 98 enum ite_flags { 99 ITE_ALIVE = 0x1, /* grf layer is configed */ 100 ITE_ISCONS = 0x2, /* ite is acting console. */ 101 ITE_INITED = 0x4, /* ite has been inited. */ 102 ITE_ISOPEN = 0x8, /* ite has been opened */ 103 ITE_INGRF = 0x10, /* ite is in graphics mode */ 104 ITE_ACTIVE = 0x20, /* ite is an active terminal */ 105 }; 106 107 enum ite_replrules { 108 RR_CLEAR = 0, 109 RR_COPY = 0x3, 110 RR_XOR = 0x6, 111 RR_COYINVERTED = 0xC 112 }; 113 114 enum ite_scrolldir { 115 SCROLL_UP = 1, 116 SCROLL_DOWN, 117 SCROLL_LEFT, 118 SCROLL_RIGHT, 119 }; 120 121 enum ite_cursact { 122 DRAW_CURSOR = 5, 123 ERASE_CURSOR, 124 MOVE_CURSOR, 125 START_CURSOROPT, 126 END_CURSOROPT 127 }; 128 129 enum ite_special_keycodes { 130 KBD_LEFT_SHIFT = 0x2a, 131 KBD_RIGHT_SHIFT = 0x36, 132 KBD_CAPS_LOCK = 0x3a, 133 KBD_CTRL = 0x1d, 134 KBD_ALT = 0x38 135 }; 136 137 enum ite_modifiers { 138 KBD_MOD_LSHIFT = 0x01, 139 KBD_MOD_RSHIFT = 0x02, 140 KBD_MOD_CTRL = 0x04, 141 KBD_MOD_ALT = 0x08, 142 KBD_MOD_CAPS = 0x10, 143 KBD_MOD_SHIFT = (KBD_MOD_LSHIFT | KBD_MOD_RSHIFT) 144 }; 145 146 enum caller { 147 ITEFILT_TTY, 148 ITEFILT_CONSOLE, 149 ITEFILT_REPEATER 150 }; 151 152 enum emul_level { 153 EMUL_VT100 = 1, 154 EMUL_VT300_8, 155 EMUL_VT300_7 156 }; 157 158 enum ite_max_getsize { ITEBURST = 64 }; 159 160 enum tab_size { TABSIZE = 8 }; 161 #define TABEND(u) (ite_tty[u]->t_windsize.ws_col - TABSIZE) /* XXX */ 162 163 #define set_attr(ip, attr) ((ip)->attribute |= (attr)) 164 #define clr_attr(ip, attr) ((ip)->attribute &= ~(attr)) 165 #define attrloc(ip, y, x) 0 166 #define attrclr(ip, sy, sx, h, w) 167 #define attrmov(ip, sy, sx, dy, dx, h, w) 168 #define attrtest(ip, attr) 0 169 #define attrset(ip, attr) 170 171 #ifdef _KERNEL 172 173 struct proc; 174 struct consdev; 175 struct termios; 176 177 /* console related function */ 178 void ite_cnprobe __P((struct consdev *)); 179 void ite_cninit __P((struct consdev *)); 180 int ite_cngetc __P((dev_t)); 181 void ite_cnputc __P((dev_t, int)); 182 void ite_cnfinish __P((struct ite_softc *)); 183 184 /* standard ite device entry points. */ 185 void iteinit __P((dev_t)); 186 187 /* 188 * Standard character device functions. 189 */ 190 dev_type_open(iteopen); 191 dev_type_close(iteclose); 192 dev_type_read(iteread); 193 dev_type_write(itewrite); 194 dev_type_ioctl(iteioctl); 195 dev_type_tty(itetty); 196 dev_type_stop(itestop); 197 198 /* ite functions */ 199 int ite_on __P((dev_t, int)); 200 void ite_off __P((dev_t, int)); 201 void ite_reinit __P((dev_t)); 202 int ite_param __P((struct tty *, struct termios *)); 203 void ite_reset __P((struct ite_softc *)); 204 int ite_cnfilter __P((u_int, enum caller)); 205 void ite_filter __P((u_int ,enum caller)); 206 207 /* ite_cc functions */ 208 int grfcc_cnprobe __P((void)); 209 void grfcc_iteinit __P((struct grf_softc *)); 210 int ite_grf_ioctl __P((struct ite_softc *, u_long, caddr_t, int, 211 struct proc *)); 212 #endif /* _KERNEL */ 213 214 #endif /* _ITEVAR_H */ 215