More changes towards a release.
[mknbi.git] / nfl.h
1
2 #define K_RDWR          0x60    /* keyboard data & cmds (read/write) */
3 #define K_STATUS        0x64    /* keyboard status */
4 #define K_CMD           0x64    /* keybd ctlr command (write-only) */
5
6 #define K_OBUF_FUL      0x01    /* output buffer full */
7 #define K_IBUF_FUL      0x02    /* input buffer full */
8
9 #define KC_CMD_WIN      0xd0    /* read  output port */
10 #define KC_CMD_WOUT     0xd1    /* write output port */
11 #define KB_OUTPUT_MASK  0xdd    /* enable output buffer full interrupt
12                                    enable data line
13                                    enable clock line */
14 #define KB_A20_ENABLE   0x02
15
16 /* Codes for getchar. */
17 #define ASCII_CHAR(x)   ((x) & 0xFF)
18
19 #define KEY_LEFT        0x4B00
20 #define KEY_RIGHT       0x4D00
21 #define KEY_UP          0x4800
22 #define KEY_DOWN        0x5000
23 #define KEY_IC          0x5200  /* insert char */
24 #define KEY_DC          0x5300  /* delete char */
25 #define KEY_BACKSPACE   0x0008
26 #define KEY_HOME        0x4700
27 #define KEY_END         0x4F00
28 #define KEY_NPAGE       0x4900
29 #define KEY_PPAGE       0x5100
30
31 /* Default video attributes */
32 #define A_NORMAL        0x7
33 #define A_REVERSE       0x70
34
35 /* Define ACS_* ourselves, since the definitions are not consistent among
36    various curses implementations.  */
37 #undef ACS_ULCORNER
38 #undef ACS_URCORNER
39 #undef ACS_LLCORNER
40 #undef ACS_LRCORNER
41 #undef ACS_HLINE
42 #undef ACS_VLINE
43 #undef ACS_LARROW
44 #undef ACS_RARROW
45 #undef ACS_UARROW
46 #undef ACS_DARROW
47
48 #define ACS_ULCORNER    '+'
49 #define ACS_URCORNER    '+'
50 #define ACS_LLCORNER    '+'
51 #define ACS_LRCORNER    '+'
52 #define ACS_HLINE       '-'
53 #define ACS_VLINE       '|'
54 #define ACS_LARROW      '<'
55 #define ACS_RARROW      '>'
56 #define ACS_UARROW      '^'
57 #define ACS_DARROW      'v'
58
59 /* Special graphics characters for IBM displays. */
60 #define DISP_UL         218
61 #define DISP_UR         191
62 #define DISP_LL         192
63 #define DISP_LR         217
64 #define DISP_HORIZ      196
65 #define DISP_VERT       179
66 #define DISP_LEFT       0x1b
67 #define DISP_RIGHT      0x1a
68 #define DISP_UP         0x18
69 #define DISP_DOWN       0x19
70
71 #ifndef ASM_FILE
72 /*
73  *  Below this should be ONLY defines and other constructs for C code.
74  */
75
76 /* The flag for debug mode.  */
77 extern int debug;
78 /* Color settings */
79 extern int normal_color, highlight_color;
80
81 /* If LINEAR is nonzero, then set the Intel processor to linear mode.
82    Otherwise, bit 20 of all memory accesses is always forced to zero,
83    causing a wraparound effect for bugwards compatibility with the
84    8086 CPU. */
85 void gateA20 (int linear);
86
87 /* memory probe routines */
88 int get_memsize (int type);
89 int get_eisamemsize (void);
90
91 /* Get the linear address of a ROM configuration table. Return zero,
92    if fails.  */
93 unsigned long get_rom_config_table (void);
94
95 /* Get APM BIOS information.  */
96 void get_apm_info (void);
97
98 /* Get VBE controller information.  */
99 /*int get_vbe_controller_info (struct vbe_controller *controller);*/
100
101 /* Get VBE mode information.  */
102 /*int get_vbe_mode_info (int mode_number, struct vbe_mode *mode);*/
103
104 /* Set VBE mode.  */
105 int set_vbe_mode (int mode_number);
106
107 /* Return the data area immediately following our code. */
108 int get_code_end (void);
109
110 /* low-level timing info */
111 /*int getrtsecs (void);
112 int currticks (void);*/
113
114 /* Clear the screen. */
115 void cls (void);
116
117 /* The console part of cls.  */
118 void console_cls (void);
119
120 /* Turn off cursor. */
121 void console_nocursor (void);
122
123 /* Get the current cursor position (where 0,0 is the top left hand
124    corner of the screen).  Returns packed values, (RET >> 8) is x,
125    (RET & 0xff) is y. */
126 int getxy (void);
127
128 /* The console part of getxy.  */
129 int console_getxy (void);
130
131 /* Set the cursor position. */
132 void gotoxy (int x, int y);
133
134 /* The console part of gotoxy.  */
135 void console_gotoxy (int x, int y);
136
137 /* The console part of putchar.  */
138 void console_putchar (int c);
139
140 /* Wait for a keypress, and return its packed BIOS/ASCII key code.
141    Use ASCII_CHAR(ret) to extract the ASCII code. */
142 int getkey (void);
143
144 /* The console part of getkey.  */
145 int console_getkey (void);
146
147 /* Like GETKEY, but doesn't block, and returns -1 if no keystroke is
148    available. */
149 int checkkey (void);
150
151 /* The console part of checkkey.  */
152 int console_checkkey (void);
153
154 /* Sets text mode character attribute at the cursor position.  See A_*
155    constants defined above. */
156 void set_attrib (int attr);
157
158 /* The console part of set_attrib.  */
159 void console_set_attrib (int attr);
160
161 /* The table for a builtin.  */
162 struct builtin
163 {
164   /* The command name.  */
165   char *name;
166   /* The callback function.  */
167   int (*func) (char *, int);
168   /* The combination of the flags defined above.  */
169   int flags;
170   /* The short version of the documentation.  */
171   char *short_doc;
172   /* The long version of the documentation.  */
173   char *long_doc;
174 };
175
176 /* All the builtins are registered in this.  */
177 extern struct builtin *builtin_table[];
178
179 extern int show_menu;
180
181 /* Control the auto fill mode.  */
182 extern int auto_fill;
183
184 /* This variable specifies which console should be used.  */
185 extern int terminal;
186
187 #define TERMINAL_CONSOLE        (1 << 0)        /* keyboard and screen */
188 #define TERMINAL_SERIAL         (1 << 1)        /* serial console */
189 #define TERMINAL_HERCULES       (1 << 2)        /* hercules */
190
191 #define TERMINAL_DUMB           (1 << 16)       /* dumb terminal */
192
193 void init_builtins (void);
194 void init_config (void);
195 char *skip_to (int after_equal, char *cmdline);
196 struct builtin *find_command (char *command);
197 #endif
198
199 void init_bios_info (void);
200
201 /*
202  * This program is free software; you can redistribute it and/or
203  * modify it under the terms of the GNU General Public License as
204  * published by the Free Software Foundation; either version 2, or (at
205  * your option) any later version.
206  */
207
208 /*
209  *      Definitions of data structures generated by the menu compiler
210  *      and expected by the menu program. All offsets are from the
211  *      beginning of the data area.
212  */
213
214 /*
215  *      Structure describing the data area, starts at 0.
216  */
217 struct menu_header
218 {
219         char            major, minor;   /* Versions */
220         unsigned short  flags;          /* Capabilities */
221         unsigned int    timeout;        /* Global timeout */
222         unsigned int    selectprompt;   /* Offset of string saying Select... */
223         unsigned int    confirmprompt;  /* Offset of string saying Confirm... */
224         unsigned int    nmenus;         /* Number of menus stored */
225         /* Here follow unsigned int offsets of menus */
226 };
227
228 /*
229  *      Structure describing one menu. The number of items is one
230  *      greater than the last valid index. The 0th item holds the
231  *      data to be displayed before any user input.
232  */
233 struct menu
234 {
235         unsigned int    timeout;        /* Timeout for this menu */
236         unsigned int    nitems;         /* Items in this menu */
237         /* Here follow unsigned int offsets of items */
238 };
239
240 /*
241  *      Structure describing one item in a menu.
242  */
243 struct item
244 {
245         unsigned int    title;
246 };