Changeset 414 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src


Ignore:
Timestamp:
May 3, 2012, 12:56:04 PM (13 years ago)
Author:
aitotat@…
google:author:
aitotat@gmail.com
Message:

Changes to XTIDE Universal BIOS:

  • MEMPIOVARS no longer overflow when not building MODULE_EBIOS.
Location:
trunk/XTIDE_Universal_BIOS/Src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeIO.asm

    r412 r414  
    3333;--------------------------------------------------------------------
    3434IdeIO_OutputALtoIdeControlBlockRegisterInDL:
    35 %ifdef MODULE_8BIT_IDE
    36     mov     dh, [di+DPT_ATA.bDevice]
    37 %ifdef MODULE_JRIDE
    38     test    dh, dh
    39     jnz     SHORT .OutputToIoMappedIde
    40 
    41     add     dx, JRIDE_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET
    42     jmp     SHORT OutputToJrIdeRegister
    43 .OutputToIoMappedIde:
    44 %endif  ; MODULE_JRIDE
    45 %endif  ; MODULE_8BIT_IDE
     35    %ifdef MODULE_8BIT_IDE
     36        mov     dh, [di+DPT_ATA.bDevice]
     37        %ifdef MODULE_JRIDE
     38            test    dh, dh
     39            jnz     SHORT .OutputToIoMappedIde
     40       
     41            add     dx, JRIDE_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET
     42            jmp     SHORT OutputToJrIdeRegister
     43        .OutputToIoMappedIde:
     44        %endif  ; MODULE_JRIDE
     45    %endif  ; MODULE_8BIT_IDE
    4646
    4747    mov     bl, IDEVARS.wPortCtrl
     
    6262ALIGN JUMP_ALIGN
    6363IdeIO_OutputALtoIdeRegisterInDL:
    64 %ifdef MODULE_8BIT_IDE
    65     mov     dh, [di+DPT_ATA.bDevice]
    66 %ifdef MODULE_JRIDE
    67     test    dh, dh
    68     jnz     SHORT OutputALtoIOmappedIdeRegisterInDL
    69 
    70 %if JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET & 0FFh = 0
    71     mov     dh, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8
    72 %else
    73     add     dx, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET
    74 %endif
    75 OutputToJrIdeRegister:
    76     mov     bx, dx
    77     mov     [cs:bx], al
    78     ret
    79 ALIGN JUMP_ALIGN
    80 OutputALtoIOmappedIdeRegisterInDL:
    81 %endif  ; MODULE_JRIDE
    82 %endif  ; MODULE_8BIT_IDE
     64    %ifdef MODULE_8BIT_IDE
     65        mov     dh, [di+DPT_ATA.bDevice]
     66        %ifdef MODULE_JRIDE
     67            test    dh, dh
     68            jnz     SHORT OutputALtoIOmappedIdeRegisterInDL
     69       
     70        %if JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET & 0FFh = 0
     71            mov     dh, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8
     72        %else
     73            add     dx, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET
     74        %endif
     75        OutputToJrIdeRegister:
     76            mov     bx, dx
     77            mov     [cs:bx], al
     78            ret
     79        ALIGN JUMP_ALIGN
     80        OutputALtoIOmappedIdeRegisterInDL:
     81        %endif  ; MODULE_JRIDE
     82    %endif  ; MODULE_8BIT_IDE
    8383
    8484    mov     bl, IDEVARS.wPort
     
    114114;--------------------------------------------------------------------
    115115IdeIO_InputToALfromIdeRegisterInDL:
    116 %ifdef MODULE_8BIT_IDE
    117     mov     dh, [di+DPT_ATA.bDevice]
    118 %ifdef MODULE_JRIDE
    119     test    dh, dh
    120     jnz     SHORT .InputToALfromIOmappedIdeRegisterInDL
    121 
    122 %if JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET & 0FFh = 0
    123     mov     dh, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8
    124 %else
    125     add     dx, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET
    126 %endif
    127     mov     bx, dx
    128     mov     al, [cs:bx]
    129     ret
    130 .InputToALfromIOmappedIdeRegisterInDL:
    131 %endif  ; MODULE_JRIDE
    132 %endif  ; MODULE_8BIT_IDE
     116    %ifdef MODULE_8BIT_IDE
     117        mov     dh, [di+DPT_ATA.bDevice]
     118        %ifdef MODULE_JRIDE
     119            test    dh, dh
     120            jnz     SHORT .InputToALfromIOmappedIdeRegisterInDL
     121       
     122        %if JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET & 0FFh = 0
     123            mov     dh, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8
     124        %else
     125            add     dx, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET
     126        %endif
     127            mov     bx, dx
     128            mov     al, [cs:bx]
     129            ret
     130        .InputToALfromIOmappedIdeRegisterInDL:
     131        %endif  ; MODULE_JRIDE
     132    %endif  ; MODULE_8BIT_IDE
    133133    mov     bl, IDEVARS.wPort
    134134    call    GetIdePortToDX
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeTransfer.asm

    r402 r414  
    2020; Structure containing variables for PIO transfer functions.
    2121; This struct must not be larger than IDEPACK without INTPACK.
    22 struc PIOVARS
    23     .wDataPort              resb    2   ; 0, IDE Data Port
    24     .fnXfer                 resb    2   ; 2, Offset to transfer function
    25     .wSectorsInBlock        resb    2   ; 4, Block size in sectors
     22struc PIOVARS   ; Must not be larger than 9 bytes! See IDEPACK in RamVars.inc.
     23    .wDataPort              resb    2   ; 0-1, IDE Data Port
     24    .fnXfer                 resb    2   ; 2-3, Offset to transfer function
     25    .wSectorsInBlock        resb    2   ; 4-5, Block size in sectors
    2626    .bSectorsLeft           resb    1   ; 6, Sectors left to transfer
    2727                            resb    1   ; 7, IDEPACK.bDeviceControl
  • trunk/XTIDE_Universal_BIOS/Src/Device/IDE/JrIdeTransfer.asm

    r412 r414  
    2020; Structure containing variables for PIO transfer functions.
    2121; This struct must not be larger than IDEPACK without INTPACK.
    22 struc MEMPIOVARS
    23     .wSectorsInBlock        resb    2   ; 0, Block size in sectors
    24     .bSectorsLeft           resb    1   ; 2, Sectors left to transfer
    25     .bSectorsDone           resb    1   ; 3, Number of sectors xferred
    26                             resb    3   ; 4, 5, 6
     22struc MEMPIOVARS    ; Must not be larger than 9 bytes! See IDEPACK in RamVars.inc.
     23    .wSectorsInBlock        resb    2   ; 0-1, Block size in sectors
     24    .fpDPT                  resb    4   ; 2-5, Far pointer to DPT
     25    .bSectorsLeft           resb    1   ; 6, Sectors left to transfer
    2726                            resb    1   ; 7, IDEPACK.bDeviceControl
    28     .fpDPT                  resb    4   ; 8, Far pointer to DPT
     27    .bSectorsDone           resb    1   ; 8, Number of sectors xferred
    2928endstruc
    3029
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h.asm

    r395 r414  
    4545%ifdef MODULE_HOTKEYS
    4646    call    DriveXlate_ToOrBack
    47 %endif
    4847    mov     [RAMVARS.xlateVars+XLATEVARS.bXlatedDrv], dl
     48%endif
    4949
    5050    call    FindDPT_ForDriveNumberInDL  ; DS:DI points to our DPT, or NULL if not our drive
     
    129129    mov     [bp+IDEPACK.intpack+INTPACK.si], si
    130130    mov     [bp+IDEPACK.intpack+INTPACK.bx], bx
     131%ifdef MODULE_HOTKEYS
    131132    mov     [bp+IDEPACK.intpack+INTPACK.dh], dh
     133%else
     134    mov     [bp+IDEPACK.intpack+INTPACK.dx], dx
     135%endif
    132136    mov     [bp+IDEPACK.intpack+INTPACK.cx], cx
    133137    mov     [bp+IDEPACK.intpack+INTPACK.ax], ax
     
    135139    pop     WORD [bp+IDEPACK.intpack+INTPACK.flags]
    136140    call    RamVars_GetSegmentToDS
    137     cmp     dl, [RAMVARS.xlateVars+XLATEVARS.bXlatedDrv]
     141
     142%ifdef MODULE_HOTKEYS
     143    cmp     dl, [RAMVARS.xlateVars+XLATEVARS.bXlatedDrv]    ; DL is still drive number?
    138144    je      SHORT .ExchangeInt13hHandlers
    139     mov     [bp+IDEPACK.intpack+INTPACK.dl], dl     ; Something is returned in DL
     145    mov     [bp+IDEPACK.intpack+INTPACK.dl], dl ; Something is returned in DL
    140146ALIGN JUMP_ALIGN
    141147.ExchangeInt13hHandlers:
     148%endif
     149
    142150%ifdef USE_186
    143151    push    Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     
    192200Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH_ALHasDriveNumber:
    193201    call    Int13h_SetErrorCodeToBdaAndToIntpackInSSBPfromAH_ALHasDriveNumber
     202
    194203%else
    195204    call    Int13h_SetErrorCodeToBdaAndToIntpackInSSBPfromAH
    196205%endif
     206
    197207Int13h_ReturnFromHandlerWithoutStoringErrorCode:
    198208    or      WORD [bp+IDEPACK.intpack+INTPACK.flags], FLG_FLAGS_IF   ; Return with interrupts enabled
     
    265275    mov     bx, BDA.bHDLastSt
    266276    test    al, al
    267     js      .HardDisk
     277    js      SHORT .HardDisk
    268278    mov     bl, BDA.bFDRetST & 0xff
    269279.HardDisk:
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int19h.asm

    r413 r414  
    2929;--------------------------------------------------------------------
    3030Int19h_BootLoaderHandler:
    31     sti                                         ; Allow timer interrupts
    32     LOAD_BDA_SEGMENT_TO es, ax                  ; Load BDA segment (zero) to ES
     31    sti                                 ; Enable interrupts
     32    cld                                 ; String instructions to increment pointers
     33    LOAD_BDA_SEGMENT_TO es, ax          ; Load BDA segment (zero) to ES
    3334    ; Fall to .PrepareBootLoaderStack
    3435
Note: See TracChangeset for help on using the changeset viewer.