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

Last change on this file since 545 was 536, checked in by krille_n_@…, 11 years ago

Changes:

  • Added support for the Silicon Valley Computer ADP50L controller (and possibly other IDE controllers from SVC using memory mapped I/O). Please note that this has not been tested in any way since I don't have any of these cards myself (make backups before trying this on drives with important data). Also, *if* it works, make sure it works reliably (stress test the disk system). Some things you should know: 1) Autodetection for this controller has not been added to XTIDECFG, you need to manually select the "SVC ADP50L" controller (and possibly change the BIOS segment address if not using the default of C800h). 2) The memory mapped I/O window is inside the ROM address space of the controller. The XTIDE Universal BIOS currently do not support this so that means you need to use another ROM (for example, an XTIDE or XTCF card or the BOOT ROM of a NIC). This presents another problem, the original ADP50L BIOS needs to be disabled somehow to avoid conflicts. Either pull the ROM chip or disable the BIOS by removing jumper J3. Note, I have no idea if any of this will actually work. It's basically a shot in the dark.
File size: 11.9 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:
[491]137g_szDeviceTypeValues_16bit:     db  " 16",NULL
138g_szDeviceTypeValues_32bit:     db  " 32",NULL
139g_szDeviceTypeValues_8bit:      db  "  8",NULL
140g_szDeviceTypeValues_XTIDEr1:   db  "D8 ",NULL  ; Dual 8-bit
141g_szDeviceTypeValues_XTIDEr2:   db  "X8 ",NULL  ; A0<->A3 swapped 8-bit
142g_szDeviceTypeValues_XTCFpio8:  db  "T8 ",NULL  ; True 8-bit
143g_szDeviceTypeValues_XTCFdma:   db  "8MA",NULL  ; DMA 8-bit
144g_szDeviceTypeValues_XTCFmem:   db  "M8 ",NULL  ; Memory Mapped 8-bit
145g_szDeviceTypeValues_JrIde:     db  "M8 ",NULL
[536]146g_szDeviceTypeValues_ADP50L:    db  "M8 ",NULL
[491]147g_szDeviceTypeValues_Serial:    db  "SER",NULL
[417]148
[473]149g_szDeviceTypeValues_Displacement equ (g_szDeviceTypeValues_32bit - g_szDeviceTypeValues)
[185]150;
[473]151; Ensure that device type strings are correctly spaced in memory
[185]152;
[242]153%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
[473]154    %if g_szDeviceTypeValues_16bit <> g_szDeviceTypeValues
155        %error "g_szDeviceTypeValues Displacement Incorrect 1"
[242]156    %endif
[486]157    %if g_szDeviceTypeValues_32bit <> g_szDeviceTypeValues_16bit + g_szDeviceTypeValues_Displacement
[473]158        %error "g_szDeviceTypeValues Displacement Incorrect 2"
[242]159    %endif
[486]160    %if g_szDeviceTypeValues_8bit <> g_szDeviceTypeValues_32bit + g_szDeviceTypeValues_Displacement
161        %error "g_szDeviceTypeValues Displacement Incorrect 2"
162    %endif
163    %if g_szDeviceTypeValues_XTIDEr1 <> g_szDeviceTypeValues_8bit + g_szDeviceTypeValues_Displacement
[473]164        %error "g_szDeviceTypeValues Displacement Incorrect 3"
[242]165    %endif
[473]166    %if g_szDeviceTypeValues_XTIDEr2 <> g_szDeviceTypeValues_XTIDEr1 + g_szDeviceTypeValues_Displacement
167        %error "g_szDeviceTypeValues Displacement Incorrect 4"
[242]168    %endif
[473]169    %if g_szDeviceTypeValues_XTCFpio8 <> g_szDeviceTypeValues_XTIDEr2 + g_szDeviceTypeValues_Displacement
170        %error "g_szDeviceTypeValues Displacement Incorrect 5"
[242]171    %endif
[473]172    %if g_szDeviceTypeValues_XTCFdma <> g_szDeviceTypeValues_XTCFpio8 + g_szDeviceTypeValues_Displacement
173        %error "g_szDeviceTypeValues Displacement Incorrect 6"
[242]174    %endif
[473]175    %if g_szDeviceTypeValues_XTCFmem <> g_szDeviceTypeValues_XTCFdma + g_szDeviceTypeValues_Displacement
176        %error "g_szDeviceTypeValues Displacement Incorrect 7"
[285]177    %endif
[473]178    %if g_szDeviceTypeValues_JrIde <> g_szDeviceTypeValues_XTCFmem + g_szDeviceTypeValues_Displacement
179        %error "g_szDeviceTypeValues Displacement Incorrect 8"
180    %endif
[536]181    %if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement
[473]182        %error "g_szDeviceTypeValues Displacement Incorrect 9"
183    %endif
[536]184    %if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement
185        %error "g_szDeviceTypeValues Displacement Incorrect 10"
186    %endif
[185]187%endif
[242]188
[332]189
[491]190g_szSelectionTimeout:   db  DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2-u s",NULL
[332]191
[277]192
[334]193; Boot Menu menuitem strings
194;
195; The following strings are used by BootMenuPrint_* routines.
196; To support optimizations in that code, these strings must start on the same 256 byte page,
[332]197; which is checked at assembly time below.
198;
[492]199g_szDriveNumSpace:      db  " "                         ; leading space, used if drive number is less than 0fh
200                                                        ; must come immediately before g_szDriveNum!
[334]201g_szBootMenuPrintStart:
202g_szDriveNum:           db  "%x %s",NULL
[492]203g_szDriveNumBNSpace:    db  " "                         ; leading space, used if drive number is less than 0fh
204                                                        ; must come immediately before g_szDriveNumBOOTNFO!
[334]205g_szDriveNumBOOTNFO:    db  "%x %z",NULL
206g_szFloppyDrv:          db  "Floppy Drive %c",NULL
207g_szBootMenuPrintEnd:
208g_szForeignHD:          db  "Foreign Hard Disk",NULL
[332]209
210%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
[334]211    %if ((g_szBootMenuPrintStart-$$) & 0xff00) <> ((g_szBootMenuPrintEnd-$$) & 0xff00)
[491]212        %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]213    %endif
[492]214    %if g_szDriveNumSpace+1 != g_szDriveNum || g_szDriveNumBNSpace+1 != g_szDriveNumBOOTNFO
215        %error "g_szDriveNumSpace or g_szDriveNumBNSpace are out of position"
216    %endif
[332]217%endif
[415]218
[536]219
220; Boot Menu information strings
221g_szCapacity:           db  "Capacity : %s",NULL
222g_szCapacityNum:        db  "%5-u.%u %ciB",NULL
223g_szInformation:        db  "%s",LF,CR
224                        db  "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR
225                        db  "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL
226
[415]227%endif ; MODULE_BOOT_MENU
228
229
[197]230;------------------------------------------------------------------------------------------
[242]231;
[197]232; Tables for StringsCompress.pl
233;
[488]234; Items can be added and removed from this table as needed, with the following rules:
235;  * Formats follow the special characters.  But other than that, order makes no difference.
236;  * Some of the formats require "even" and "odd" numbering.  Even tells the code that
237;    it is a "number-" format, otherwise it doesn't interpret a number first.  The easiest
238;    way to maintain this is to move one of the "n/a" items to/from the front of the format
239;    list to maintain the even/odd.
240;  * Values do not need to remain consistent across versions.  This table is only used
241;    internally to this file.
242;  * There can only be 32 of these (0-31).
243;  * Keeping the list short is good - this translates to a table in the compressed version.
[491]244;    An error will be reported if a character or format is no longer being used by any
[488]245;    strings above.
246;  * Please keep items sequential for ease of further editing.
247;
[197]248;$translate{ord(' ')} = 0;
249;$translate{172}      = 1;     # ONE_QUARTER
250;$translate{171}      = 2;     # ONE_HALF
251;$translate{179}      = 3;     # SINGLE_VERTICAL
252;$translate{175}      = 4;     # ANGLE_QUOTE_RIGHT
253;$translate{ord('!')} = 5;
254;$translate{ord('"')} = 6;
255;$translate{ord(',')} = 7;
256;$translate{ord('-')} = 8;
257;$translate{ord('.')} = 9;
258;$translate{ord('/')} = 10;
[242]259;$translate{ord('1')} = 11;
[197]260;$translate{ord('2')} = 12;
261;$translate{ord('3')} = 13;
[488]262;$translate{ord('5')} = 14;
263;$translate{ord('6')} = 15;
264;$translate{ord('8')} = 16;
265;$translate{200}      = 17;    # DOUBLE_BOTTOM_LEFT_CORNER
266;$translate{181}      = 18;    # DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL
267;$translate{ord('0')} = 19;
[197]268;
269; Formats begin immediately after the last Translated character (they are in the same table)
270;
[488]271;$format_begin = 20;
[197]272;
[488]273;$format{"2-I"} = 20;        # must be even
274;$format{"u"}   = 21;        # must be odd
275;$format{"5-u"} = 22;        # must be even
276;$format{"x"}   = 23;        # must be odd
277;$format{"5-x"} = 24;        # must be even
278;$format{"nl"}  = 25;        # n/a
279;$format{"2-u"} = 26;        # must be even
280;$format{"A"}   = 27;        # n/a
281;$format{"c"}   = 28;        # n/a
282;$format{"s"}   = 29;        # n/a, normal string from DS
283;$format{"z"}   = 30;        # n/a, boot string from BDA
[197]284;
285; NOTE: The last $format cannot exceed 31 (stored in a 5-bit quantity).
286;
287; Starting point for the "normal" range, typically around 0x40 to cover upper and lower case
[242]288; letters.  If lower case 'z' is not used, 0x3a can be a good choice as it adds ':' to the
[197]289; front end.
290;
291;$normal_base = 0x3a;
292;
293; End of StringsCompress.pl information
294;
295;------------------------------------------------------------------------------------------
Note: See TracBrowser for help on using the repository browser.