source: xtideuniversalbios/trunk/XTIDE_Universal_BIOS/Src/Strings.asm@ 590

Last change on this file since 590 was 589, checked in by Krister Nordvall, 9 years ago

Changes:

  • BIOS: Fixed a purely cosmetic bug from r542 where, in builds containing MODULE_EBIOS, the boot menu would display an incorrect drive size (0.4 kB with MODULE_STRINGS_COMPRESSED or 0.5 kB without) for old drives with no support for LBA.
  • Fixed a bug from r392 where Vision_DetectAndReturnIDinAXandPortInDXifControllerPresent would return the ID in AL instead of AH (if DANGEROUS_DETECTION had been defined).
  • Fixed a bug from r587 in AdvAtaInit.asm that would prevent detection of QDI Vision controllers.
  • Also changed how the QDI Vision IDs are defined (removed the need for shifting) to avoid confusion. This fixed a potential bug from r587 in AdvAtaInit.asm where some IDs were not being shifted.
  • Fixed a bug in PDC20x30.asm from r587 where GetPdcIDtoAX would not return with the IDE base port in DX so DisablePdcProgrammingMode would fail.
  • Made some changes to ModuleDependency.inc and other files so that MODULE_ADVANCED_ATA now requires USE_386. Consequently it is no longer included in the regular AT-builds, only in the 386_8k-build.
  • Moved the UNROLL_SECTORS_IN_CX_TO_xWORDS macros from IDE_8bit.inc to IdeIO.inc which means it's now possible to build a BIOS without MODULE_8BIT_IDE.
  • XTIDECFG: Added a minimum DOS version check (since it needs DOS version 2+) to allow the program to quit gracefully in the unlikely scenario where someone tries to run it under DOS version 1.
  • Made some changes to Drive.asm to improve drive enumeration. The old method using GET_DOS_DRIVE_PARAMETER_BLOCK_FOR_SPECIFIC_DRIVE worked well in Windows XP but not in Windows 98 SE (in Windows or in DOS mode). The two problems were; 1) The function call would access the drives which on single floppy drive systems would cause Windows to swap between A: and B: (throwing a blue screen asking the user to insert a disk etc). 2) Only floppy drives and FAT16 drives would be available in the list of drives, no FAT32/optical/network drives.
  • Improved code in IdeControllerMenu.asm so that the default port addresses for all IDE interfaces are now restored when (re-)selecting the (same) type of IDE device.
  • Also made it impossible to select a device type unless the required module is included in the loaded BIOS.
  • The version check done when loading a BIOS now uses the FLASH_SIGNATURE definition from Version.inc. Any changes affecting RomVars now only requires updating that definition. This means that changes to RomVars must be implemented in both the BIOS and XTIDECFG before being committed to the repository.
  • Added a compatibility fix for 3Com 3C503 cards to the ROM checksumming code in Buffers.asm (Buffers_GenerateChecksum).
  • SerDrive: Made some minor changes to file names and paths to improve compatibility with case sensitive environments.
  • BIOSDRVS: Made a minor size optimization which as a side effect also makes it compatible with all DOS versions including DOS version 1.
  • Library: Renamed the WAIT_RETRACE_IF_NECESSARY_THEN macro to CALL_WAIT_FOR_RETRACE_IF_NECESSARY_THEN and made a tail-call-optimized version of it (JMP_WAIT_FOR_RETRACE_IF_NECESSARY_THEN).
  • A speed optimization to the eRCL_IM macro for 386 and higher. This change breaks emulation in the sense that the macro will fail when given a memory operand as the first parameter.
  • Other minor optimizations and fixes.
