Changeset 580 in xtideuniversalbios
- Timestamp:
- Feb 19, 2015, 1:38:02 PM (10 years ago)
- google:author:
- krille_n_@hotmail.com
- Location:
- trunk
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Assembly_Library/Src/Display/DisplayFormatCompressed.asm
r567 r580 89 89 xor bx, bx 90 90 xchg si, ax 91 jmp shortDisplayPrint_NullTerminatedStringFromBXSI91 jmp SHORT DisplayPrint_NullTerminatedStringFromBXSI 92 92 93 93 DisplayFormatCompressed_Format_x: 94 94 DisplayFormatCompressed_Format_5_x: 95 mov si, 16 ; hex output, change base to 1696 mov bx, (04<<8) + 'h' ; 4 bytes, with postfix character 'h' to emit95 mov si, 16 ; hex output, change base to 16 96 mov bx, (04<<8) + 'h' ; 4 bytes, with postfix character 'h' to emit 97 97 ; (note that the count includes the 'h') 98 jmp DisplayFormatCompressed_Format_u 99 100 DisplayFormatCompressed_Format_2_I: 101 mov si,g_szDashForZero ; preload dash string in case we jump 102 test ax,ax ; if parameter equals zero, emit dash string instead 103 jz DisplayFormat_ParseCharacters 104 ; fall through 98 SKIP2B f ; Fall through to DisplayFormatCompressed_Format_u 105 99 106 100 DisplayFormatCompressed_Format_2_u: 107 mov bh, 2 ; only two characters (instead of the default 5)101 mov bh, 2 ; only two characters (instead of the default 5) 108 102 ; fall through 109 103 … … 111 105 DisplayFormatCompressed_Format_5_u: 112 106 push bx ; push postfix character - either a zero (default) or a 'h' 113 mov bl, bh ; preserve character count for .PrintLoop107 mov bl, bh ; preserve character count for .PrintLoop 114 108 115 109 .DivLoop: … … 119 113 120 114 dec bh 121 jnz .DivLoop115 jnz SHORT .DivLoop 122 116 123 117 .PrintLoop: … … 125 119 126 120 dec bl ; on second to last iteration, emit digit whether it is zero or not 127 jz .PrintDigit 128 129 js short DisplayPrint_CharacterFromAL ; on last iteration, emit postfix character 121 jz SHORT .PrintDigit 122 js SHORT DisplayPrint_CharacterFromAL ; on last iteration, emit postfix character 130 123 ; if it is zero, DisplayPrint_CharacterFromAL will not emit 131 124 132 125 or bh, al ; skip leading zeros, bh keeps track if we have emitted anything non-zero 133 jnz .PrintDigit; note that bh starts at zero, from the loop above134 135 test ch, 2 ; are we padding with leading spaces?136 jnz .PrintLoop; test the even/odd of the format byte in the string126 jnz SHORT .PrintDigit ; note that bh starts at zero, from the loop above 127 128 test ch, 2 ; are we padding with leading spaces? 129 jnz SHORT .PrintLoop ; test the even/odd of the format byte in the string 137 130 138 131 mov al, 89h ; emit space … … 144 137 145 138 call DisplayPrint_CharacterFromAL 146 147 jmp .PrintLoop 148 139 jmp SHORT .PrintLoop 140 141 DisplayFormatCompressed_Format_2_I: 142 test ax, ax 143 jnz SHORT DisplayFormatCompressed_Format_2_u 144 mov si, g_szDashForZero ; if parameter equals zero, emit dash string instead 145 SKIP2B bx ; Fall through to DisplayFormat_ParseCharacters 149 146 150 147 ;-------------------------------------------------------------------- … … 161 158 ; AX, BX, CX, DX, BP 162 159 ;-------------------------------------------------------------------- 163 164 160 DisplayFormatCompressed_BaseFormatOffset: 165 166 161 DisplayFormat_ParseCharacters_FromAX: 167 mov si, ax162 mov si, ax 168 163 ; fall through to DisplayFormat_ParseCharacters 169 164 … … 174 169 ; and must be handled differently. 175 170 ; 176 cmp si, byte 07fh ; well within the boundaries of ROMVARS_size177 mov bx, cs ; preload bx with cs in case we take the following jump178 jb shortDisplayPrint_NullTerminatedStringFromBXSI171 cmp si, BYTE 7Fh ; well within the boundaries of ROMVARS_size 172 mov bx, cs ; preload bx with cs in case we take the following jump 173 jb SHORT DisplayPrint_NullTerminatedStringFromBXSI 179 174 180 175 .decode: 181 176 cs lodsb ; load next byte of the string 182 183 mov ch,al ; save a copy for later processing of high order bits 184 185 test al,0c0h ; check for translation/format character 186 jz DisplayFormatCompressed_TranslatesAndFormats 187 188 and al,03fh ; "Normal" character, mask off high order bits 189 add al,StringsCompressed_NormalBase ; and add character offset (usually around 0x40) 177 mov ch, al ; save a copy for later processing of high order bits 178 test al, 0C0h ; check for translation/format character 179 jz SHORT DisplayFormatCompressed_TranslatesAndFormats 180 181 and al, 3Fh ; "Normal" character, mask off high order bits 182 add al, StringsCompressed_NormalBase ; and add character offset (usually around 0x40) 190 183 191 184 .output: … … 193 186 194 187 .process_after_output: 195 eSHL_IM ch, 1 ; check high order bits for end of string or space196 jns shortDisplayFormatCompressed_ret197 jnc .decode198 mov al, ' '188 eSHL_IM ch, 1 ; check high order bits for end of string or space 189 jns SHORT DisplayFormatCompressed_ret 190 jnc SHORT .decode 191 mov al, ' ' 199 192 call DisplayPrint_CharacterFromAL 200 jmp .decode193 jmp SHORT .decode 201 194 202 195 … … 207 200 ; DisplayFormatCompressed_BaseFormatOffset and jump targets (must fit in 256 bytes) 208 201 ; 209 eSHL_IM ch,1 ; setup ch for later testing of null in .process_after_output 210 and ax,0001fh ; also clears AH for addition with BX and DX below 211 212 mov bx,StringsCompressed_TranslatesAndFormats ; calculate offset of translation/formats offset byte 213 add bx,ax 214 215 cmp al,StringsCompressed_FormatsBegin ; determine if this is a translation or a format 216 217 mov al,[cs:bx] ; fetch translation/formats byte 218 219 jb DisplayFormat_ParseCharacters.output ; check if this a translation or a format 202 eSHL_IM ch, 1 ; setup ch for later testing of null in .process_after_output 203 and ax, 001Fh ; also clears AH for addition with BX and DX below 204 205 mov bx, StringsCompressed_TranslatesAndFormats ; calculate offset of translation/formats offset byte 206 add bx, ax 207 208 cmp al, StringsCompressed_FormatsBegin ; determine if this is a translation or a format 209 mov al, [cs:bx] ; fetch translation/formats byte 210 jb SHORT DisplayFormat_ParseCharacters.output ; check if this a translation or a format 220 211 ; if it is translation, output and postprocess for eos 221 212 ; note that the flags for this conditional jump were 222 213 ; set with the cmp al,StringsCompressed_FormatsBegin 223 214 224 mov dx, DisplayFormatCompressed_BaseFormatOffset; calculate address to jump to for format handler225 sub dx, ax226 227 mov ax, [bp]; preload ax with parameter215 mov dx, DisplayFormatCompressed_BaseFormatOffset ; calculate address to jump to for format handler 216 sub dx, ax 217 218 mov ax, [bp] ; preload ax with parameter 228 219 dec bp ; if no parameter is needed (format 'nl' for example), 229 220 dec bp ; the format handler can reincrement bp 230 221 231 mov bx, 0500h ; preload bh with 5 decimal places for numeric output222 mov bx, 0500h ; preload bh with 5 decimal places for numeric output 232 223 ; bl is zero, indicating not to output a 'h' (default base 10) 233 224 … … 235 226 push cx 236 227 237 mov si,10 ; preload si with 10 for numeric output (default base 10) 238 228 mov si, 10 ; preload si with 10 for numeric output (default base 10) 239 229 call dx ; call the format routine 240 230 … … 242 232 pop si 243 233 244 jmp DisplayFormat_ParseCharacters.process_after_output ; continue postprocessing, check for end of string 245 234 jmp SHORT DisplayFormat_ParseCharacters.process_after_output ; continue postprocessing, check for end of string -
trunk/Assembly_Library/Src/Display/DisplayPrint.asm
r567 r580 125 125 DisplayPrint_WordFromAXWithBaseInBX: 126 126 push cx 127 push bx128 127 129 128 xor cx, cx 130 129 ALIGN DISPLAY_JUMP_ALIGN 131 130 .DivideLoop: 131 inc cx ; Increment character count 132 132 xor dx, dx ; DX:AX now holds the integer 133 133 div bx ; Divide DX:AX by base 134 134 push dx ; Push remainder 135 inc cx ; Increment character count136 135 test ax, ax ; All divided? 137 136 jnz SHORT .DivideLoop ; If not, loop 138 137 138 ALIGN DISPLAY_JUMP_ALIGN 139 139 PrintAllPushedDigits: ; Unused entrypoint OK 140 mov bx, g_rgcDigitToCharacter141 ALIGN DISPLAY_JUMP_ALIGN142 140 .PrintNextDigit: 143 141 pop ax ; Pop digit 144 cs xlatb 142 cmp al, 10 ; Convert binary digit in AL to ASCII hex digit ('0'-'9' or 'A'-'F') 143 sbb al, 69h 144 das 145 145 call DisplayPrint_CharacterFromAL 146 146 loop .PrintNextDigit 147 147 148 pop bx 149 pop cx 150 ret 151 152 g_rgcDigitToCharacter: db "0123456789ABCDEF" 153 154 %endif ; MODULE_STRINGS_COMPRESSED 148 pop cx 149 ret 150 %endif ; ~MODULE_STRINGS_COMPRESSED 155 151 156 152 ;-------------------------------------------------------------------- … … 170 166 DisplayPrint_QWordFromSSBPwithBaseInBX: 171 167 push cx 172 push bx173 168 174 169 mov cx, bx ; CX = Integer base … … 181 176 cmp WORD [bp], BYTE 0 ; All divided? 182 177 jne SHORT .DivideLoop ; If not, loop 183 mov cx, bx ; Character count to CX178 xchg cx, bx ; Character count to CX, Integer base to BX 184 179 jmp SHORT PrintAllPushedDigits 185 180 %endif -
trunk/Assembly_Library/Src/Menu/MenuBorders.asm
r568 r580 388 388 mov si, ATTRIBUTE_CHARS.cNormalTimeout 389 389 cmp di, BYTE MENU_TIMEOUT_SECONDS_FOR_HURRY 390 jnb SHORT .NormalTimeout 391 dec si ; SI = ATTRIBUTE_CHARS.cHurryTimeout 392 .NormalTimeout: 390 sbb si, 0 ; SI = ATTRIBUTE_CHARS.cHurryTimeout (if CF was set) 393 391 call MenuAttribute_GetToAXfromTypeInSI 394 392 -
trunk/Assembly_Library/Src/Util/Memory.asm
r526 r580 159 159 ; CX 160 160 ;-------------------------------------------------------------------- 161 %ifndef EXCLUDE_FROM_XTIDECFG 161 %ifndef EXCLUDE_FROM_XTIDECFG OR NO_ATAID_VALIDATION 162 162 ALIGN JUMP_ALIGN 163 163 Memory_SumCXbytesFromESSItoAL: -
trunk/Assembly_Library/Src/Util/Size.asm
r567 r580 57 57 .MagnitudeConversionLoop: 58 58 ePUSH_T di, .MagnitudeConversionLoop; DI corrupted only on 8086/8088 build 59 %ifdef USE_186 59 60 test bx, bx ; Bits 32...47 in use? 60 61 jnz SHORT Size_DivideSizeInBXDXAXby1024andIncrementMagnitudeInCX 61 62 test dx, dx ; Bits 16...31 in use? 62 63 jnz SHORT Size_DivideSizeInBXDXAXby1024andIncrementMagnitudeInCX 64 %else ; 808x 65 mov di, bx 66 or di, dx 67 jnz SHORT Size_DivideSizeInBXDXAXby1024andIncrementMagnitudeInCX 68 %endif 63 69 cmp ax, 10000 ; 5 digits needed? 64 70 jae SHORT Size_DivideSizeInBXDXAXby1024andIncrementMagnitudeInCX … … 68 74 ; Convert remainder to tenths 69 75 xchg bx, ax ; Store AX 70 mov a x, 576 mov al, 5 ; AH = 0 71 77 mul cx ; DX:AX = remainder * (10 / 2) 72 78 %ifdef USE_186 … … 89 95 ret 90 96 .rgbMagnitudeToChar: db " kMGTP" 91 %endif92 97 93 98 ;-------------------------------------------------------------------- … … 95 100 ; Parameters: 96 101 ; BX:DX:AX: Size 97 ; CX: Magnitude in BYTE_MULTIPLES 102 ; CX: Magnitude in BYTE_MULTIPLES (must be 254 or less) 98 103 ; Returns: 99 104 ; BX:DX:AX: Size in magnitude … … 105 110 ALIGN UTIL_SIZE_JUMP_ALIGN 106 111 Size_DivideSizeInBXDXAXby1024andIncrementMagnitudeInCX: 112 inc cx ; Increment magnitude 113 mov si, 1023 114 and si, ax ; Remainder now in SI 115 ; Fall to Size_DivideSizeInBXDXAXby1024 116 %endif ; INCLUDE_MENU_LIBRARY 117 118 ;-------------------------------------------------------------------- 119 ; Size_DivideSizeInBXDXAXby1024 120 ; Parameters: 121 ; BX:DX:AX: Size 122 ; CX: Must be 255 or less 123 ; Returns: 124 ; BX:DX:AX: Size divided by 1024 125 ; Corrupts registers: 126 ; Nothing 127 ;-------------------------------------------------------------------- 128 ALIGN UTIL_SIZE_JUMP_ALIGN 129 Size_DivideSizeInBXDXAXby1024: 130 %ifdef USE_386 131 shrd ax, dx, 10 132 shrd dx, bx, 10 133 shr bx, 10 134 %else 107 135 push cx 108 xor si, si ; Zero remainder 109 mov cl, 10 ; Divide by 1024 136 mov cl, 10 110 137 ALIGN UTIL_SIZE_JUMP_ALIGN 111 138 .ShiftLoop: 112 139 call Size_DivideBXDXAXbyTwo 113 rcr si, 1 ; Update remainder114 140 loop .ShiftLoop 115 %ifdef USE_186 116 shr si, 6 ; Remainder to SI beginning 117 %else 118 mov cl, 6 119 shr si, cl 141 pop cx 120 142 %endif 121 pop cx122 inc cx ; Increment magnitude123 143 ret 124 144 … … 134 154 ; Nothing 135 155 ;-------------------------------------------------------------------- 156 %ifdef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS 157 %ifdef USE_386 158 %define EXCLUDE 159 %endif 160 %ifdef MODULE_BOOT_MENU 161 %undef EXCLUDE 162 %endif 163 %endif 164 165 %ifndef EXCLUDE 136 166 ALIGN UTIL_SIZE_JUMP_ALIGN 137 167 Size_ConvertSectorCountInBXDXAXtoKiB: ; unused entrypoint ok … … 141 171 rcr ax, 1 ; ...kiB 142 172 ret 173 %endif 174 %undef EXCLUDE -
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdePioBlock.asm
r567 r580 49 49 ALIGN JUMP_ALIGN 50 50 .InswLoop: 51 %rep 8 51 %rep 8 ; WORDs 52 52 XTIDE_INSW 53 53 %endrep … … 76 76 rep insb 77 77 ret 78 %else ; If 8088/808678 %else ; 808x 79 79 UNROLL_SECTORS_IN_CX_TO_OWORDS 80 80 ALIGN JUMP_ALIGN … … 112 112 ret 113 113 114 %else ; If 8088/8086114 %else ; 808x 115 115 UNROLL_SECTORS_IN_CX_TO_OWORDS 116 116 ALIGN JUMP_ALIGN … … 130 130 db 0C1h ; SHL 131 131 db 0E1h ; CX 132 db 7 ; 7 132 db 7 ; 7 (Sectors to DWORDs) 133 133 rep 134 134 db 66h ; Override operand size to 32-bit … … 155 155 ; Nothing 156 156 ; Corrupts registers: 157 ; AX, BX, CX , DX157 ; AX, BX, CX 158 158 ;-------------------------------------------------------------------- 159 159 ALIGN JUMP_ALIGN … … 162 162 UNROLL_SECTORS_IN_CX_TO_QWORDS 163 163 mov bl, 8 ; Bit mask for toggling data low/high reg 164 push es ; Copy ES...165 pop ds ; ...to DS164 push es 165 pop ds 166 166 ALIGN JUMP_ALIGN 167 167 .OutswLoop: … … 183 183 ; Nothing 184 184 ; Corrupts registers: 185 ; AX, BX, CX , DX185 ; AX, BX, CX 186 186 ;-------------------------------------------------------------------- 187 187 ALIGN JUMP_ALIGN … … 189 189 UNROLL_SECTORS_IN_CX_TO_QWORDS 190 190 push ds 191 push es ; Copy ES...192 pop ds ; ...to DS191 push es 192 pop ds 193 193 ALIGN JUMP_ALIGN 194 194 .WriteNextQword: 195 195 %rep 4 ; WORDs 196 XTIDE_MOD_OUTSW ; special macro196 XTIDE_MOD_OUTSW 197 197 %endrep 198 198 loop .WriteNextQword … … 210 210 ; Nothing 211 211 ; Corrupts registers: 212 ; AX, BX, CX , DX212 ; AX, BX, CX 213 213 ;-------------------------------------------------------------------- 214 214 ALIGN JUMP_ALIGN … … 220 220 ret 221 221 222 %else ; If 8088/8086 223 UNROLL_SECTORS_IN_CX_TO_QWORDS 224 push ds 225 ;mov ax, es 226 ;mov ds, ax ; move es to ds via ax (does this run faster on 8088?) 222 %else ; 808x 223 UNROLL_SECTORS_IN_CX_TO_QWORDS 224 push ds 227 225 push es 228 226 pop ds … … 231 229 %rep 8 ; BYTEs 232 230 lodsb ; Load BYTE from [DS:SI] 233 out dx, al; Write BYTE231 out dx, al ; Write BYTE 234 232 %endrep 235 233 loop .WriteNextQword … … 251 249 ; Nothing 252 250 ; Corrupts registers: 253 ; AX, BX, CX , DX251 ; AX, BX, CX 254 252 ;-------------------------------------------------------------------- 255 253 ALIGN JUMP_ALIGN … … 261 259 ret 262 260 263 %else ; If 8088/8086 264 UNROLL_SECTORS_IN_CX_TO_QWORDS 265 push ds 266 ;mov ax, es 267 ;mov ds, ax ; move es to ds via ax (does this run faster on 8088?) 261 %else ; 808x 262 UNROLL_SECTORS_IN_CX_TO_QWORDS 263 push ds 268 264 push es 269 265 pop ds … … 272 268 %rep 4 ; WORDs 273 269 lodsw ; Load WORD from [DS:SI] 274 out dx, ax; Write WORD270 out dx, ax ; Write WORD 275 271 %endrep 276 272 loop .WriteNextQword 277 273 pop ds 278 274 ret 279 %endif ; if/else USE_186275 %endif 280 276 281 277 ;-------------------------------------------------------------------- … … 284 280 db 0C1h ; SHL 285 281 db 0E1h ; CX 286 db 7 ; 7 282 db 7 ; 7 (Sectors to DWORDs) 287 283 es ; Source is ES segment 288 284 rep -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH15h_HSize.asm
r567 r580 74 74 75 75 ;-------------------------------------------------------------------- 76 ; AH15h_GetSectorCountFromForeignDriveToDXAX :77 ; AH15h_GetSectorCountToBXDXAX :76 ; AH15h_GetSectorCountFromForeignDriveToDXAX 77 ; AH15h_GetSectorCountToBXDXAX 78 78 ; Parameters: 79 79 ; DL: Drive number (AH15h_GetSectorCountFromForeignDriveToDXAX only) -
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/EBIOS/AH48h_GetExtendedDriveParameters.asm
r568 r580 100 100 jb Prepare_ReturnFromInt13hWithInvalidFunctionError 101 101 mov [di+EDRIVE_INFO.wSize], ax 102 add al, EDRIVEINFO_SIZE_WITH_DPTE - MINIMUM_EDRIVEINFO_SIZE102 mov al, EDRIVEINFO_SIZE_WITH_DPTE 103 103 cmp cx, ax 104 104 jb SHORT .SkipEddConfigurationParameters 105 mov [di+EDRIVE_INFO.wSize], a x105 mov [di+EDRIVE_INFO.wSize], al 106 106 107 107 ; Store DPTE for standard controllers only, … … 159 159 mov [di+EDRIVE_INFO.dwCylinders+2], cx 160 160 161 x or ax, ax ; Success161 xchg ax, cx ; Success 162 162 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH -
trunk/XTIDE_Universal_BIOS/Src/Initialization/AtaID.asm
r568 r580 32 32 ; AX, BX, CX 33 33 ;-------------------------------------------------------------------- 34 %ifndef NO_ATAID_VALIDATION 34 35 AtaID_VerifyFromESSI: 35 36 ; We cannot start by reading ATA version since the ID might be … … 87 88 .ValidPCHorSinOffsetBX: 88 89 ret 90 %endif ; NO_ATAID_VALIDATION 89 91 90 92 -
trunk/XTIDE_Universal_BIOS/Src/Initialization/DetectDrives.asm
r568 r580 48 48 call StartDetectionWithDriveSelectByteInBHandStringInCX 49 49 50 %ifdef MODULE_HOTKEYS 51 %ifdef MODULE_SERIAL 52 ; This is only needed for hotkey F6 (ComDtct) to work 53 call ScanHotkeysFromKeyBufferAndStoreToBootvars ; Done here while CX is still protected 54 %endif 55 %endif 56 50 57 pop cx 51 58 … … 68 75 69 76 %ifdef MODULE_HOTKEYS 70 cmp al, COM_DETECT_HOTKEY_SCANCODE ; Set by last call to HotkeyBar_UpdateDuringDriveDetectionabove77 cmp al, COM_DETECT_HOTKEY_SCANCODE ; Set by last call to ScanHotkeysFromKeyBufferAndStoreToBootvars above 71 78 je .DriveDetectLoop 72 79 %endif … … 76 83 and al, 8 ; 8 = alt key depressed, same as FLG_ROMVARS_SERIAL_ALWAYSDETECT 77 84 jnz .DriveDetectLoop 78 %endif 85 %endif ; MODULE_SERIAL 79 86 80 87 .AddHardDisks: … … 226 233 ;-------------------------------------------------------------------- 227 234 CreateBiosTablesForHardDisk: 235 %ifndef NO_ATAID_VALIDATION 228 236 push bx 229 237 call AtaID_VerifyFromESSI 230 238 pop bx 231 239 jnz SHORT DetectDrives_DriveNotFound 240 %endif 232 241 call CreateDPT_FromAtaInformation 233 242 jc SHORT DetectDrives_DriveNotFound -
trunk/XTIDE_Universal_BIOS/Src/Initialization/Initialize.asm
r567 r580 82 82 call RamVars_Initialize 83 83 call BootVars_Initialize 84 %ifdef MODULE_HOTKEYS 85 ; This is a simple fix for the so called "No Fixed Disk Present in FDISK"-bug introduced in r551. MODULE_HOTKEYS includes the internal 86 ; module MODULE_DRIVEXLATE which is needed if interrupt handlers are installed before drive detection. The reason for this is that 87 ; Interrupts_InitializeInterruptVectors won't install our interrupt 13h handler if no drives were detected (unless MODULE_DRIVEXLATE is included). 88 ; Since the drive detection hasn't been done yet, the handler will not be installed, causing the above mentioned bug. 84 89 call Interrupts_InitializeInterruptVectors ; HotkeyBar requires INT 40h so install handlers before drive detection 85 90 call DetectDrives_FromAllIDEControllers 91 %else 92 ; Without MODULE_HOTKEYS (or actually MODULE_DRIVEXLATE) we *must* use this call order. 93 call DetectDrives_FromAllIDEControllers 94 call Interrupts_InitializeInterruptVectors 95 %endif 86 96 mov [RAMVARS.wDrvDetectSignature], es ; No longer in drive detection mode (set normal timeouts) 87 97 ; Fall to .StoreDptPointersToIntVectors -
trunk/XTIDE_Universal_BIOS/Src/Initialization/Interrupts.asm
r558 r580 22 22 23 23 ;-------------------------------------------------------------------- 24 ; Drives must be detected before this function is called! 24 ; Drives must be detected before this function is called unless 25 ; MODULE_DRIVEXLATE has been included in the BIOS. 25 26 ; 26 27 ; Interrupts_InitializeInterruptVectors -
trunk/XTIDE_Universal_BIOS/Src/VariablesAndDPTs/AtaGeometry.asm
r568 r580 304 304 ; Max = 16,514,064 / 63 = 262128 305 305 mov cx, LBA_ASSIST_SPT ; CX = 63 306 call Math_DivDXAXbyCX 306 call Math_DivDXAXbyCX ; Preserves CX 307 307 push dx 308 308 push ax ; Value CH stored for later use … … 316 316 ; AX = Number of heads = ((Value CH - 1) / 1024) + 1 317 317 ; Max = (262127 / 1024) + 1 = 256 318 push si 319 call Size_DivideSizeInBXDXAXby1024andIncrementMagnitudeInCX 320 pop si 318 call Size_DivideSizeInBXDXAXby1024 ; Preserves CX 321 319 inc ax ; + 1 322 320 323 321 ; Heads must be 16, 32, 64, 128 or 255 (round up to the nearest) 324 322 ; Max = 255 325 mov c x, 16 ; Min number of heads323 mov cl, 16 ; Min number of heads 326 324 .CompareNextValidNumberOfHeads: 327 325 cmp ax, cx -
trunk/XTIDE_Universal_BIOS/makefile
r567 r580 35 35 # RESERVE_DIAGNOSTIC_CYLINDER Reserve one L-CHS cylinder for compatibility with old BIOSes # 36 36 # DANGEROUS_DETECTION Scans Advanced Controllers from dangerous ports like mirrored PIC # 37 # NO_ATAID_VALIDATION *** Excludes code that tries to ensure proper communication with drives # 37 38 # USE_186 Use instructions supported by 80188/80186 and V20/V30 and later # 38 39 # USE_286 Use instructions supported by 286 and later (defines USE_UNDOC_INTEL)# … … 42 43 # # 43 44 # ** AT Builds only (when USE_AT is defined) # 45 # *** Use this only when certain known good drives are not being detected (eg WD Caviars) # 44 46 #################################################################################################### 45 47 … … 101 103 # Assembler preprocessor defines. # 102 104 ################################################################# 103 DEFINES_COMMON = MODULE_STRINGS_COMPRESSED MODULE_HOTKEYS MODULE_8BIT_IDE MODULE_EBIOS MODULE_SERIAL MODULE_SERIAL_FLOPPY MODULE_POWER_MANAGEMENT RESERVE_DIAGNOSTIC_CYLINDER 105 DEFINES_COMMON = MODULE_STRINGS_COMPRESSED MODULE_HOTKEYS MODULE_8BIT_IDE MODULE_EBIOS MODULE_SERIAL MODULE_SERIAL_FLOPPY MODULE_POWER_MANAGEMENT RESERVE_DIAGNOSTIC_CYLINDER NO_ATAID_VALIDATION 104 106 DEFINES_COMMON_LARGE = MODULE_BOOT_MENU MODULE_8BIT_IDE_ADVANCED MODULE_COMPATIBLE_TABLES 105 107 106 108 DEFINES_XT = $(DEFINES_COMMON) ELIMINATE_CGA_SNOW MODULE_8BIT_IDE_ADVANCED 107 DEFINES_XTPLUS = $(DEFINES_ COMMON) $(DEFINES_XT) USE_186109 DEFINES_XTPLUS = $(DEFINES_XT) USE_186 108 110 DEFINES_AT = $(DEFINES_COMMON) USE_AT USE_286 MODULE_IRQ MODULE_ADVANCED_ATA MODULE_COMPATIBLE_TABLES 109 111 … … 112 114 DEFINES_AT_LARGE = $(DEFINES_AT) $(DEFINES_COMMON_LARGE) 113 115 114 DEFINES_XT_TINY = MODULE_STRINGS_COMPRESSED MODULE_8BIT_IDE 116 DEFINES_XT_TINY = MODULE_STRINGS_COMPRESSED MODULE_8BIT_IDE NO_ATAID_VALIDATION 115 117 DEFINES_386_8K = $(DEFINES_AT) USE_386 116 118 -
trunk/XTIDE_Universal_BIOS_Configurator_v2/Src/Menupages/BootMenuSettingsMenu.asm
r567 r580 163 163 push cs 164 164 pop ds 165 call Buffers_GetRomvarsFlagsToAX 165 166 call .EnableOrDisableScanForSerialDrives 166 167 call .EnableOrDisableDefaultBootDrive … … 173 174 ; .EnableOrDisableScanForSerialDrives 174 175 ; Parameters: 175 ; SS:BP: Menu handle 176 ; Returns: 177 ; Nothing 178 ; Corrupts registers: 179 ; AX, BX 176 ; AX: ROMVARS.wFlags 177 ; SS:BP: Menu handle 178 ; Returns: 179 ; Nothing 180 ; Corrupts registers: 181 ; BX 180 182 ;-------------------------------------------------------------------- 181 183 ALIGN JUMP_ALIGN 182 184 .EnableOrDisableScanForSerialDrives: 183 call Buffers_GetRomvarsFlagsToAX184 185 mov bx, g_MenuitemBootMenuSerialScanDetect 185 186 test ax, FLG_ROMVARS_MODULE_SERIAL … … 190 191 ; .EnableOrDisableDefaultBootDrive 191 192 ; Parameters: 192 ; SS:BP: Menu handle 193 ; Returns: 194 ; Nothing 195 ; Corrupts registers: 196 ; AX, BX 193 ; AX: ROMVARS.wFlags 194 ; SS:BP: Menu handle 195 ; Returns: 196 ; Nothing 197 ; Corrupts registers: 198 ; BX 197 199 ;-------------------------------------------------------------------- 198 200 ALIGN JUMP_ALIGN 199 201 .EnableOrDisableDefaultBootDrive: 200 call Buffers_GetRomvarsFlagsToAX201 202 mov bx, g_MenuitemBootMnuStngsDefaultBootDrive 202 test ax, FLG_ROMVARS_MODULE_HOTKEYS 203 test ax, FLG_ROMVARS_MODULE_HOTKEYS | FLG_ROMVARS_MODULE_BOOT_MENU 203 204 jmp SHORT .DisableMenuitemFromCSBXifZFset 204 205 … … 207 208 ; .EnableOrDisableBootMenuSelectionTimeout 208 209 ; Parameters: 209 ; SS:BP: Menu handle 210 ; Returns: 211 ; Nothing 212 ; Corrupts registers: 213 ; AX, BX 210 ; AX: ROMVARS.wFlags 211 ; SS:BP: Menu handle 212 ; Returns: 213 ; Nothing 214 ; Corrupts registers: 215 ; BX 214 216 ;-------------------------------------------------------------------- 215 217 ALIGN JUMP_ALIGN 216 218 .EnableOrDisableBootMenuSelectionTimeout: 217 call Buffers_GetRomvarsFlagsToAX218 219 mov bx, g_MenuitemBootMnuStngsSelectionTimeout 219 220 test ax, FLG_ROMVARS_MODULE_BOOT_MENU
Note:
See TracChangeset
for help on using the changeset viewer.