Changeset 241 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm


Ignore:
Timestamp:
Feb 9, 2012, 11:08:59 AM (12 years ago)
Author:
gregli@…
google:author:
gregli@hotmail.com
Message:

Space optimizations in the Boot Menu and BootInfo routines, taking advantage of nested %s. Optimization in the init of RamVars to avoid writing the signature twice. Preparing for addition of serial floppy support, starting to break the assumption that our drives are always 80h or higher.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm

    r233 r241  
    1717SECTION .text
    1818
     19; The following strings are used by DetectPrint_StartDetectWithMasterOrSlaveStringInAXandIdeVarsInCSBP
     20; To support an optimization in that code, these strings must start on the same 256 byte page,
     21; which is checked at assembly time below.
     22;
     23g_szDetectStart:       
     24g_szDetectMaster:       ; db    "Master",NULL
     25                        ; db     4dh,  61h,  73h,  74h,  65h,  72h,  00h    ; uncompressed
     26                          db     53h,  67h,  79h,  7ah,  6bh, 0b8h          ; compressed
     27
     28g_szDetectSlave:        ; db    "Slave ",NULL
     29                        ; db     53h,  6ch,  61h,  76h,  65h,  20h,  00h    ; uncompressed
     30                          db     59h,  72h,  67h,  7ch,  6bh,  00h          ; compressed
     31
     32g_szDetectOuter:        ; db    "IDE %s at %s: ",NULL
     33                        ; db     49h,  44h,  45h,  20h,  25h,  73h,  20h,  61h,  74h,  20h,  25h,  73h,  3ah,  20h,  00h    ; uncompressed
     34                          db     4fh,  4ah, 0cbh,  3eh,  20h,  67h, 0fah,  3eh,  40h,  00h                                  ; compressed
     35
     36g_szDetectPort:         ; db    "%x",NULL                       ; IDE Master at 1F0h:
     37                        ; db     25h,  78h,  00h    ; uncompressed
     38                          db     19h                ; compressed
     39
     40g_szDetectCOM:          ; db  "COM%c%s",NULL           
     41                        ; db   43h,  4fh,  4dh,  25h,  63h,  25h,  73h,  00h    ; uncompressed
     42                          db   49h,  55h,  53h,  35h,  1eh                      ; compressed
     43
     44g_szDetectCOMAuto:      ; db    " Auto",NULL
     45                        ; db     20h,  41h,  75h,  74h,  6fh,  00h    ; uncompressed
     46                          db     20h,  47h,  7bh,  7ah, 0b5h          ; compressed
     47
     48g_szDetectCOMSmall:     ; db    "/%u%u00",NULL                  ; IDE Master at COM1/9600:
     49                        ; db     2fh,  25h,  75h,  25h,  75h,  30h,  30h,  00h    ; uncompressed
     50                          db     2ah,  37h,  37h,  34h,  14h                      ; compressed
     51
     52g_szDetectEnd:
     53g_szDetectCOMLarge:     ; db    "/%u.%uK",NULL                  ; IDE Master at COM1/19.2K:
     54                        ; db     2fh,  25h,  75h,  2eh,  25h,  75h,  4bh,  00h    ; uncompressed
     55                          db     2ah,  37h,  29h,  37h,  91h                      ; compressed
     56
     57
     58%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS               
     59%if ((g_szDetectEnd-$$) & 0xff00) <> ((g_szDetectStart-$$) & 0xff00)
     60%error "g_szDetect* strings must start on the same 256 byte page, required by DetectPrint_StartDetectWithMasterOrSlaveStringInAXandIdeVarsInCSBP.  Please move this block up or down within strings.asm"
     61%endif
     62%endif
     63
     64; Boot Menu menuitem strings
     65;
     66; The following strings are used by BootMenuPrint_* routines.
     67; To support optimizations in that code, these strings must start on the same 256 byte page,
     68; which is checked at assembly time below.
     69;       
     70g_szBootMenuPrintStart:
     71g_szDriveNum:           ; db    "%x %s",NULL
     72                        ; db     25h,  78h,  20h,  25h,  73h,  00h    ; uncompressed
     73                          db     39h,  20h,  1eh                      ; compressed
     74
     75g_szDriveNumBOOTNFO:    ; db    "%x %z",NULL
     76                        ; db     25h,  78h,  20h,  25h,  7ah,  00h    ; uncompressed
     77                          db     39h,  20h,  1fh                      ; compressed
     78
     79g_szFloppyDrv:          ; db    "Floppy Drive %c",NULL
     80                        ; db     46h,  6ch,  6fh,  70h,  70h,  79h,  20h,  44h,  72h,  69h,  76h,  65h,  20h,  25h,  63h,  00h    ; uncompressed
     81                          db     4ch,  72h,  75h,  76h,  76h, 0ffh,  4ah,  78h,  6fh,  7ch, 0ebh,  15h                            ; compressed
     82
     83g_szBootMenuPrintEnd:   
     84g_szForeignHD:          ; db    "Foreign Hard Disk",NULL
     85                        ; db     46h,  6fh,  72h,  65h,  69h,  67h,  6eh,  20h,  48h,  61h,  72h,  64h,  20h,  44h,  69h,  73h,  6bh,  00h    ; uncompressed
     86                          db     4ch,  75h,  78h,  6bh,  6fh,  6dh, 0f4h,  4eh,  67h,  78h, 0eah,  4ah,  6fh,  79h, 0b1h                      ; compressed
     87
     88
     89%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS               
     90%if ((g_szBootMenuPrintStart-$$) & 0xff00) <> ((g_szBootMenuPrintEnd-$$) & 0xff00)
     91%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"
     92%endif
     93%endif
     94
    1995; POST drive detection strings
    2096g_szRomAt:      ; db    "%s @ %x",LF,CR,NULL
     
    2399
    24100
    25 ; The following strings are used by DetectPrint_StartDetectWithMasterOrSlaveStringInAXandIdeVarsInCSBP
    26 ; To support an optimization in that code, these strings must start on the same 256 byte page,
    27 ; which is checked at assembly time below.
    28 ;
    29 g_szDetectStart:       
    30 g_szDetectMaster:       ; db    "Master",NULL
    31                         ; db     4dh,  61h,  73h,  74h,  65h,  72h,  00h    ; uncompressed
    32                           db     53h,  67h,  79h,  7ah,  6bh, 0b8h          ; compressed
    33 
    34 g_szDetectSlave:        ; db    "Slave ",NULL
    35                         ; db     53h,  6ch,  61h,  76h,  65h,  20h,  00h    ; uncompressed
    36                           db     59h,  72h,  67h,  7ch,  6bh,  00h          ; compressed
    37 
    38 g_szDetectOuter:        ; db    "IDE %s at %s: ",NULL
    39                         ; db     49h,  44h,  45h,  20h,  25h,  73h,  20h,  61h,  74h,  20h,  25h,  73h,  3ah,  20h,  00h    ; uncompressed
    40                           db     4fh,  4ah, 0cbh,  3eh,  20h,  67h, 0fah,  3eh,  40h,  00h                                  ; compressed
    41 
    42 g_szDetectPort:         ; db    "%x",NULL                       ; IDE Master at 1F0h:
    43                         ; db     25h,  78h,  00h    ; uncompressed
    44                           db     19h                ; compressed
    45 
    46 g_szDetectCOM:          ; db  "COM%c%s",NULL           
    47                         ; db   43h,  4fh,  4dh,  25h,  63h,  25h,  73h,  00h    ; uncompressed
    48                           db   49h,  55h,  53h,  35h,  1eh                      ; compressed
    49 
    50 g_szDetectCOMAuto:      ; db    " Auto",NULL
    51                         ; db     20h,  41h,  75h,  74h,  6fh,  00h    ; uncompressed
    52                           db     20h,  47h,  7bh,  7ah, 0b5h          ; compressed
    53 
    54 g_szDetectCOMSmall:     ; db    "/%u%u00",NULL                  ; IDE Master at COM1/9600:
    55                         ; db     2fh,  25h,  75h,  25h,  75h,  30h,  30h,  00h    ; uncompressed
    56                           db     2ah,  37h,  37h,  34h,  14h                      ; compressed
    57 
    58 g_szDetectEnd:
    59 g_szDetectCOMLarge:     ; db    "/%u.%uK",NULL                  ; IDE Master at COM1/19.2K:
    60                         ; db     2fh,  25h,  75h,  2eh,  25h,  75h,  4bh,  00h    ; uncompressed
    61                           db     2ah,  37h,  29h,  37h,  91h                      ; compressed
    62 
    63 
    64 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS               
    65 %if ((g_szDetectEnd-$$) & 0xff00) <> ((g_szDetectStart-$$) & 0xff00)
    66 %error "g_szDetect* strings must be on the same 256 byte page, required by DetectPrint_StartDetectWithMasterOrSlaveStringInAXandIdeVarsInCSBP.  Please move this block up or down within strings.asm"
    67 %endif
    68 %endif             
    69 
    70101; Boot loader strings
    71102g_szTryToBoot:          ; db    "Booting from %s %x",ANGLE_QUOTE_RIGHT,"%x",LF,CR,NULL
     
    104135
    105136
    106 
    107 ; Boot Menu menuitem strings
    108 g_szDriveNum:   ; db    "%x ",NULL
    109                 ; db     25h,  78h,  20h,  00h    ; uncompressed
    110                   db     39h,  00h                ; compressed
    111 
    112 g_szFDLetter:   ; db    "%s %c",NULL
    113                 ; db     25h,  73h,  20h,  25h,  63h,  00h    ; uncompressed
    114                   db     3eh,  20h,  15h                      ; compressed
    115 
    116 g_szFloppyDrv:  ; db    "Floppy Drive",NULL
    117                 ; db     46h,  6ch,  6fh,  70h,  70h,  79h,  20h,  44h,  72h,  69h,  76h,  65h,  00h    ; uncompressed
    118                   db     4ch,  72h,  75h,  76h,  76h, 0ffh,  4ah,  78h,  6fh,  7ch, 0abh                ; compressed
    119 
    120 g_szforeignHD:  ; db    "Foreign Hard Disk",NULL
    121                 ; db     46h,  6fh,  72h,  65h,  69h,  67h,  6eh,  20h,  48h,  61h,  72h,  64h,  20h,  44h,  69h,  73h,  6bh,  00h    ; uncompressed
    122                   db     4ch,  75h,  78h,  6bh,  6fh,  6dh, 0f4h,  4eh,  67h,  78h, 0eah,  4ah,  6fh,  79h, 0b1h                      ; compressed
    123 
    124 
    125137; Boot Menu information strings
    126 g_szCapacity:   ; db    "Capacity : ",NULL
    127                 ; db     43h,  61h,  70h,  61h,  63h,  69h,  74h,  79h,  20h,  3ah,  20h,  00h    ; uncompressed
    128                   db     49h,  67h,  76h,  67h,  69h,  6fh,  7ah, 0ffh,  40h,  00h                ; compressed
    129 
    130 g_szSizeSingle: ; db    "%s%u.%u %ciB",NULL
    131                 ; db     25h,  73h,  25h,  75h,  2eh,  25h,  75h,  20h,  25h,  63h,  69h,  42h,  00h    ; uncompressed
    132                   db     3eh,  37h,  29h,  37h,  20h,  35h,  6fh,  88h                                  ; compressed
    133 
    134 g_szSizeDual:   ; db    "%s%5-u.%u %ciB /%5-u.%u %ciB",LF,CR,NULL
    135                 ; db     25h,  73h,  25h,  35h,  2dh,  75h,  2eh,  25h,  75h,  20h,  25h,  63h,  69h,  42h,  20h,  2fh,  25h,  35h,  2dh,  75h,  2eh,  25h,  75h,  20h,  25h,  63h,  69h,  42h,  0ah,  0dh,  00h    ; uncompressed
    136                   db     3eh,  38h,  29h,  37h,  20h,  35h,  6fh, 0c8h,  2ah,  38h,  29h,  37h,  20h,  35h,  6fh,  48h,  1bh                                                                                        ; compressed
    137 
    138 g_szCfgHeader:  ; db    "Addr.",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",  SINGLE_VERTICAL,"IRQ",  SINGLE_VERTICAL,"Reset",LF,CR,NULL
    139                 ; db     41h,  64h,  64h,  72h,  2eh, 0b3h,  42h,  6ch,  6fh,  63h,  6bh, 0b3h,  42h,  75h,  73h, 0b3h,  49h,  52h,  51h, 0b3h,  52h,  65h,  73h,  65h,  74h,  0ah,  0dh,  00h    ; uncompressed
    140                   db     47h,  6ah,  6ah,  78h,  29h,  23h,  48h,  72h,  75h,  69h,  71h,  23h,  48h,  7bh,  79h,  23h,  4fh,  58h,  57h,  23h,  58h,  6bh,  79h,  6bh,  7ah,  1bh                ; compressed
    141 
    142 g_szCfgFormat:  ; db    "%s"   ,SINGLE_VERTICAL,"%5-u", SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",  NULL
    143                 ; db     25h,  73h, 0b3h,  25h,  35h,  2dh,  75h, 0b3h,  25h,  73h, 0b3h,  20h,  25h,  32h,  2dh,  49h, 0b3h,  25h,  35h,  2dh,  78h,  00h    ; uncompressed
    144                   db     3eh,  23h,  38h,  23h,  3eh,  23h,  20h,  36h,  23h,  1ah                                                                            ; compressed
    145 
     138g_szCapacity:           ; db    "Capacity : %s",NULL
     139                        ; db     43h,  61h,  70h,  61h,  63h,  69h,  74h,  79h,  20h,  3ah,  20h,  25h,  73h,  00h    ; uncompressed
     140                          db     49h,  67h,  76h,  67h,  69h,  6fh,  7ah, 0ffh, 0c0h,  1eh                            ; compressed
     141
     142g_szCapacityNum:        ; db    "%5-u.%u %ciB",NULL     
     143                        ; db     25h,  35h,  2dh,  75h,  2eh,  25h,  75h,  20h,  25h,  63h,  69h,  42h,  00h    ; uncompressed
     144                          db     38h,  29h,  37h,  20h,  35h,  6fh,  88h                                        ; compressed
     145
     146g_szSizeDual:           ; db    "%s /%s",LF,CR
     147                        ; db     25h,  73h,  20h,  2fh,  25h,  73h,  0ah,  0dh    ; uncompressed
     148                          db     3eh,  20h,  2ah,  3eh,  3bh                      ; compressed
     149
     150    ; db    "Addr.",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,  "IRQ",SINGLE_VERTICAL,"Reset",LF,CR
     151    ; db     41h,  64h,  64h,  72h,  2eh, 0b3h,  42h,  6ch,  6fh,  63h,  6bh, 0b3h,  42h,  75h,  73h, 0b3h,  49h,  52h,  51h, 0b3h,  52h,  65h,  73h,  65h,  74h,  0ah,  0dh    ; uncompressed
     152      db     47h,  6ah,  6ah,  78h,  29h,  23h,  48h,  72h,  75h,  69h,  71h,  23h,  48h,  7bh,  79h,  23h,  4fh,  58h,  57h,  23h,  58h,  6bh,  79h,  6bh,  7ah,  3bh          ; compressed
     153
     154    ; db       "%s",SINGLE_VERTICAL, "%5-u",SINGLE_VERTICAL, "%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x" ,NULL
     155    ; db        25h,  73h, 0b3h,  25h,  35h,  2dh,  75h, 0b3h,  25h,  73h, 0b3h,  20h,  25h,  32h,  2dh,  49h, 0b3h,  25h,  35h,  2dh,  78h,  00h    ; uncompressed
     156      db        3eh,  23h,  38h,  23h,  3eh,  23h,  20h,  36h,  23h,  1ah                                                                            ; compressed
     157
     158
     159; Boot Menu Floppy Disk strings
     160;
     161; The following strings are used by BootMenuPrint_RefreshInformation
     162; To support optimizations in that code, these strings must start on the same 256 byte page,
     163; which is checked at assembly time below.
     164;               
     165g_szFddStart:   
     166g_szFddUnknown: ; db    "Unknown",NULL
     167                ; db     55h,  6eh,  6bh,  6eh,  6fh,  77h,  6eh,  00h    ; uncompressed
     168                  db     5bh,  74h,  71h,  74h,  75h,  7dh, 0b4h          ; compressed
     169
     170g_szFddSizeOr:  ; db    "5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL
     171                ; db     35h, 0ach,  22h,  20h,  6fh,  72h,  20h,  33h, 0abh,  22h,  20h,  44h,  44h,  00h    ; uncompressed
     172                  db     2fh,  21h,  26h,  20h,  75h, 0f8h,  2dh,  22h,  26h,  20h,  4ah,  8ah                ; compressed
     173
     174g_szFddSize:    ; db    "%s",QUOTATION_MARK,", %u kiB",NULL ; 3½", 1440 kiB
     175                ; db     25h,  73h,  22h,  2ch,  20h,  25h,  75h,  20h,  6bh,  69h,  42h,  00h    ; uncompressed
     176                  db     3eh,  26h,  27h,  20h,  37h,  20h,  71h,  6fh,  88h                      ; compressed
     177
     178g_szFddThreeHalf:       ; db  "3",ONE_HALF,NULL
     179                        ; db   33h, 0abh,  00h    ; uncompressed
     180                          db   2dh,  02h          ; compressed
     181
     182g_szFddEnd:     
     183g_szFddFiveQuarter:     ; db  "5",ONE_QUARTER,NULL
     184                        ; db   35h, 0ach,  00h    ; uncompressed
     185                          db   2fh,  01h          ; compressed
     186
     187
     188%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS               
     189%if ((g_szFddStart-$$) & 0xff00) <> ((g_szFddEnd-$$) & 0xff00)
     190%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"
     191%endif
     192%endif                     
    146193
    147194g_szAddressingModes:                   
     
    180227%endif
    181228%endif     
    182 
    183 g_szFddUnknown: ; db    "%sUnknown",NULL
    184                 ; db     25h,  73h,  55h,  6eh,  6bh,  6eh,  6fh,  77h,  6eh,  00h    ; uncompressed
    185                   db     3eh,  5bh,  74h,  71h,  74h,  75h,  7dh, 0b4h                ; compressed
    186 
    187 g_szFddSizeOr:  ; db    "%s5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL
    188                 ; db     25h,  73h,  35h, 0ach,  22h,  20h,  6fh,  72h,  20h,  33h, 0abh,  22h,  20h,  44h,  44h,  00h    ; uncompressed
    189                   db     3eh,  2fh,  21h,  26h,  20h,  75h, 0f8h,  2dh,  22h,  26h,  20h,  4ah,  8ah                      ; compressed
    190 
    191 g_szFddSize:    ; db    "%s%s",QUOTATION_MARK,", %u kiB",NULL   ; 3½", 1440 kiB
    192                 ; db     25h,  73h,  25h,  73h,  22h,  2ch,  20h,  25h,  75h,  20h,  6bh,  69h,  42h,  00h    ; uncompressed
    193                   db     3eh,  3eh,  26h,  27h,  20h,  37h,  20h,  71h,  6fh,  88h                            ; compressed
    194 
    195 
    196 g_szFddThreeHalf:       ; db  "3",ONE_HALF,NULL
    197                         ; db   33h, 0abh,  00h    ; uncompressed
    198                           db   2dh,  02h          ; compressed
    199 
    200 g_szFddFiveQuarter:     ; db  "5",ONE_QUARTER,NULL     
    201                         ; db   35h, 0ach,  00h    ; uncompressed
    202                           db   2fh,  01h          ; compressed
    203 
    204 g_szFddThreeFive_Displacement equ (g_szFddFiveQuarter - g_szFddThreeHalf)
    205229
    206230g_szBusTypeValues:     
     
    289313;$translate{200}      = 18;    # DOUBLE_BOTTOM_LEFT_CORNER    [StringsCompress Processed]
    290314;$translate{181}      = 19;    # DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL    [StringsCompress Processed]
    291 ;$translate{ord('0')} = 20;    # DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL          [StringsCompress Processed]
     315;$translate{ord('0')} = 20;    [StringsCompress Processed]
    292316;
    293317; Formats begin immediately after the last Translated character (they are in the same table)
     
    304328;$format{"2-u"} = 28;        # must be even    [StringsCompress Processed]
    305329;$format{"A"}   = 29;        # n/a    [StringsCompress Processed]
    306 ;$format{"s"}   = 30;        # n/a          [StringsCompress Processed]
     330;$format{"s"}   = 30;        # n/a, normal string from DS    [StringsCompress Processed]
     331;$format{"z"}   = 31;        # n/a, boot string from BDA    [StringsCompress Processed]
    307332;
    308333; NOTE: The last $format cannot exceed 31 (stored in a 5-bit quantity).
     
    358383        db     (DisplayFormatCompressed_BaseFormatOffset - DisplayFormatCompressed_Format_A)    ; 29
    359384        db     (DisplayFormatCompressed_BaseFormatOffset - DisplayFormatCompressed_Format_s)    ; 30
     385        db     (DisplayFormatCompressed_BaseFormatOffset - DisplayFormatCompressed_Format_z)    ; 31
    360386
    361387%ifndef CHECK_FOR_UNUSED_ENTRYPOINTS
     
    390416%error "DisplayFormatCompressed_Format_s is out of range of DisplayFormatCompressed_BaseFormatOffset"
    391417%endif
     418%if DisplayFormatCompressed_BaseFormatOffset < DisplayFormatCompressed_Format_z || DisplayFormatCompressed_BaseFormatOffset - DisplayFormatCompressed_Format_z > 255
     419%error "DisplayFormatCompressed_Format_z is out of range of DisplayFormatCompressed_BaseFormatOffset"
     420%endif
    392421%endif
    393422
    394423;; translated usage stats
    395 ;; total translated:
     424;; 33:1
     425;; 32:31
     426;; 181:1
     427;; 53:2
     428;; 48:2
     429;; 200:1
     430;; 46:3
     431;; 179:8
     432;; 44:1
     433;; 50:2
     434;; 51:3
     435;; 47:3
     436;; 52:1
     437;; 172:2
     438;; 34:3
     439;; 49:1
     440;; 56:5
     441;; 45:3
     442;; 175:1
     443;; 171:2
     444;; 54:1
     445;; total translated: 21
    396446
    397447;; format usage stats
    398448;; A:4
    399449;; 2-u:1
    400 ;; 5-u:3
    401 ;; x:6
    402 ;; s:15
     450;; 5-u:2
     451;; x:7
     452;; s:13
    403453;; 5-x:1
    404454;; nl:6
    405455;; 2-I:1
    406 ;; c:7
    407 ;; u:9
    408 ;; total format: 10
     456;; c:5
     457;; u:6
     458;; z:1
     459;; total format: 11
    409460
    410461;; alphabet usage stats
     
    417468;; 64,@:1
    418469;; 65,A:4
    419 ;; 66,B:11
     470;; 66,B:9
    420471;; 67,C:4
    421472;; 68,D:10
     
    456507;; 103,g:2
    457508;; 104,h:
    458 ;; 105,i:11
     509;; 105,i:9
    459510;; 106,j:
    460511;; 107,k:4
Note: See TracChangeset for help on using the changeset viewer.