source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS/Inc/RomVars.inc@ 234

Last change on this file since 234 was 233, checked in by gregli@…, 13 years ago

Serial Port: split single byte port and baud into two bytes, taking advantage of the two bytes in DPT_SERIAL, which supports more serial baud rates and in particular fixed a bug where a 4x client machine couldn't talk to a 115.2K server machine. This is a wide change, touching lots of files, but most are shallow changes. DetectPrint.asm took the most significant changes, now it calculates the baud rate to display instead of using characters provided by the Configurator. The Configurator now has a new menu flag, FLG_MENUITEM_CHOICESTRINGS, for specifying that values are not linear and they should be lookedup rather than indexed. Finally, another important bug fixed here is that in some error cases, the serial port code could get into an infinite loop waiting ont the hardware; now it has a timeout.

File size: 4.8 KB
Line 
1; Project name : XTIDE Universal BIOS
2; Description : Defines for ROMVARS struct containing variables stored
3; in BIOS ROM.
4%ifndef ROMVARS_INC
5%define ROMVARS_INC
6
7; ROM Variables. Written to the ROM image before flashing.
8struc ROMVARS
9 .wRomSign resb 2 ; ROM Signature (AA55h)
10 .bRomSize resb 1 ; ROM size in 512 byte blocks
11 .rgbJump resb 3 ; First instruction to ROM init (jmp)
12
13 .rgbSign resb 8 ; Signature for XTIDE Configurator Program
14 .szTitle resb 31 ; BIOS title string
15 .szVersion resb 25 ; BIOS version string
16
17 .wFlags resb 2 ; Word for ROM flags
18 .wDisplayMode resb 2 ; Display mode for boot menu
19 .wBootTimeout resb 2 ; Boot Menu selection timeout in system timer ticks
20 .bIdeCnt resb 1 ; Number of available IDE controllers
21 .bBootDrv resb 1 ; Boot Menu default drive
22 .bMinFddCnt resb 1 ; Minimum number of Floppy Drives
23 .bStealSize resb 1 ; Number of 1kB blocks stolen from 640kB base RAM
24
25 .ideVars0 resb IDEVARS_size
26 .ideVars1 resb IDEVARS_size
27 .ideVars2 resb IDEVARS_size
28 .ideVars3 resb IDEVARS_size
29
30%ifdef MODULE_SERIAL
31 .ideVarsSerialAuto resb IDEVARS_size
32%endif
33endstruc
34
35; Bit defines for ROMVARS.wFlags
36FLG_ROMVARS_FULLMODE EQU (1<<0) ; Full operating mode (steals base RAM, supports EBIOS etc.)
37FLG_ROMVARS_DRVXLAT EQU (1<<2) ; Enable drive number translation
38FLG_ROMVARS_SERIAL_SCANDETECT EQU (1<<3) ; Scan COM ports at the end of drive detection. Can also be invoked
39 ; by holding down the ALT key at the end of drive detection.
40 ; (Conveniently, this is 8, a fact we exploit when testing the bit)
41FLG_ROMVARS_MODULE_SERIAL EQU (1<<6) ; Here in case the configuration needs to know functionality is present
42FLG_ROMVARS_MODULE_EBIOS EQU (1<<7) ; Here in case the configuration needs to know functionality is present
43
44; Boot Menu Display Modes (see Assembly Library Display.inc for standard modes)
45DEFAULT_TEXT_MODE EQU 4
46
47
48; Controller specific variables
49struc IDEVARS
50;;; Word 0
51 .wSerialPortAndBaud: ; Serial connection port (low, divided by 4) and baud rate divisor (high)
52 .wPort: ; IDE Base Port for Command Block (usual) Registers
53 .bSerialPort resb 1
54 .bSerialBaud resb 1
55
56;;; Word 1
57 .wPortCtrl:
58 .bSerialUnused resb 1 ; IDE Base Port for Control Block Registers
59
60 .wSerialCOMPortCharAndDevice: ; In DetectPrint, we grab the COM Port char and Device at the same time
61 .bSerialCOMPortChar resb 1 ; Serial connection COM port number/letter
62
63;;; Word 2
64 .bDevice resb 1 ; Device type
65
66 .bIRQ resb 1 ; Interrupt Request Number
67
68;;; And more...
69 .drvParamsMaster resb DRVPARAMS_size
70 .drvParamsSlave resb DRVPARAMS_size
71endstruc
72
73%if IDEVARS.bSerialCOMPortChar+1 != IDEVARS.bDevice
74%erorr "IDEVARS.bSerialCOMPortChar needs to come immediately before IDEVARS.bDevice so that both bytes can be fetched at the same time inside DetectPrint.asm"
75%endif
76
77; Default values for Port and PortCtrl, shared with the configurator
78;
79DEVICE_XTIDE_DEFAULT_PORT EQU 300h
80DEVICE_XTIDE_DEFAULT_PORTCTRL EQU 308h
81DEVICE_ATA_DEFAULT_PORT EQU 1F0h
82DEVICE_ATA_DEFAULT_PORTCTRL EQU 3F0h
83
84; Device types for IDEVARS.bDevice
85;
86DEVICE_8BIT_DUAL_PORT_XTIDE EQU (0<<1)
87DEVICE_XTIDE_WITH_REVERSED_A3_AND_A0 EQU (1<<1)
88DEVICE_8BIT_SINGLE_PORT EQU (2<<1)
89DEVICE_16BIT_ATA EQU (3<<1)
90DEVICE_32BIT_ATA EQU (4<<1)
91DEVICE_SERIAL_PORT EQU (5<<1) ; must be last entry, or remove optimization in DetectPrint
92
93
94; Master/Slave drive specific parameters
95struc DRVPARAMS
96 .wFlags resb 2 ; Drive flags
97 .dwMaximumLBA: ; User specified maximum number of sectors
98 .wCylinders resb 2 ; User specified cylinders (1...16383)
99 .wHeadsAndSectors:
100 .bHeads resb 1 ; User specified Heads (1...16)
101 .bSect resb 1 ; User specified Sectors per track (1...63)
102endstruc
103
104; Bit defines for DRVPARAMS.wFlags
105FLG_DRVPARAMS_USERCHS EQU (1<<0) ; User specified P-CHS values
106FLG_DRVPARAMS_BLOCKMODE EQU (1<<1) ; Enable Block mode transfers
107FLG_DRVPARAMS_USERLBA EQU (1<<2) ; User specified LBA values
108
109;
110; COM Number to I/O Port Address Mapping
111;
112; COM Number: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
113; Corresponds to I/O port: 3f8, 2f8, 3e8, 2e8, 2f0, 3e0, 2e0, 260, 368, 268, 360, 270
114; Corresponds to Packed I/O port (hex): 37, 17, 35, 15, 16, 34, 14, 4, 25, 5, 24, 6
115;
116DEVICE_SERIAL_COM1 EQU 3f8h
117DEVICE_SERIAL_COM2 EQU 2f8h
118DEVICE_SERIAL_COM3 EQU 3e8h
119DEVICE_SERIAL_COM4 EQU 2e8h
120DEVICE_SERIAL_COM5 EQU 2f0h
121DEVICE_SERIAL_COM6 EQU 3e0h
122DEVICE_SERIAL_COM7 EQU 2e0h
123DEVICE_SERIAL_COM8 EQU 260h
124DEVICE_SERIAL_COM9 EQU 368h
125DEVICE_SERIAL_COMA EQU 268h
126DEVICE_SERIAL_COMB EQU 360h
127DEVICE_SERIAL_COMC EQU 270h
128
129
130%endif ; ROMVARS_INC
Note: See TracBrowser for help on using the repository browser.