Changeset 241 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src
- Timestamp:
- Feb 9, 2012, 11:08:59 AM (13 years ago)
- google:author:
- gregli@hotmail.com
- Location:
- trunk/XTIDE_Universal_BIOS/Src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Boot/BootInfo.asm
r181 r241 16 16 ; Returns: 17 17 ; ES:BX: Ptr to BOOTNFO (if successful) 18 ; CF: Cleared if BOOTNFO created succesfully19 ; Set if any error20 18 ; Corrupts registers: 21 ; AX, BX, CX, DX 19 ; AX, BX, CX, DX, DI, SI 22 20 ;-------------------------------------------------------------------- 23 21 BootInfo_CreateForHardDisk: 24 call BootInfo_ GetOffsetToBX ; ES:BX now points to new BOOTNFO25 ; Fall to .StoreSectorCount22 call BootInfo_ConvertDPTtoBX ; ES:BX now points to new BOOTNFO 23 push bx ; Preserve for return 26 24 27 ;-------------------------------------------------------------------- 28 ; .StoreSectorCount 29 ; Parameters: 30 ; ES:BX: Ptr to BOOTNFO 31 ; ES:SI: Ptr to 512-byte ATA information read from the drive 32 ; DS:DI: Ptr to Disk Parameter Table 33 ; Returns: 34 ; Nothing 35 ; Corrupts registers: 36 ; AX, CX, DX 37 ;-------------------------------------------------------------------- 38 .StoreSectorCount: 39 push bx 40 call AtaID_GetTotalSectorCountToBXDXAXfromAtaInfoInESSI 41 mov cx, bx ; Now in CX:DX:AX 42 pop bx 43 mov [es:bx+BOOTNFO.twSectCnt], ax 44 mov [es:bx+BOOTNFO.twSectCnt+2], dx 45 mov [es:bx+BOOTNFO.twSectCnt+4], cx 46 ; Fall to .StoreDriveName 25 mov di, bx ; Starting pointer at beginning of structure 47 26 48 ;-------------------------------------------------------------------- 49 ; .StoreDriveName 50 ; Parameters: 51 ; ES:BX: Ptr to BOOTNFO 52 ; ES:SI: Ptr to 512-byte ATA information read from the drive 53 ; DS:DI: Ptr to Disk Parameter Table 54 ; Returns: 55 ; CF: Cleared if variables stored succesfully 56 ; Set if any error 57 ; Corrupts registers: 58 ; AX, CX 59 ;-------------------------------------------------------------------- 60 .StoreDriveName: 61 push ds 62 push si 63 push di 27 ; 28 ; Store Drive Name 29 ; 30 push ds ; Preserve RAMVARS 31 push si ; Preserve SI for call to GetTotalSectorCount... 64 32 65 push es 33 push es ; ES copied to DS 66 34 pop ds 35 67 36 add si, BYTE ATA1.strModel ; DS:SI now points drive name 68 37 lea di, [bx+BOOTNFO.szDrvName] ; ES:DI now points to name destination … … 74 43 loop .CopyNextWord 75 44 xor ax, ax ; Zero AX and clear CF 76 stos b; Terminate with NULL45 stosw ; Terminate with NULL 77 46 78 pop di79 47 pop si 80 48 pop ds 49 50 ; 51 ; Store Sector Count 52 ; 53 call AtaID_GetTotalSectorCountToBXDXAXfromAtaInfoInESSI 54 55 stosw 56 xchg ax, dx 57 stosw 58 xchg ax, bx 59 stosw 60 61 pop bx 62 81 63 ret 82 64 83 65 84 66 ;-------------------------------------------------------------------- 85 67 ; Finds BOOTNFO for drive and returns total sector count. … … 87 69 ; BootInfo_GetTotalSectorCount 88 70 ; Parameters: 89 ; DL: Drive number 90 ; DS: RAMVARS segment 71 ; DS:DI: DPT Pointer 91 72 ; Returns: 92 73 ; BX:DX:AX: 48-bit sector count … … 97 78 BootInfo_GetTotalSectorCount: 98 79 push ds 99 call BootInfo_ GetOffsetToBX80 call BootInfo_ConvertDPTtoBX 100 81 LOAD_BDA_SEGMENT_TO ds, ax 101 82 mov ax, [bx+BOOTNFO.twSectCnt] … … 107 88 108 89 ;-------------------------------------------------------------------- 109 ; Returns offset to BOOTNFO for wanted drive.90 ; Returns offset to BOOTNFO based on DPT pointer. 110 91 ; 111 ; BootInfo_ GetOffsetToBX92 ; BootInfo_ConvertDPTtoBX 112 93 ; Parameters: 113 ; DL: Drive number 114 ; DS: RAMVARS segment 94 ; DS:DI: DPT Pointer 115 95 ; Returns: 116 96 ; BX: Offset to BOOTNFO struct … … 119 99 ;-------------------------------------------------------------------- 120 100 ALIGN JUMP_ALIGN 121 BootInfo_ GetOffsetToBX:122 mov bl, dl ; Copy drive number to BL123 mov al, BOOTNFO_size ; Size of struct124 sub bl, [RAMVARS.bFirstDrv] ; Drive number to index125 mul bl ; AX = Offset inside BOOTNFO array126 add ax, BOOTVARS.rgBootNfo ; Add offset to BOOTNFO array127 xchg bx, ax ; Move result to BX128 ret 101 BootInfo_ConvertDPTtoBX: 102 mov ax, di 103 sub ax, RAMVARS_size ; subtract off base of DPTs 104 mov bl, DPT_BOOTNFO_SIZE_MULTIPLIER ; BOOTNFO's are a whole number multiple of DPT size 105 mul bl 106 add ax, BOOTVARS.rgBootNfo ; add base of BOOTNFO 107 xchg ax, bx 108 ret -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenu.asm
r181 r241 22 22 call BootMenu_Enter ; Get selected menuitem index to CX 23 23 call BootMenuPrint_ClearScreen 24 c mp cx, BYTE NO_ITEM_SELECTED25 j e SHORT BootMenu_DisplayAndReturnSelection ; Clear screen and display menu26 ; Fall to BootMenu_GetDriveToDXforMenuitemInCX24 call BootMenu_GetDriveToDXforMenuitemInCX 25 jnc BootMenu_DisplayAndReturnSelection 26 ret 27 27 28 28 ;-------------------------------------------------------------------- … … 30 30 ; Parameters: 31 31 ; CX: Index of menuitem selected from Boot Menu 32 ; DS: RAMVARS segment33 32 ; Returns: 34 33 ; DX: Drive number to be used for booting 35 ; Corrupts registers: 36 ; CX 37 ;-------------------------------------------------------------------- 34 ; DS: RAMVARS segment 35 ; CF: Set: There is a selected menu item, DL is valid 36 ; Clear: There is no selected menu item, DL is not valid 37 ; Corrupts registers: 38 ; CX, DI 39 ;-------------------------------------------------------------------- 40 ALIGN JUMP_ALIGN 41 BootMenu_GetDriveToDXforMenuitemInCX_And_RamVars_GetSegmentToDS: 42 call RamVars_GetSegmentToDS 43 ;;; fall-through 44 38 45 ALIGN JUMP_ALIGN 39 46 BootMenu_GetDriveToDXforMenuitemInCX: 40 mov dx, cx ; Copy menuitem index to DX 41 call FloppyDrive_GetCountToCX 42 cmp dx, cx ; Floppy drive? 43 jb SHORT .ReturnFloppyDriveInDX 44 sub dx, cx ; Remove floppy drives from index 45 or dl, 80h 47 cmp cl, NO_ITEM_HIGHLIGHTED 48 je SHORT .ReturnFloppyDriveInDX ; Clear CF if branch taken 49 50 mov dl, cl ; Copy menuitem index to DX 51 call FloppyDrive_GetCountToCX 52 cmp dl, cl ; Floppy drive? 53 jb SHORT .ReturnFloppyDriveInDX ; Set CF if branch taken 54 or cl, 80h ; Or 80h into CL before the sub 55 ; to cause CF to be set after 56 ; and result has high order bit set 57 sub dl, cl ; Remove floppy drives from index 58 46 59 .ReturnFloppyDriveInDX: 47 60 ret -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuEvent.asm
r212 r241 25 25 26 26 MENUEVENT_InitializeMenuinitFromDSSI equ (BootMenuEvent_Handler.InitializeMenuinitFromDSSI - BootMenuEvent_Handler) 27 MENUEVENT_ExitMenu equ (BootMenuEvent_ Handler.EventCompleted - BootMenuEvent_Handler)27 MENUEVENT_ExitMenu equ (BootMenuEvent_EventCompleted - BootMenuEvent_Handler) 28 28 MENUEVENT_ItemHighlightedFromCX equ (BootMenuEvent_Handler.ItemHighlightedFromCX - BootMenuEvent_Handler) 29 29 MENUEVENT_ItemSelectedFromCX equ (BootMenuEvent_Handler.ItemSelectedFromCX - BootMenuEvent_Handler) 30 30 MENUEVENT_KeyStrokeInAX equ (BootMenuEvent_Handler.KeyStrokeInAX - BootMenuEvent_Handler) 31 31 MENUEVENT_RefreshTitle equ (BootMenuPrint_TitleStrings - BootMenuEvent_Handler) 32 MENUEVENT_RefreshInformation equ (BootMenu Event_Handler.RefreshInformation - BootMenuEvent_Handler)33 MENUEVENT_RefreshItemFromCX equ (BootMenu Event_Handler.RefreshItemFromCX- BootMenuEvent_Handler)32 MENUEVENT_RefreshInformation equ (BootMenuPrint_RefreshInformation - BootMenuEvent_Handler) 33 MENUEVENT_RefreshItemFromCX equ (BootMenuPrint_RefreshItem - BootMenuEvent_Handler) 34 34 ; 35 35 ; Note that there is no entry for MENUEVENT_IdleProcessing. If MENUEVENT_IDLEPROCESSING_ENABLE is not %defined, … … 49 49 ALIGN WORD_ALIGN 50 50 .rgfnEventSpecificHandlers: 51 dw .InitializeMenuinitFromDSSI ; MENUEVENT.InitializeMenuinitFromDSSI52 dw .EventCompleted; MENUEVENT.ExitMenu53 dw .EventNotHandled ; MENUEVENT.IdleProcessing54 dw .ItemHighlightedFromCX ; MENUEVENT.ItemHighlightedFromCX55 dw .ItemSelectedFromCX ; MENUEVENT.ItemSelectedFromCX56 dw .KeyStrokeInAX ; MENUEVENT.KeyStrokeInAX57 dw BootMenuPrint_TitleStrings ; MENUEVENT.RefreshTitle58 dw .RefreshInformation; MENUEVENT.RefreshInformation59 dw .RefreshItemFromCX; MENUEVENT.RefreshItemFromCX51 dw .InitializeMenuinitFromDSSI ; MENUEVENT.InitializeMenuinitFromDSSI 52 dw BootMenuEvent_EventCompleted ; MENUEVENT.ExitMenu 53 dw .EventNotHandled ; MENUEVENT.IdleProcessing 54 dw .ItemHighlightedFromCX ; MENUEVENT.ItemHighlightedFromCX 55 dw .ItemSelectedFromCX ; MENUEVENT.ItemSelectedFromCX 56 dw .KeyStrokeInAX ; MENUEVENT.KeyStrokeInAX 57 dw BootMenuPrint_TitleStrings ; MENUEVENT.RefreshTitle 58 dw BootMenuPrint_RefreshInformation ; MENUEVENT.RefreshInformation 59 dw BootMenuPrint_RefreshItem ; MENUEVENT.RefreshItemFromCX 60 60 61 61 %endif … … 103 103 .ItemHighlightedFromCX: 104 104 push cx 105 call RamVars_GetSegmentToDS105 call BootMenu_GetDriveToDXforMenuitemInCX_And_RamVars_GetSegmentToDS 106 106 call DriveXlate_Reset 107 call BootMenu_GetDriveToDXforMenuitemInCX108 107 call DriveXlate_SetDriveToSwap 109 108 … … 134 133 call BootMenu_GetMenuitemToAXforAsciiHotkeyInAL 135 134 cmp ax, [bp+MENUINIT.wItems] 136 jae SHORT .EventCompleted ; Invalid key135 jae SHORT BootMenuEvent_EventCompleted ; Invalid key 137 136 CALL_MENU_LIBRARY HighlightItemFromAX 138 137 ; Fall to .ItemSelectedFromCX … … 144 143 .ItemSelectedFromCX: 145 144 CALL_MENU_LIBRARY Close 146 .EventCompleted: 145 146 BootMenuEvent_EventCompleted: 147 147 stc 148 148 ret 149 149 150 151 ; Parameters:152 ; CX: Index of item to refresh153 ; Cursor has been positioned to the beginning of item line154 ALIGN JUMP_ALIGN155 .RefreshItemFromCX:156 xor bl, bl ; will result in SF being clear in .RefreshItemOrInformation...157 SKIP2B dx ; dx corrupted below by BootMenu_GetDriveToDXforMenuitemInCX158 ; Fall to .RefreshInformation159 160 ; Parameters:161 ; CX: Index of highlighted item162 ; Cursor has been positioned to the beginning of first line163 ; NO ALIGN - in the shadow of SKIP2B164 .RefreshInformation:165 mov bl,040h ; will result in SF being set in .RefreshItemOrInformation...166 ; Fall to .RefreshItemOrInformationWithJumpTableInCSBX167 168 ;--------------------------------------------------------------------169 ; RefreshItemOrInformationWithJumpTableInCSBX170 ; Parameters:171 ; CX: Index of selected menuitem172 ; CS:BX: Ptr to ITEM_TYPE_REFRESH jump table173 ; Returns:174 ; CF: set since event processed175 ;--------------------------------------------------------------------176 .RefreshItemOrInformationWithJumpTableInCSBX:177 cmp cl, NO_ITEM_HIGHLIGHTED178 je SHORT .EventCompleted179 180 call RamVars_GetSegmentToDS181 call BootMenu_GetDriveToDXforMenuitemInCX182 or bl,dl ; or drive number with bit from .RefreshItemFromCX or .RefreshInformation183 shl bl,1 ; drive letter high order bit to CF, Item/Information bit to SF184 jc SHORT BootMenuPrint_HardDiskMenuitem185 ; fall through to BootMenuEvent_FallThroughToFloppyMenuitem186 187 ;;;188 ;;; Fall-through (to BootMenuPrint_FloppyMenuitem)189 ;;; (checked at assembler time with the code after BootMenuPrint_FloppyMenuitem)190 ;;;191 ALIGN JUMP_ALIGN192 BootMenuEvent_FallThroughToFloppyMenuitem:193 ; fall through to BootMenuPrint_FloppyMenuitem -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuPrint.asm
r200 r241 5 5 SECTION .text 6 6 7 ;;; 8 ;;; Fall-through from BootMenuEvent.asm! 9 ;;; BootMenuPrint_FloppyMenuitem must be the first routine in this file 10 ;;; (checked at assembler time with the code after BootMenuPrint_FloppyMenuitem) 11 ;;; 12 ;-------------------------------------------------------------------- 13 ; BootMenuPrint_FloppyMenuitem 7 ;-------------------------------------------------------------------- 8 ; BootMenuPrint_RefreshItem 9 ; 14 10 ; Parameters: 15 11 ; DL: Untranslated Floppy Drive number 16 ; SF: set for Information, clear for Item17 ; Returns:18 ; Nothing19 ; Corrupts registers:20 ; AX, DX, SI, DI21 ;-------------------------------------------------------------------- 22 ALIGN JUMP_ALIGN 23 BootMenuPrint_FloppyMenuitem: 24 j s short BootMenuPrint_FloppyMenuitemInformation25 call PrintDriveNumberAfterTranslationFromDL12 ; Returns: 13 ; Nothing 14 ; Corrupts registers: 15 ; AX, BX, DX, SI, DI 16 ;-------------------------------------------------------------------- 17 ALIGN JUMP_ALIGN 18 BootMenuPrint_RefreshItem: 19 call BootMenu_GetDriveToDXforMenuitemInCX_And_RamVars_GetSegmentToDS 20 jnc BootMenuEvent_EventCompleted ; if no menu item selected, out we go 21 26 22 push bp 27 23 mov bp, sp 28 mov si, g_szFDLetter 29 ePUSH_T ax, g_szFloppyDrv 30 add dl, 'A' 31 push dx ; Drive letter 24 25 call RamVars_IsDriveHandledByThisBIOS 26 jnc .notOurs 27 28 call FindDPT_ForDriveNumber ; if it is one of ours, print the string in bootnfo 29 call BootInfo_ConvertDPTtoBX 30 mov si, g_szDriveNumBOOTNFO ; special g_szDriveNum that prints from BDA 31 jmp .go 32 33 .notOurs: 34 mov si,g_szDriveNum 35 mov bx,g_szForeignHD ; assume a hard disk for the moment 36 37 test dl,80h 38 js .go 39 mov bl,((g_szFloppyDrv)-$$ & 0xff) ; and revisit the earlier assumption... 40 41 .go: 42 mov ax, dx ; preserve DL for the floppy drive letter addition 43 call DriveXlate_ToOrBack 44 push dx ; translated drive number 45 push bx ; sub string 46 add al, 'A' ; floppy drive letter (we always push this although 47 push ax ; the hard disks don't ever use it, but it does no harm) 48 32 49 jmp short BootMenuPrint_FormatCSSIfromParamsInSSBP 33 34 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS35 %if BootMenuPrint_FloppyMenuitem <> BootMenuEvent_FallThroughToFloppyMenuitem36 %error "BootMenuPrint.asm must follow BootMenuEvent.asm, and BootMenuPrint_FloppyMenuitem must be the first routine in BootMenuPrint.asm"37 %endif38 %endif39 40 ;--------------------------------------------------------------------41 ; ConvertSectorCountInBXDXAXtoSizeAndPushForFormat42 ; Parameters:43 ; BX:DX:AX: Sector count44 ; Returns:45 ; Size in stack46 ; Corrupts registers:47 ; AX, BX, CX, DX, SI48 ;--------------------------------------------------------------------49 ALIGN JUMP_ALIGN50 ConvertSectorCountInBXDXAXtoSizeAndPushForFormat:51 pop si ; Pop return address52 call Size_ConvertSectorCountInBXDXAXtoKiB53 mov cx, BYTE_MULTIPLES.kiB54 call Size_GetSizeToAXAndCharToDLfromBXDXAXwithMagnitudeInCX55 push ax ; Size in magnitude56 push cx ; Tenths57 push dx ; Magnitude character58 jmp si59 60 50 61 51 ;-------------------------------------------------------------------- … … 77 67 mov si, ROMVARS.szVersion 78 68 ; Fall to BootMenuPrint_NullTerminatedStringFromCSSIandSetCF 79 80 69 81 70 ;-------------------------------------------------------------------- … … 102 91 103 92 ;-------------------------------------------------------------------- 104 ; BootMenuPrint_HardDiskMenuitem105 ; Parameters:106 ; DL: Untranslated Hard Disk number107 ; DS: RAMVARS segment108 ; SF: set for Information, clear for Item109 ; Returns:110 ; CF: Set since menu event handled111 ; Corrupts registers:112 ; AX, BX, SI, DI113 ;--------------------------------------------------------------------114 ALIGN JUMP_ALIGN115 BootMenuPrint_HardDiskMenuitem:116 js short BootMenuPrint_HardDiskMenuitemInformation117 call PrintDriveNumberAfterTranslationFromDL118 call RamVars_IsDriveHandledByThisBIOS119 jnc SHORT .HardDiskMenuitemForForeignDrive120 ; Fall to .HardDiskMenuitemForOurDrive121 122 ;--------------------------------------------------------------------123 ; .HardDiskMenuitemForOurDrive124 ; Parameters:125 ; DL: Untranslated Hard Disk number126 ; DS: RAMVARS segment127 ; Returns:128 ; CF: Set since menu event handled129 ; Corrupts registers:130 ; AX, BX, SI, DI131 ;--------------------------------------------------------------------132 .HardDiskMenuitemForOurDrive:133 call BootInfo_GetOffsetToBX134 lea si, [bx+BOOTNFO.szDrvName]135 xor bx, bx ; BDA segment136 CALL_DISPLAY_LIBRARY PrintNullTerminatedStringFromBXSI137 stc138 ret139 140 ;--------------------------------------------------------------------141 ; BootMenuPrint_HardDiskMenuitemForForeignDrive142 ; Parameters:143 ; DL: Untranslated Hard Disk number144 ; DS: RAMVARS segment145 ; Returns:146 ; CF: Set since menu event handled147 ; Corrupts registers:148 ; AX, SI, DI149 ;--------------------------------------------------------------------150 ALIGN JUMP_ALIGN151 .HardDiskMenuitemForForeignDrive:152 mov si, g_szforeignHD153 jmp SHORT BootMenuPrint_NullTerminatedStringFromCSSIandSetCF154 155 156 ;--------------------------------------------------------------------157 93 ; BootMenuPrint_FloppyMenuitemInformation 158 94 ; Parameters: … … 165 101 ;-------------------------------------------------------------------- 166 102 167 FloppyTypes: 168 .rgbCapacityMultiplier equ 20 ; Multiplier to reduce word sized values to byte size 169 .rgbCapacity: 170 db 360 / FloppyTypes.rgbCapacityMultiplier ; type 1 171 db 1200 / FloppyTypes.rgbCapacityMultiplier ; type 2 172 db 720 / FloppyTypes.rgbCapacityMultiplier ; type 3 173 db 1440 / FloppyTypes.rgbCapacityMultiplier ; type 4 174 db 2880 / FloppyTypes.rgbCapacityMultiplier ; type 5 175 db 2880 / FloppyTypes.rgbCapacityMultiplier ; type 6 176 177 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS 178 %if g_szFddFiveQuarter <> g_szFddThreeHalf+g_szFddThreeFive_Displacement 179 %error "FddThreeFive_Displacement incorrect" 180 %endif 181 %endif 182 183 ALIGN JUMP_ALIGN 184 BootMenuPrint_FloppyMenuitemInformation: 185 call BootMenuPrint_ClearInformationArea 186 call FloppyDrive_GetType ; Get Floppy Drive type to BX 103 ALIGN JUMP_ALIGN 104 BootMenuPrint_RefreshInformation: 105 CALL_MENU_LIBRARY ClearInformationArea 106 107 call BootMenu_GetDriveToDXforMenuitemInCX_And_RamVars_GetSegmentToDS 108 jnc BootMenuEvent_EventCompleted ; if no menu selection, abort 187 109 188 110 push bp 189 111 mov bp, sp 190 ePUSH_T ax, g_szCapacity 191 192 mov si, g_szFddSizeOr ; .PrintXTFloppyType 193 test bx, bx ; Two possibilities? (FLOPPY_TYPE_525_OR_35_DD) 194 jz SHORT .output 195 196 mov si, g_szFddUnknown ; .PrintUnknownFloppyType 112 113 test dl, dl ; are we a hard disk? 114 js BootMenuPrint_HardDiskRefreshInformation 115 116 call FloppyDrive_GetType ; Get Floppy Drive type to BX 117 118 mov cx, g_szFddSizeOr ; .PrintXTFloppyType 119 test bx, bx ; Two possibilities? (FLOPPY_TYPE_525_OR_35_DD) 120 jz SHORT BootMenuPrint_HardDiskRefreshInformation.output 121 122 mov cl, (g_szFddUnknown - $$) & 0xff ; .PrintUnknownFloppyType 197 123 cmp bl, FLOPPY_TYPE_35_ED 198 ja SHORT .output124 ja SHORT BootMenuPrint_HardDiskRefreshInformation.output 199 125 200 126 ; Fall to .PrintKnownFloppyType 201 202 127 203 128 ;-------------------------------------------------------------------- … … 223 148 ;-------------------------------------------------------------------- 224 149 .PrintKnownFloppyType: 225 mov si, g_szFddSize 226 227 mov ax, g_szFddThreeHalf 150 mov cl, (g_szFddSize - $$) & 0xff 151 push cx 152 153 mov cl, (g_szFddThreeHalf - $$) & 0xff 228 154 cmp bl, FLOPPY_TYPE_525_HD 229 155 ja .ThreeHalf 230 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS 231 %if g_szFddThreeFive_Displacement = 2 232 inc ax ; compressed string case 233 inc ax 234 %else 235 add ax, g_szFddThreeFive_Displacement 236 %endif 237 %endif 156 mov cl, (g_szFddFiveQuarter - $$) & 0xff 238 157 .ThreeHalf: 239 push ax; "5 1/4" or "3 1/2"158 push cx ; "5 1/4" or "3 1/2" 240 159 241 160 mov al,FloppyTypes.rgbCapacityMultiplier … … 243 162 push ax 244 163 164 jmp short BootMenuPrint_HardDiskRefreshInformation.output 165 166 167 ;-------------------------------------------------------------------- 168 ; Prints Hard Disk Menuitem information strings. 169 ; 170 ; BootMenuPrint_HardDiskMenuitemInformation 171 ; Parameters: 172 ; DL: Untranslated Hard Disk number 173 ; DS: RAMVARS segment 174 ; Returns: 175 ; CF: Set since menu event was handled successfully 176 ; Corrupts registers: 177 ; BX, CX, DX, SI, DI, ES 178 ;-------------------------------------------------------------------- 179 ALIGN JUMP_ALIGN 180 BootMenuPrint_HardDiskRefreshInformation: 181 call RamVars_IsDriveHandledByThisBIOS 182 jnc SHORT .HardDiskMenuitemInfoForForeignDrive 183 call FindDPT_ForDriveNumber ; DS:DI to point DPT 184 ; Fall to .HardDiskMenuitemInfoForOurDrive 185 186 ;-------------------------------------------------------------------- 187 ; .HardDiskMenuitemInfoForOurDrive 188 ; Parameters: 189 ; DL: Untranslated Hard Disk number 190 ; DS:DI: Ptr to DPT 191 ; Returns: 192 ; Nothing 193 ; Corrupts registers: 194 ; AX, BX, CX, DX, SI, DI, ES 195 ;-------------------------------------------------------------------- 196 .HardDiskMenuitemInfoForOurDrive: 197 ePUSH_T ax, g_szSizeDual 198 199 ; Get and push L-CHS size 200 call AH15h_GetSectorCountToDXAX 201 call ConvertSectorCountInBXDXAXtoSizeAndPushForFormat 202 203 ; Get and push total LBA size 204 call BootInfo_GetTotalSectorCount 205 call ConvertSectorCountInBXDXAXtoSizeAndPushForFormat 206 jmp BootMenuPrintCfg_ForOurDrive 207 208 ;-------------------------------------------------------------------- 209 ; .HardDiskMenuitemInfoForForeignDrive 210 ; Parameters: 211 ; DL: Untranslated Hard Disk number 212 ; DS: RAMVARS segment 213 ; Returns: 214 ; CF: Set since menu event was handled successfully 215 ; Corrupts registers: 216 ; AX, BX, CX, DX, SI, DI 217 ;-------------------------------------------------------------------- 218 ALIGN JUMP_ALIGN 219 .HardDiskMenuitemInfoForForeignDrive: 220 call DriveXlate_ToOrBack 221 call AH15h_GetSectorCountFromForeignDriveToDXAX 222 call ConvertSectorCountInBXDXAXtoSizeAndPushForFormat 223 245 224 ALIGN JUMP_ALIGN 246 225 .output: 226 mov si, g_szCapacity 247 227 ;;; fall-through 248 228 … … 263 243 stc ; Successfull return from menu event 264 244 pop bp 265 ret266 267 268 ;--------------------------------------------------------------------269 ; Prints Hard Disk Menuitem information strings.270 ;271 ; BootMenuPrint_HardDiskMenuitemInformation272 ; Parameters:273 ; DL: Untranslated Hard Disk number274 ; DS: RAMVARS segment275 ; Returns:276 ; CF: Set since menu event was handled successfully277 ; Corrupts registers:278 ; BX, CX, DX, SI, DI, ES279 ;--------------------------------------------------------------------280 ALIGN JUMP_ALIGN281 BootMenuPrint_HardDiskMenuitemInformation:282 call RamVars_IsDriveHandledByThisBIOS283 jnc SHORT .HardDiskMenuitemInfoForForeignDrive284 call FindDPT_ForDriveNumber ; DS:DI to point DPT285 ; Fall to .HardDiskMenuitemInfoForOurDrive286 287 ;--------------------------------------------------------------------288 ; .HardDiskMenuitemInfoForOurDrive289 ; Parameters:290 ; DL: Untranslated Hard Disk number291 ; DS:DI: Ptr to DPT292 ; Returns:293 ; Nothing294 ; Corrupts registers:295 ; AX, BX, CX, DX, SI, DI, ES296 ;--------------------------------------------------------------------297 .HardDiskMenuitemInfoForOurDrive:298 push di299 ePUSH_T ax, BootMenuPrintCfg_ForOurDrive ; Return from BootMenuPrint_FormatCSSIfromParamsInSSBP300 push bp301 mov bp, sp302 ePUSH_T ax, g_szCapacity303 304 ; Get and push L-CHS size305 mov [RAMVARS.bTimeoutTicksLeft], dl ; Store drive number306 call AH15h_GetSectorCountToDXAX307 call ConvertSectorCountInBXDXAXtoSizeAndPushForFormat308 309 ; Get and push total LBA size310 mov dl, [RAMVARS.bTimeoutTicksLeft] ; Restore drive number311 call BootInfo_GetTotalSectorCount312 call ConvertSectorCountInBXDXAXtoSizeAndPushForFormat313 314 mov si, g_szSizeDual315 jmp SHORT BootMenuPrint_FormatCSSIfromParamsInSSBP316 317 318 ;--------------------------------------------------------------------319 ; .HardDiskMenuitemInfoForForeignDrive320 ; Parameters:321 ; DL: Untranslated Hard Disk number322 ; DS: RAMVARS segment323 ; Returns:324 ; CF: Set since menu event was handled successfully325 ; Corrupts registers:326 ; AX, BX, CX, DX, SI, DI327 ;--------------------------------------------------------------------328 ALIGN JUMP_ALIGN329 .HardDiskMenuitemInfoForForeignDrive:330 push bp331 mov bp, sp332 ePUSH_T ax, g_szCapacity333 334 call DriveXlate_ToOrBack335 call AH15h_GetSectorCountFromForeignDriveToDXAX336 call ConvertSectorCountInBXDXAXtoSizeAndPushForFormat337 338 mov si, g_szSizeSingle339 jmp SHORT BootMenuPrint_FormatCSSIfromParamsInSSBP340 341 342 ;--------------------------------------------------------------------343 ; BootMenuPrint_ClearInformationArea344 ; Parameters:345 ; Nothing346 ; Returns:347 ; CF: Set348 ; Corrupts registers:349 ; AX, DI350 ;--------------------------------------------------------------------351 ALIGN JUMP_ALIGN352 BootMenuPrint_ClearInformationArea:353 CALL_MENU_LIBRARY ClearInformationArea354 stc355 245 ret 356 246 357 247 358 248 ;-------------------------------------------------------------------- … … 373 263 CALL_DISPLAY_LIBRARY ClearScreenWithCharInALandAttrInAH 374 264 ret 375 376 377 ;--------------------------------------------------------------------378 ; PrintDriveNumberAfterTranslationFromDL379 ; Parameters:380 ; DL: Untranslated Floppy Drive number381 ; DS: RAMVARS segment382 ; Returns:383 ; Nothing384 ; Corrupts registers:385 ; AX, DI386 ;--------------------------------------------------------------------387 ALIGN JUMP_ALIGN388 PrintDriveNumberAfterTranslationFromDL:389 mov ax, dx390 call DriveXlate_ToOrBack391 xchg dx, ax ; Restore DX, WORD to print in AL392 xor ah, ah393 push bp394 mov bp, sp395 mov si, g_szDriveNum396 push ax397 398 BootMenuPrint_FormatCSSIfromParamsInSSBP_Relay:399 jmp SHORT BootMenuPrint_FormatCSSIfromParamsInSSBP400 265 401 266 … … 510 375 push cx ; Key attribute for last space 511 376 mov si, g_szHotkey 512 jmp SHORT BootMenuPrint_FormatCSSIfromParamsInSSBP_Relay 377 378 BootMenuPrint_FormatCSSIfromParamsInSSBP_Relay: 379 jmp SHORT BootMenuPrint_FormatCSSIfromParamsInSSBP 513 380 514 381 … … 528 395 529 396 530 531 532 533 397 ;-------------------------------------------------------------------- 398 ; ConvertSectorCountInBXDXAXtoSizeAndPushForFormat 399 ; Parameters: 400 ; BX:DX:AX: Sector count 401 ; Returns: 402 ; Size in stack 403 ; Corrupts registers: 404 ; AX, BX, CX, DX, SI 405 ;-------------------------------------------------------------------- 406 ALIGN JUMP_ALIGN 407 ConvertSectorCountInBXDXAXtoSizeAndPushForFormat: 408 pop si ; Pop return address 409 ePUSH_T cx, g_szCapacityNum ; Push format substring 410 call Size_ConvertSectorCountInBXDXAXtoKiB 411 mov cx, BYTE_MULTIPLES.kiB 412 call Size_GetSizeToAXAndCharToDLfromBXDXAXwithMagnitudeInCX 413 push ax ; Size in magnitude 414 push cx ; Tenths 415 push dx ; Magnitude character 416 jmp si 417 418 419 FloppyTypes: 420 .rgbCapacityMultiplier equ 20 ; Multiplier to reduce word sized values to byte size 421 .rgbCapacity: 422 db 360 / FloppyTypes.rgbCapacityMultiplier ; type 1 423 db 1200 / FloppyTypes.rgbCapacityMultiplier ; type 2 424 db 720 / FloppyTypes.rgbCapacityMultiplier ; type 3 425 db 1440 / FloppyTypes.rgbCapacityMultiplier ; type 4 426 db 2880 / FloppyTypes.rgbCapacityMultiplier ; type 5 427 db 2880 / FloppyTypes.rgbCapacityMultiplier ; type 6 428 429 430 431 432 433 434 435 -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootMenuPrintCfg.asm
r200 r241 12 12 ; BootMenuPrintCfg_ForOurDrive 13 13 ; Parameters: 14 ; DS: Segment to DPT 15 ; Stack: Offset to DPT 14 ; DS:DI: Pointer to DPT 16 15 ; Returns: 17 16 ; Nothing … … 21 20 ALIGN JUMP_ALIGN 22 21 BootMenuPrintCfg_ForOurDrive: 23 mov si, g_szCfgHeader24 call BootMenuPrint_NullTerminatedStringFromCSSIandSetCF25 pop di26 22 eMOVZX ax, BYTE [di+DPT.bIdevarsOffset] 27 23 xchg si, ax ; CS:SI now points to IDEVARS 28 24 ; Fall to .PushAndFormatCfgString 29 30 ;--------------------------------------------------------------------31 ; PushAndFormatCfgString32 ; Parameters:33 ; DS:DI: Ptr to DPT34 ; CS:SI: Ptr to IDEVARS35 ; Returns:36 ; Nothing37 ; Corrupts registers:38 ; AX, DX, SI, DI39 ;--------------------------------------------------------------------40 .PushAndFormatCfgString:41 push bp42 mov bp, sp43 ; Fall to first push below44 25 45 26 ;-------------------------------------------------------------------- … … 114 95 ;-------------------------------------------------------------------- 115 96 .PushIRQ: 116 eMOVZX ax, BYTE [cs:si+IDEVARS.bIRQ] 97 mov al, BYTE [cs:si+IDEVARS.bIRQ] 98 cbw 117 99 push ax 118 100 … … 129 111 .PushResetStatus: 130 112 mov al, [di+DPT.bFlagsHigh] 131 and a x, MASKH_DPT_RESET113 and al, MASKH_DPT_RESET ; ah already zero from last push 132 114 push ax 133 115 … … 142 124 ;-------------------------------------------------------------------- 143 125 .PrintValuesFromStack: 144 mov si, g_szCfgFormat 145 jmp BootPrint_BootMenuPrint_FormatCSSIfromParamsInSSBP_Relay 126 jmp BootMenuPrint_HardDiskRefreshInformation.output 146 127 -
trunk/XTIDE_Universal_BIOS/Src/Boot/BootPrint.asm
r192 r241 22 22 mov si, g_szReadError 23 23 24 BootPrint_BootMenuPrint_FormatCSSIfromParamsInSSBP_Relay:25 24 jmp short BootMenuPrint_FormatCSSIfromParamsInSSBP_Relay 26 25 … … 54 53 55 54 mov si, g_szTryToBoot 56 jmp short Boot Print_BootMenuPrint_FormatCSSIfromParamsInSSBP_Relay55 jmp short BootMenuPrint_FormatCSSIfromParamsInSSBP_Relay 57 56 58 57 -
trunk/XTIDE_Universal_BIOS/Src/Strings.asm
r233 r241 8 8 ; Section containing code 9 9 SECTION .text 10 11 ; POST drive detection strings12 g_szRomAt: db "%s @ %x",LF,CR,NULL13 10 14 11 ; The following strings are used by DetectPrint_StartDetectWithMasterOrSlaveStringInAXandIdeVarsInCSBP … … 29 26 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS 30 27 %if ((g_szDetectEnd-$$) & 0xff00) <> ((g_szDetectStart-$$) & 0xff00) 31 %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" 32 %endif 33 %endif 28 %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" 29 %endif 30 %endif 31 32 ; Boot Menu menuitem strings 33 ; 34 ; The following strings are used by BootMenuPrint_* routines. 35 ; To support optimizations in that code, these strings must start on the same 256 byte page, 36 ; which is checked at assembly time below. 37 ; 38 g_szBootMenuPrintStart: 39 g_szDriveNum: db "%x %s",NULL 40 g_szDriveNumBOOTNFO: db "%x %z",NULL 41 g_szFloppyDrv: db "Floppy Drive %c",NULL 42 g_szBootMenuPrintEnd: 43 g_szForeignHD: db "Foreign Hard Disk",NULL 44 45 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS 46 %if ((g_szBootMenuPrintStart-$$) & 0xff00) <> ((g_szBootMenuPrintEnd-$$) & 0xff00) 47 %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" 48 %endif 49 %endif 50 51 ; POST drive detection strings 52 g_szRomAt: db "%s @ %x",LF,CR,NULL 34 53 35 54 ; Boot loader strings … … 44 63 g_szRomBoot: db "ROM Boot",NULL 45 64 g_szHotkey: db "%A%c%c%A%s%A ",NULL 46 47 48 ; Boot Menu menuitem strings 49 g_szDriveNum: db "%x ",NULL 50 g_szFDLetter: db "%s %c",NULL 51 g_szFloppyDrv: db "Floppy Drive",NULL 52 g_szforeignHD: db "Foreign Hard Disk",NULL 53 65 54 66 ; Boot Menu information strings 55 g_szCapacity: db "Capacity : ",NULL 56 g_szSizeSingle: db "%s%u.%u %ciB",NULL 57 g_szSizeDual: db "%s%5-u.%u %ciB /%5-u.%u %ciB",LF,CR,NULL 58 g_szCfgHeader: db "Addr.",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus", SINGLE_VERTICAL,"IRQ", SINGLE_VERTICAL,"Reset",LF,CR,NULL 59 g_szCfgFormat: db "%s" ,SINGLE_VERTICAL,"%5-u", SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x", NULL 60 67 g_szCapacity: db "Capacity : %s",NULL 68 g_szCapacityNum: db "%5-u.%u %ciB",NULL 69 g_szSizeDual: db "%s /%s",LF,CR 70 db "Addr.",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL, "IRQ",SINGLE_VERTICAL,"Reset",LF,CR 71 db "%s",SINGLE_VERTICAL, "%5-u",SINGLE_VERTICAL, "%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x" ,NULL 72 73 ; Boot Menu Floppy Disk strings 74 ; 75 ; The following strings are used by BootMenuPrint_RefreshInformation 76 ; To support optimizations in that code, these strings must start on the same 256 byte page, 77 ; which is checked at assembly time below. 78 ; 79 g_szFddStart: 80 g_szFddUnknown: db "Unknown",NULL 81 g_szFddSizeOr: db "5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL 82 g_szFddSize: db "%s",QUOTATION_MARK,", %u kiB",NULL ; 3½", 1440 kiB 83 g_szFddThreeHalf: db "3",ONE_HALF,NULL 84 g_szFddEnd: 85 g_szFddFiveQuarter: db "5",ONE_QUARTER,NULL 86 87 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS 88 %if ((g_szFddStart-$$) & 0xff00) <> ((g_szFddEnd-$$) & 0xff00) 89 %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" 90 %endif 91 %endif 92 61 93 g_szAddressingModes: 62 94 g_szLCHS: db "L-CHS",NULL … … 83 115 %endif 84 116 85 g_szFddUnknown: db "%sUnknown",NULL86 g_szFddSizeOr: db "%s5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL87 g_szFddSize: db "%s%s",QUOTATION_MARK,", %u kiB",NULL ; 3½", 1440 kiB88 89 g_szFddThreeHalf: db "3",ONE_HALF,NULL90 g_szFddFiveQuarter: db "5",ONE_QUARTER,NULL91 g_szFddThreeFive_Displacement equ (g_szFddFiveQuarter - g_szFddThreeHalf)92 93 117 g_szBusTypeValues: 94 118 g_szBusTypeValues_8Dual: db "D8 ",NULL … … 152 176 ;$translate{200} = 18; # DOUBLE_BOTTOM_LEFT_CORNER 153 177 ;$translate{181} = 19; # DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL 154 ;$translate{ord('0')} = 20; # DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL178 ;$translate{ord('0')} = 20; 155 179 ; 156 180 ; Formats begin immediately after the last Translated character (they are in the same table) … … 167 191 ;$format{"2-u"} = 28; # must be even 168 192 ;$format{"A"} = 29; # n/a 169 ;$format{"s"} = 30; # n/a 193 ;$format{"s"} = 30; # n/a, normal string from DS 194 ;$format{"z"} = 31; # n/a, boot string from BDA 170 195 ; 171 196 ; NOTE: The last $format cannot exceed 31 (stored in a 5-bit quantity). -
trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm
r233 r241 17 17 SECTION .text 18 18 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 ; 23 g_szDetectStart: 24 g_szDetectMaster: ; db "Master",NULL 25 ; db 4dh, 61h, 73h, 74h, 65h, 72h, 00h ; uncompressed 26 db 53h, 67h, 79h, 7ah, 6bh, 0b8h ; compressed 27 28 g_szDetectSlave: ; db "Slave ",NULL 29 ; db 53h, 6ch, 61h, 76h, 65h, 20h, 00h ; uncompressed 30 db 59h, 72h, 67h, 7ch, 6bh, 00h ; compressed 31 32 g_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 36 g_szDetectPort: ; db "%x",NULL ; IDE Master at 1F0h: 37 ; db 25h, 78h, 00h ; uncompressed 38 db 19h ; compressed 39 40 g_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 44 g_szDetectCOMAuto: ; db " Auto",NULL 45 ; db 20h, 41h, 75h, 74h, 6fh, 00h ; uncompressed 46 db 20h, 47h, 7bh, 7ah, 0b5h ; compressed 47 48 g_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 52 g_szDetectEnd: 53 g_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 ; 70 g_szBootMenuPrintStart: 71 g_szDriveNum: ; db "%x %s",NULL 72 ; db 25h, 78h, 20h, 25h, 73h, 00h ; uncompressed 73 db 39h, 20h, 1eh ; compressed 74 75 g_szDriveNumBOOTNFO: ; db "%x %z",NULL 76 ; db 25h, 78h, 20h, 25h, 7ah, 00h ; uncompressed 77 db 39h, 20h, 1fh ; compressed 78 79 g_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 83 g_szBootMenuPrintEnd: 84 g_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 19 95 ; POST drive detection strings 20 96 g_szRomAt: ; db "%s @ %x",LF,CR,NULL … … 23 99 24 100 25 ; The following strings are used by DetectPrint_StartDetectWithMasterOrSlaveStringInAXandIdeVarsInCSBP26 ; 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",NULL31 ; db 4dh, 61h, 73h, 74h, 65h, 72h, 00h ; uncompressed32 db 53h, 67h, 79h, 7ah, 6bh, 0b8h ; compressed33 34 g_szDetectSlave: ; db "Slave ",NULL35 ; db 53h, 6ch, 61h, 76h, 65h, 20h, 00h ; uncompressed36 db 59h, 72h, 67h, 7ch, 6bh, 00h ; compressed37 38 g_szDetectOuter: ; db "IDE %s at %s: ",NULL39 ; db 49h, 44h, 45h, 20h, 25h, 73h, 20h, 61h, 74h, 20h, 25h, 73h, 3ah, 20h, 00h ; uncompressed40 db 4fh, 4ah, 0cbh, 3eh, 20h, 67h, 0fah, 3eh, 40h, 00h ; compressed41 42 g_szDetectPort: ; db "%x",NULL ; IDE Master at 1F0h:43 ; db 25h, 78h, 00h ; uncompressed44 db 19h ; compressed45 46 g_szDetectCOM: ; db "COM%c%s",NULL47 ; db 43h, 4fh, 4dh, 25h, 63h, 25h, 73h, 00h ; uncompressed48 db 49h, 55h, 53h, 35h, 1eh ; compressed49 50 g_szDetectCOMAuto: ; db " Auto",NULL51 ; db 20h, 41h, 75h, 74h, 6fh, 00h ; uncompressed52 db 20h, 47h, 7bh, 7ah, 0b5h ; compressed53 54 g_szDetectCOMSmall: ; db "/%u%u00",NULL ; IDE Master at COM1/9600:55 ; db 2fh, 25h, 75h, 25h, 75h, 30h, 30h, 00h ; uncompressed56 db 2ah, 37h, 37h, 34h, 14h ; compressed57 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 ; uncompressed61 db 2ah, 37h, 29h, 37h, 91h ; compressed62 63 64 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS65 %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 %endif68 %endif69 70 101 ; Boot loader strings 71 102 g_szTryToBoot: ; db "Booting from %s %x",ANGLE_QUOTE_RIGHT,"%x",LF,CR,NULL … … 104 135 105 136 106 107 ; Boot Menu menuitem strings108 g_szDriveNum: ; db "%x ",NULL109 ; db 25h, 78h, 20h, 00h ; uncompressed110 db 39h, 00h ; compressed111 112 g_szFDLetter: ; db "%s %c",NULL113 ; db 25h, 73h, 20h, 25h, 63h, 00h ; uncompressed114 db 3eh, 20h, 15h ; compressed115 116 g_szFloppyDrv: ; db "Floppy Drive",NULL117 ; db 46h, 6ch, 6fh, 70h, 70h, 79h, 20h, 44h, 72h, 69h, 76h, 65h, 00h ; uncompressed118 db 4ch, 72h, 75h, 76h, 76h, 0ffh, 4ah, 78h, 6fh, 7ch, 0abh ; compressed119 120 g_szforeignHD: ; db "Foreign Hard Disk",NULL121 ; db 46h, 6fh, 72h, 65h, 69h, 67h, 6eh, 20h, 48h, 61h, 72h, 64h, 20h, 44h, 69h, 73h, 6bh, 00h ; uncompressed122 db 4ch, 75h, 78h, 6bh, 6fh, 6dh, 0f4h, 4eh, 67h, 78h, 0eah, 4ah, 6fh, 79h, 0b1h ; compressed123 124 125 137 ; 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 138 g_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 142 g_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 146 g_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 ; 165 g_szFddStart: 166 g_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 170 g_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 174 g_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 178 g_szFddThreeHalf: ; db "3",ONE_HALF,NULL 179 ; db 33h, 0abh, 00h ; uncompressed 180 db 2dh, 02h ; compressed 181 182 g_szFddEnd: 183 g_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 146 193 147 194 g_szAddressingModes: … … 180 227 %endif 181 228 %endif 182 183 g_szFddUnknown: ; db "%sUnknown",NULL184 ; db 25h, 73h, 55h, 6eh, 6bh, 6eh, 6fh, 77h, 6eh, 00h ; uncompressed185 db 3eh, 5bh, 74h, 71h, 74h, 75h, 7dh, 0b4h ; compressed186 187 g_szFddSizeOr: ; db "%s5",ONE_QUARTER,QUOTATION_MARK," or 3",ONE_HALF,QUOTATION_MARK," DD",NULL188 ; db 25h, 73h, 35h, 0ach, 22h, 20h, 6fh, 72h, 20h, 33h, 0abh, 22h, 20h, 44h, 44h, 00h ; uncompressed189 db 3eh, 2fh, 21h, 26h, 20h, 75h, 0f8h, 2dh, 22h, 26h, 20h, 4ah, 8ah ; compressed190 191 g_szFddSize: ; db "%s%s",QUOTATION_MARK,", %u kiB",NULL ; 3½", 1440 kiB192 ; db 25h, 73h, 25h, 73h, 22h, 2ch, 20h, 25h, 75h, 20h, 6bh, 69h, 42h, 00h ; uncompressed193 db 3eh, 3eh, 26h, 27h, 20h, 37h, 20h, 71h, 6fh, 88h ; compressed194 195 196 g_szFddThreeHalf: ; db "3",ONE_HALF,NULL197 ; db 33h, 0abh, 00h ; uncompressed198 db 2dh, 02h ; compressed199 200 g_szFddFiveQuarter: ; db "5",ONE_QUARTER,NULL201 ; db 35h, 0ach, 00h ; uncompressed202 db 2fh, 01h ; compressed203 204 g_szFddThreeFive_Displacement equ (g_szFddFiveQuarter - g_szFddThreeHalf)205 229 206 230 g_szBusTypeValues: … … 289 313 ;$translate{200} = 18; # DOUBLE_BOTTOM_LEFT_CORNER [StringsCompress Processed] 290 314 ;$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] 292 316 ; 293 317 ; Formats begin immediately after the last Translated character (they are in the same table) … … 304 328 ;$format{"2-u"} = 28; # must be even [StringsCompress Processed] 305 329 ;$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] 307 332 ; 308 333 ; NOTE: The last $format cannot exceed 31 (stored in a 5-bit quantity). … … 358 383 db (DisplayFormatCompressed_BaseFormatOffset - DisplayFormatCompressed_Format_A) ; 29 359 384 db (DisplayFormatCompressed_BaseFormatOffset - DisplayFormatCompressed_Format_s) ; 30 385 db (DisplayFormatCompressed_BaseFormatOffset - DisplayFormatCompressed_Format_z) ; 31 360 386 361 387 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS … … 390 416 %error "DisplayFormatCompressed_Format_s is out of range of DisplayFormatCompressed_BaseFormatOffset" 391 417 %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 392 421 %endif 393 422 394 423 ;; 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 396 446 397 447 ;; format usage stats 398 448 ;; A:4 399 449 ;; 2-u:1 400 ;; 5-u: 3401 ;; x: 6402 ;; s:1 5450 ;; 5-u:2 451 ;; x:7 452 ;; s:13 403 453 ;; 5-x:1 404 454 ;; nl:6 405 455 ;; 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 409 460 410 461 ;; alphabet usage stats … … 417 468 ;; 64,@:1 418 469 ;; 65,A:4 419 ;; 66,B: 11470 ;; 66,B:9 420 471 ;; 67,C:4 421 472 ;; 68,D:10 … … 456 507 ;; 103,g:2 457 508 ;; 104,h: 458 ;; 105,i: 11509 ;; 105,i:9 459 510 ;; 106,j: 460 511 ;; 107,k:4 -
trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/RamVars.asm
r181 r241 31 31 ;-------------------------------------------------------------------- 32 32 .StealMemoryForRAMVARS: 33 mov ax, LITE_MODE_RAMVARS_SEGMENT 33 34 test BYTE [cs:ROMVARS.wFlags], FLG_ROMVARS_FULLMODE 34 35 jz SHORT .InitializeRamvars ; No need to steal RAM … … 39 40 mov ax, [BDA.wBaseMem] 40 41 eSHL_IM ax, 6 ; Segment to first stolen kB (*=40h) 42 ; Fall to .InitializeRamvars 43 44 ;-------------------------------------------------------------------- 45 ; .InitializeRamvars 46 ; Parameters: 47 ; AX: RAMVARS segment 48 ; Returns: 49 ; DS: RAMVARS segment 50 ; Corrupts registers: 51 ; AX, CX, DI, ES 52 ;-------------------------------------------------------------------- 53 .InitializeRamvars: 41 54 mov ds, ax 42 mov WORD [RAMVARS.wSignature], RAMVARS_SIGNATURE 43 ; Fall to .InitializeRamvars 44 45 ;-------------------------------------------------------------------- 46 ; .InitializeRamvars 47 ; Parameters: 48 ; Nothing 49 ; Returns: 50 ; DS: RAMVARS segment 51 ; Corrupts registers: 52 ; AX, CX, DI, ES 53 ;-------------------------------------------------------------------- 54 .InitializeRamvars: 55 call RamVars_GetSegmentToDS 55 mov es, ax 56 56 mov cx, RAMVARS_size 57 57 xor di, di 58 push ds59 pop es60 58 call Memory_ZeroESDIwithSizeInCX 61 59 mov WORD [RAMVARS.wSignature], RAMVARS_SIGNATURE
Note:
See TracChangeset
for help on using the changeset viewer.