1 | /* Definitions of several known BIOS addresses. The addresses listed here
|
---|
2 | * are found in three memory areas that have been defined in <ibm/memory.h>.
|
---|
3 | * - the BIOS interrupt vectors
|
---|
4 | * - the BIOS data area
|
---|
5 | * - the motherboard BIOS memory
|
---|
6 | *
|
---|
7 | * Created: March 2005, Jorrit N. Herder
|
---|
8 | */
|
---|
9 |
|
---|
10 | #ifndef _BIOS_H
|
---|
11 | #define _BIOS_H
|
---|
12 |
|
---|
13 | /* PART I --
|
---|
14 | * The BIOS interrupt vector table (IVT) area (1024 B as of address 0x0000).
|
---|
15 | * Although this area holds 256 interrupt vectors (with jump addresses), some
|
---|
16 | * vectors actually contain important BIOS data. Some addresses are below.
|
---|
17 | */
|
---|
18 | #define BIOS_EQUIP_CHECK_ADDR 0x0044
|
---|
19 | #define BIOS_EQUIP_CHECK_SIZE 4L
|
---|
20 |
|
---|
21 | #define BIOS_VIDEO_PARAMS_ADDR 0x0074
|
---|
22 | #define BIOS_VIDEO_PARAMS_SIZE 4L
|
---|
23 |
|
---|
24 | #define BIOS_FLOP_PARAMS_ADDR 0x0078
|
---|
25 | #define BIOS_FLOP_PARAMS_SIZE 4L
|
---|
26 |
|
---|
27 | #define BIOS_HD0_PARAMS_ADDR 0x0104 /* disk 0 parameters */
|
---|
28 | #define BIOS_HD0_PARAMS_SIZE 4L
|
---|
29 |
|
---|
30 | #define BIOS_HD1_PARAMS_ADDR 0x0118 /* disk 1 parameters */
|
---|
31 | #define BIOS_HD1_PARAMS_SIZE 4L
|
---|
32 |
|
---|
33 | /* PART I --
|
---|
34 | * Addresses in the BIOS data area (256 B as of address 0x0400). The addresses
|
---|
35 | * listed below are the most important ones, and the ones that are currently
|
---|
36 | * used. Other addresses may be defined below when new features are added.
|
---|
37 | */
|
---|
38 |
|
---|
39 | /* Serial ports (COM1-COM4). */
|
---|
40 | #define COM1_IO_PORT_ADDR 0x400 /* COM1 port address */
|
---|
41 | #define COM1_IO_PORT_SIZE 2L
|
---|
42 | #define COM2_IO_PORT_ADDR 0x402 /* COM2 port address */
|
---|
43 | #define COM2_IO_PORT_SIZE 2L
|
---|
44 | #define COM3_IO_PORT_ADDR 0x404 /* COM3 port address */
|
---|
45 | #define COM3_IO_PORT_SIZE 2L
|
---|
46 | #define COM4_IO_PORT_ADDR 0x406 /* COM4 port address */
|
---|
47 | #define COM4_IO_PORT_SIZE 2L
|
---|
48 |
|
---|
49 | /* Parallel ports (LPT1-LPT4). */
|
---|
50 | #define LPT1_IO_PORT_ADDR 0x408 /* LPT1 port address */
|
---|
51 | #define LPT1_IO_PORT_SIZE 2L
|
---|
52 | #define LPT2_IO_PORT_ADDR 0x40A /* LPT2 port address */
|
---|
53 | #define LPT2_IO_PORT_SIZE 2L
|
---|
54 | #define LPT3_IO_PORT_ADDR 0x40C /* LPT3 port address */
|
---|
55 | #define LPT3_IO_PORT_SIZE 2L
|
---|
56 | #define LPT4_IO_PORT_ADDR 0x40E /* LPT4 port (except on PS/2) */
|
---|
57 | #define LPT4_IO_PORT_SIZE 2L
|
---|
58 |
|
---|
59 | /* Video controller (VDU). */
|
---|
60 | #define VDU_SCREEN_COLS_ADDR 0x44A /* VDU nr of screen columns */
|
---|
61 | #define VDU_SCREEN_COLS_SIZE 2L
|
---|
62 |
|
---|
63 | /* Base I/O port address for active 6845 CRT controller. */
|
---|
64 | #define VDU_CRT_BASE_ADDR 0x463 /* 3B4h = mono, 3D4h = color */
|
---|
65 | #define VDU_CRT_BASE_SIZE 2L
|
---|
66 |
|
---|
67 | /* Soft reset flags to control shutdown. */
|
---|
68 | #define SOFT_RESET_FLAG_ADDR 0x472 /* soft reset flag on Ctl-Alt-Del */
|
---|
69 | #define SOFT_RESET_FLAG_SIZE 2L
|
---|
70 | #define STOP_MEM_CHECK 0x1234 /* bypass memory tests & CRT init */
|
---|
71 | #define PRESERVE_MEMORY 0x4321 /* preserve memory */
|
---|
72 | #define SYSTEM_SUSPEND 0x5678 /* system suspend */
|
---|
73 | #define MANUFACTURER_TEST 0x9ABC /* manufacturer test */
|
---|
74 | #define CONVERTIBLE_POST 0xABCD /* convertible POST loop */
|
---|
75 | /* ... many other values are used during POST */
|
---|
76 |
|
---|
77 | /* Hard disk parameters. (Also see BIOS interrupt vector table above.) */
|
---|
78 | #define NR_HD_DRIVES_ADDR 0x475 /* number of hard disk drives */
|
---|
79 | #define NR_HD_DRIVES_SIZE 1L
|
---|
80 |
|
---|
81 | /* Parallel ports (LPT1-LPT4) timeout values. */
|
---|
82 | #define LPT1_TIMEOUT_ADDR 0x478 /* time-out value for LPT1 */
|
---|
83 | #define LPT1_TIMEOUT_SIZE 1L
|
---|
84 | #define LPT2_TIMEOUT_ADDR 0x479 /* time-out value for LPT2 */
|
---|
85 | #define LPT2_TIMEOUT_SIZE 1L
|
---|
86 | #define LPT3_TIMEOUT_ADDR 0x47A /* time-out value for LPT3 */
|
---|
87 | #define LPT3_TIMEOUT_SIZE 1L
|
---|
88 | #define LPT4_TIMEOUT_ADDR 0x47B /* time-out for LPT4 (except PS/2) */
|
---|
89 | #define LPT4_TIMEOUT_SIZE 1L
|
---|
90 |
|
---|
91 | /* Serial ports (COM1-COM4) timeout values. */
|
---|
92 | #define COM1_TIMEOUT_ADDR 0x47C /* time-out value for COM1 */
|
---|
93 | #define COM1_TIMEOUT_SIZE 1L
|
---|
94 | #define COM2_TIMEOUT_ADDR 0x47D /* time-out value for COM2 */
|
---|
95 | #define COM2_TIMEOUT_SIZE 1L
|
---|
96 | #define COM3_TIMEOUT_ADDR 0x47E /* time-out value for COM3 */
|
---|
97 | #define COM3_TIMEOUT_SIZE 1L
|
---|
98 | #define COM4_TIMEOUT_ADDR 0x47F /* time-out value for COM4 */
|
---|
99 | #define COM4_TIMEOUT_SIZE 1L
|
---|
100 |
|
---|
101 | /* Video controller (VDU). */
|
---|
102 | #define VDU_SCREEN_ROWS_ADDR 0x484 /* screen rows (less 1, EGA+)*/
|
---|
103 | #define VDU_SCREEN_ROWS_SIZE 1L
|
---|
104 | #define VDU_FONTLINES_ADDR 0x485 /* point height of char matrix */
|
---|
105 | #define VDU_FONTLINES_SIZE 2L
|
---|
106 |
|
---|
107 | /* Video controller (VDU). */
|
---|
108 | #define VDU_VIDEO_MODE_ADDR 0x49A /* current video mode */
|
---|
109 | #define VDU_VIDEO_MODE_SIZE 1L
|
---|
110 |
|
---|
111 | /* PART III --
|
---|
112 | * The motherboard BIOS memory contains some known values that are currently
|
---|
113 | * in use. Other sections in the upper memory area (UMA) addresses vary in
|
---|
114 | * size and locus and are not further defined here. A rough map is given in
|
---|
115 | * <ibm/memory.h>.
|
---|
116 | */
|
---|
117 |
|
---|
118 | /* Machine ID (we're interested in PS/2 and AT models). */
|
---|
119 | #define MACHINE_ID_ADDR 0xFFFFE /* BIOS machine ID byte */
|
---|
120 | #define MACHINE_ID_SIZE 1L
|
---|
121 | #define PS_386_MACHINE 0xF8 /* ID byte for PS/2 modela 70/80 */
|
---|
122 | #define PC_AT_MACHINE 0xFC /* PC/AT, PC/XT286, PS/2 models 50/60 */
|
---|
123 |
|
---|
124 | #endif /* _BIOS_H */
|
---|
125 |
|
---|