Changeset 553 in xtideuniversalbios


Ignore:
Timestamp:
Jun 8, 2013, 10:32:10 AM (11 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • Standard boot procedure (INT 19h) works again.
Location:
trunk/XTIDE_Universal_BIOS/Src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13hBiosInit.asm

    r552 r553  
    2828    LOAD_BDA_SEGMENT_TO ds, ax
    2929
    30     ; Restore system INT 13h handler that we backuped
    31     les     ax, [TEMPORARY_VECTOR_FOR_SYSTEM_INT13h*4]
    32     mov     [BIOS_DISK_INTERRUPT_13h*4], ax
    33     mov     [BIOS_DISK_INTERRUPT_13h*4+2], es
    34 
    3530    ; Now install our handler and call 19h since non-standard motherboard BIOS did not
    3631    ; do that or our INT 19h hander was replaced by other BIOS.
     
    3833    mov     [BIOS_BOOT_LOADER_INTERRUPT_19h*4+2], cs
    3934    int     BIOS_BOOT_LOADER_INTERRUPT_19h  ; Does not return
     35
     36
     37;--------------------------------------------------------------------
     38; Int13hBiosInit_RestoreSystemHandler
     39;   Parameters:
     40;       Nothing
     41;   Returns:
     42;       Nothing
     43;   Corrupts registers:
     44;       AX, DS, ES
     45;--------------------------------------------------------------------
     46Int13hBiosInit_RestoreSystemHandler:
     47    LOAD_BDA_SEGMENT_TO ds, ax
     48
     49    ; Is our very late init handler in place
     50    cmp     WORD [BIOS_DISK_INTERRUPT_13h*4], Int13hBiosInit_Handler
     51    jne     SHORT .SystemHandlerAlreadyInPlace
     52
     53    les     ax, [TEMPORARY_VECTOR_FOR_SYSTEM_INT13h*4]
     54    mov     [BIOS_DISK_INTERRUPT_13h*4], ax
     55    mov     [BIOS_DISK_INTERRUPT_13h*4+2], es
     56.SystemHandlerAlreadyInPlace:
     57    ret
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm

    r547 r553  
    2929;--------------------------------------------------------------------
    3030Int19h_BootLoaderHandler:
    31     sti                                 ; Enable interrupts
    32     cld                                 ; String instructions to increment pointers
    33     LOAD_BDA_SEGMENT_TO es, ax          ; Load BDA segment (zero) to ES
     31    sti                                         ; Enable interrupts
     32    cld                                         ; String instructions to increment pointers
     33    call    Int13hBiosInit_RestoreSystemHandler ; Needed if initialization was started on INT 13h instead on 19h
     34    LOAD_BDA_SEGMENT_TO es, ax                  ; Load BDA segment (zero) to ES
    3435    ; Fall to .PrepareBootLoaderStack
    3536
  • trunk/XTIDE_Universal_BIOS/Src/Initialization/Initialize.asm

    r552 r553  
    5353    mov     [BIOS_BOOT_LOADER_INTERRUPT_19h*4+2], cs
    5454
    55     ; Install special INT 13h hander that initialized XTIDE Universal BIOS
     55    ; Install special INT 13h hander that initializes XTIDE Universal BIOS
    5656    ; when our INT 19h is not called
    5757    les     ax, [BIOS_DISK_INTERRUPT_13h*4] ; Load system INT 13h handler
Note: See TracChangeset for help on using the changeset viewer.