File size: 13.2 KB
RevLine 
[88]1; Project name : XTIDE Universal BIOS
[3]2; Description : Strings and equates for BIOS messages.
3
[376]4;
[491]5; XTIDE Universal BIOS and Associated Tools
[526]6; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2013 by XTIDE Universal BIOS Team.
[376]7;
8; This program is free software; you can redistribute it and/or modify
9; it under the terms of the GNU General Public License as published by
10; the Free Software Foundation; either version 2 of the License, or
11; (at your option) any later version.
[491]12;
[376]13; This program is distributed in the hope that it will be useful,
14; but WITHOUT ANY WARRANTY; without even the implied warranty of
15; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16; GNU General Public License for more details.
[491]17; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
18;
[376]19
[186]20%ifdef MODULE_STRINGS_COMPRESSED_PRECOMPRESS
[242]21 %include "Display.inc"
[186]22%endif
23
[3]24; Section containing code
25SECTION .text
26
[334]27; The following strings are used by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP
28; To support an optimization in that code, these strings must start on the same 256 byte page,
29; which is checked at assembly time below.
30;
31g_szDetectStart:
32g_szDetectMaster: db "Master",NULL
33g_szDetectSlave: db "Slave ",NULL
34g_szDetectOuter: db "%s at %s: ",NULL
[415]35%ifdef MODULE_SERIAL
[491]36g_szDetectCOM: db "COM%c%s",NULL
[334]37g_szDetectCOMAuto: db " Detect",NULL
38g_szDetectCOMSmall: db "/%u%u00",NULL ; IDE Master at COM1/9600:
39g_szDetectCOMLarge: db "/%u.%uK",NULL ; IDE Master at COM1/19.2K:
[415]40%endif
[334]41g_szDetectEnd:
[491]42g_szDetectPort: db "%x",NULL ; IDE Master at 1F0h:
[334]43
44%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
45 %if ((g_szDetectEnd-$$) & 0xff00) <> ((g_szDetectStart-$$) & 0xff00)
[491]46 %error "g_szDetect* strings must start on the same 256 byte page, required by DetectPrint_StartDetectWithMasterOrSlaveStringInCXandIdeVarsInCSBP. Please move this block up or down within Strings.asm"
[334]47 %endif
48%endif
49
[415]50
[491]51; POST drive detection strings
52g_szDashForZero: db "- ",NULL ; Required by Display Library
53g_szRomAt: db LF,CR
54 db "%s @ %x",LF,CR ; -=XTIDE ... =- @ Segment
55 db "%s",LF,CR ; version string
56 db "Released under GNU GPL v2",LF,CR
57 db LF,CR,NULL
58%ifdef MODULE_BOOT_MENU
59g_szBootMenuTitle: db "%s%c",LF,CR ; -=XTIDE ... =- and null (eaten)
60 db "%s",NULL ; version string
61%endif
62g_szDriveName: db "%z",LF,CR,NULL
63
64
[415]65; Boot loader strings
66g_szTryToBoot: db "Booting %c",ANGLE_QUOTE_RIGHT,"%c",LF,CR,NULL
[492]67g_szBootSectorNotFound: db "Boot sector " ; String fall through...
[415]68g_szNotFound: db "not found",LF,CR,NULL
69g_szReadError: db "Error %x!",LF,CR,NULL
70
71
72%ifdef MODULE_HOTKEYS
73; Hotkey Bar strings
[492]74g_szFDD: db "FDD [%c]",NULL ; "FDD [A]"
75g_szHDD: db "HDD [%c]",NULL ; "HDD [C]"
76%ifdef MODULE_BOOT_MENU
77g_szBootMenu: db "BootMnu%c",NULL ; "BootMnu", location of %c doesn't matter
78%endif ; MODULE_BOOT_MENU
79g_szHotkey: db "%A%c%c%A%s%A ",NULL ; "C»HDD [A] ", "F2BootMnu " or "F8RomBoot "
80%ifdef MODULE_SERIAL
81g_szHotComDetect: db "ComDtct%c",NULL ; "ComDtct", location of %c doesn't matter
82%endif ; MODULE_SERIAL
83%endif ; MODULE_HOTKEYS
[415]84
[492]85%ifdef MODULE_BOOT_MENU
86g_szRomBootDash: db " - " ; String fall through to g_szRomBoot
87%endif
[505]88%ifdef MODULE_HOTKEYS OR MODULE_BOOT_MENU
89g_szRomBoot: db "Rom%cBoot",NULL ; "RomBoot" or "Rom Boot"
[492]90%endif
[415]91
[505]92
[415]93%ifdef MODULE_BOOT_MENU
[334]94; Boot Menu Floppy Disk strings
95;
96; The following strings are used by BootMenuPrint_RefreshInformation
97; To support optimizations in that code, these strings must start on the same 256 byte page,
98; which is checked at assembly time below.
99;
100g_szFddStart:
[491]101g_szFddUnknown: db "Unknown",NULL
102g_szFddSizeOr: db "5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL
103g_szFddSize: db "%s",QUOTATION_MARK,", %u kiB",NULL ; 3½", 1440 kiB
104g_szFddThreeHalf: db "3",ONE_HALF,NULL
[334]105g_szFddEnd:
[491]106g_szFddFiveQuarter: db "5",ONE_QUARTER,NULL
[334]107
108%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
109 %if ((g_szFddStart-$$) & 0xff00) <> ((g_szFddEnd-$$) & 0xff00)
[491]110 %error "g_szFdd* strings must start on the same 256 byte page, required by the BootMenuPrint_RefreshInformation routines for floppy drives. Please move this block up or down within Strings.asm"
[334]111 %endif
112%endif
113
[322]114
115g_szAddressingModes:
[421]116g_szNORMAL: db "NORMAL",NULL
117g_szLARGE: db "LARGE ",NULL
118g_szLBA: db "LBA ",NULL
119g_szAddressingModes_Displacement equ (g_szLARGE - g_szAddressingModes)
[322]120;
121; Ensure that addressing modes are correctly spaced in memory
122;
123%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
[421]124 %if g_szNORMAL <> g_szAddressingModes
[322]125 %error "g_szAddressingModes Displacement Incorrect 1"
126 %endif
[421]127 %if g_szLARGE <> g_szNORMAL + g_szAddressingModes_Displacement
[322]128 %error "g_szAddressingModes Displacement Incorrect 2"
129 %endif
[421]130 %if g_szLBA <> g_szLARGE + g_szAddressingModes_Displacement
[322]131 %error "g_szAddressingModes Displacement Incorrect 3"
132 %endif
133%endif
134
[491]135
[473]136g_szDeviceTypeValues:
[588]137g_szDeviceTypeValues_16bit: db " 16",NULL
[589]138%ifdef MODULE_ADVANCED_ATA OR MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
[588]139g_szDeviceTypeValues_32bit: db " 32",NULL
[589]140%ifdef MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
[588]141g_szDeviceTypeValues_8bit: db " 8",NULL
142g_szDeviceTypeValues_XTIDEr1: db "D8 ",NULL ; Dual 8-bit
143g_szDeviceTypeValues_XTIDEr2: db "X8 ",NULL ; A0<->A3 swapped 8-bit
[589]144%ifdef MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
[588]145g_szDeviceTypeValues_XTCFpio8: db "T8 ",NULL ; True 8-bit
146g_szDeviceTypeValues_XTCFpio8BIU: db "T8B",NULL
147g_szDeviceTypeValues_XTCFpio16BIU: db "16B",NULL
148g_szDeviceTypeValues_XTCFdma: db "8MA",NULL ; DMA 8-bit
149g_szDeviceTypeValues_JrIde: db "M8 ",NULL ; Memory Mapped 8-bit
150g_szDeviceTypeValues_ADP50L: db "M8 ",NULL ; Memory Mapped 8-bit
[589]151%ifdef MODULE_SERIAL
[588]152g_szDeviceTypeValues_Serial: db "SER",NULL
[589]153%endif ; MODULE_SERIAL
154%endif ; MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
155%endif ; MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
156%endif ; MODULE_ADVANCED_ATA OR MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
[417]157
[589]158g_szDeviceTypeValues_Displacement equ 3 ; 3 compressed, 4 uncompressed
159;g_szDeviceTypeValues_Displacement equ (g_szDeviceTypeValues_32bit - g_szDeviceTypeValues)
[185]160;
[473]161; Ensure that device type strings are correctly spaced in memory
[185]162;
[242]163%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
[473]164 %if g_szDeviceTypeValues_16bit <> g_szDeviceTypeValues
165 %error "g_szDeviceTypeValues Displacement Incorrect 1"
[242]166 %endif
[589]167
168 %ifdef MODULE_ADVANCED_ATA OR MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
169
[486]170 %if g_szDeviceTypeValues_32bit <> g_szDeviceTypeValues_16bit + g_szDeviceTypeValues_Displacement
[473]171 %error "g_szDeviceTypeValues Displacement Incorrect 2"
[242]172 %endif
[589]173
174 %ifdef MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
175
[486]176 %if g_szDeviceTypeValues_8bit <> g_szDeviceTypeValues_32bit + g_szDeviceTypeValues_Displacement
[588]177 %error "g_szDeviceTypeValues Displacement Incorrect 3"
[486]178 %endif
179 %if g_szDeviceTypeValues_XTIDEr1 <> g_szDeviceTypeValues_8bit + g_szDeviceTypeValues_Displacement
[588]180 %error "g_szDeviceTypeValues Displacement Incorrect 4"
[242]181 %endif
[473]182 %if g_szDeviceTypeValues_XTIDEr2 <> g_szDeviceTypeValues_XTIDEr1 + g_szDeviceTypeValues_Displacement
[588]183 %error "g_szDeviceTypeValues Displacement Incorrect 5"
[242]184 %endif
[589]185
186 %ifdef MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
187
[473]188 %if g_szDeviceTypeValues_XTCFpio8 <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement
189 %error "g_szDeviceTypeValues Displacement Incorrect 6"
[242]190 %endif
[588]191 %if g_szDeviceTypeValues_XTCFpio8BIU <> g_szDeviceTypeValues_XTCFpio8 + g_szDeviceTypeValues_Displacement
[473]192 %error "g_szDeviceTypeValues Displacement Incorrect 7"
[285]193 %endif
[588]194 %if g_szDeviceTypeValues_XTCFpio16BIU <> g_szDeviceTypeValues_XTCFpio8BIU + g_szDeviceTypeValues_Displacement
[473]195 %error "g_szDeviceTypeValues Displacement Incorrect 8"
196 %endif
[588]197 %if g_szDeviceTypeValues_XTCFdma <> g_szDeviceTypeValues_XTCFpio16BIU + g_szDeviceTypeValues_Displacement
[473]198 %error "g_szDeviceTypeValues Displacement Incorrect 9"
199 %endif
[588]200 %if g_szDeviceTypeValues_JrIde <> g_szDeviceTypeValues_XTCFdma + g_szDeviceTypeValues_Displacement
[536]201 %error "g_szDeviceTypeValues Displacement Incorrect 10"
202 %endif
[588]203 %if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
204 %error "g_szDeviceTypeValues Displacement Incorrect 11"
205 %endif
[589]206
207 %ifdef MODULE_SERIAL
208
[588]209 %if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement
210 %error "g_szDeviceTypeValues Displacement Incorrect 12"
211 %endif
[589]212
213 %endif ; MODULE_SERIAL
214 %endif ; MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
215 %endif ; MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
216 %endif ; MODULE_ADVANCED_ATA OR MODULE_8BIT_IDE OR MODULE_8BIT_IDE_ADVANCED OR MODULE_SERIAL
217
[185]218%endif
[242]219
[332]220
[491]221g_szSelectionTimeout: db DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2-u s",NULL
[332]222
[277]223
[334]224; Boot Menu menuitem strings
225;
226; The following strings are used by BootMenuPrint_* routines.
227; To support optimizations in that code, these strings must start on the same 256 byte page,
[332]228; which is checked at assembly time below.
229;
[492]230g_szDriveNumSpace: db " " ; leading space, used if drive number is less than 0fh
231 ; must come immediately before g_szDriveNum!
[334]232g_szBootMenuPrintStart:
233g_szDriveNum: db "%x %s",NULL
[492]234g_szDriveNumBNSpace: db " " ; leading space, used if drive number is less than 0fh
235 ; must come immediately before g_szDriveNumBOOTNFO!
[334]236g_szDriveNumBOOTNFO: db "%x %z",NULL
237g_szFloppyDrv: db "Floppy Drive %c",NULL
238g_szBootMenuPrintEnd:
239g_szForeignHD: db "Foreign Hard Disk",NULL
[332]240
241%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
[334]242 %if ((g_szBootMenuPrintStart-$$) & 0xff00) <> ((g_szBootMenuPrintEnd-$$) & 0xff00)
[491]243 %error "g_szBootMenuPrint* strings must start on the same 256 byte page, required by the BootMenuPrint_* routines. Please move this block up or down within Strings.asm"
[332]244 %endif
[492]245 %if g_szDriveNumSpace+1 != g_szDriveNum || g_szDriveNumBNSpace+1 != g_szDriveNumBOOTNFO
246 %error "g_szDriveNumSpace or g_szDriveNumBNSpace are out of position"
247 %endif
[332]248%endif
[415]249
[536]250
251; Boot Menu information strings
252g_szCapacity: db "Capacity : %s",NULL
253g_szCapacityNum: db "%5-u.%u %ciB",NULL
254g_szInformation: db "%s",LF,CR
255 db "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR
256 db "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL
257
[415]258%endif ; MODULE_BOOT_MENU
259
260
[197]261;------------------------------------------------------------------------------------------
[242]262;
[197]263; Tables for StringsCompress.pl
264;
[488]265; Items can be added and removed from this table as needed, with the following rules:
266; * Formats follow the special characters. But other than that, order makes no difference.
267; * Some of the formats require "even" and "odd" numbering. Even tells the code that
268; it is a "number-" format, otherwise it doesn't interpret a number first. The easiest
269; way to maintain this is to move one of the "n/a" items to/from the front of the format
270; list to maintain the even/odd.
271; * Values do not need to remain consistent across versions. This table is only used
272; internally to this file.
273; * There can only be 32 of these (0-31).
274; * Keeping the list short is good - this translates to a table in the compressed version.
[491]275; An error will be reported if a character or format is no longer being used by any
[488]276; strings above.
277; * Please keep items sequential for ease of further editing.
278;
[197]279;$translate{ord(' ')} = 0;
280;$translate{172} = 1; # ONE_QUARTER
281;$translate{171} = 2; # ONE_HALF
282;$translate{179} = 3; # SINGLE_VERTICAL
283;$translate{175} = 4; # ANGLE_QUOTE_RIGHT
284;$translate{ord('!')} = 5;
285;$translate{ord('"')} = 6;
286;$translate{ord(',')} = 7;
287;$translate{ord('-')} = 8;
288;$translate{ord('.')} = 9;
289;$translate{ord('/')} = 10;
[242]290;$translate{ord('1')} = 11;
[197]291;$translate{ord('2')} = 12;
292;$translate{ord('3')} = 13;
[488]293;$translate{ord('5')} = 14;
294;$translate{ord('6')} = 15;
295;$translate{ord('8')} = 16;
296;$translate{200} = 17; # DOUBLE_BOTTOM_LEFT_CORNER
297;$translate{181} = 18; # DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL
298;$translate{ord('0')} = 19;
[197]299;
300; Formats begin immediately after the last Translated character (they are in the same table)
301;
[488]302;$format_begin = 20;
[197]303;
[488]304;$format{"2-I"} = 20; # must be even
305;$format{"u"} = 21; # must be odd
306;$format{"5-u"} = 22; # must be even
307;$format{"x"} = 23; # must be odd
308;$format{"5-x"} = 24; # must be even
309;$format{"nl"} = 25; # n/a
310;$format{"2-u"} = 26; # must be even
311;$format{"A"} = 27; # n/a
312;$format{"c"} = 28; # n/a
313;$format{"s"} = 29; # n/a, normal string from DS
314;$format{"z"} = 30; # n/a, boot string from BDA
[197]315;
316; NOTE: The last $format cannot exceed 31 (stored in a 5-bit quantity).
317;
318; Starting point for the "normal" range, typically around 0x40 to cover upper and lower case
[242]319; letters. If lower case 'z' is not used, 0x3a can be a good choice as it adds ':' to the
[197]320; front end.
321;
322;$normal_base = 0x3a;
323;
324; End of StringsCompress.pl information
325;
326;------------------------------------------------------------------------------------------
Note: See TracBrowser for help on using the repository browser.