Ignore:
Timestamp:
Apr 29, 2011, 7:04:13 PM (13 years ago)
Author:
aitotat
google:author:
aitotat
Message:

Changes to XTIDE Universal BIOS:

  • Redesigned Disk Parameter Tables.
  • Code generalizations for supporting non-IDE devices in the future.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH3h_HWrite.asm

    r148 r150  
    1313;       DL:     Translated Drive number
    1414;       DS:DI:  Ptr to DPT (in RAMVARS segment)
    15 ;       SS:BP:  Ptr to INTPACK
    16 ;   Parameters on INTPACK in SS:BP:
     15;       SS:BP:  Ptr to IDEREGS_AND_INTPACK
     16;   Parameters on INTPACK:
    1717;       AL:     Number of sectors to write
    1818;       CH:     Cylinder number, bits 7...0
     
    2121;       DH:     Starting head number (0...255)
    2222;       ES:BX:  Pointer to source data
    23 ;   Returns with INTPACK in SS:BP:
     23;   Returns with INTPACK:
    2424;       AH:     Int 13h/40h floppy return status
    2525;       CF:     0 if successfull, 1 if error
     
    2727ALIGN JUMP_ALIGN
    2828AH3h_HandlerForWriteDiskSectors:
    29     test    al, al                      ; Invalid sector count?
    30     jz      SHORT AH2h_ZeroCntErr       ;  If so, return with error
    31 
    32     ; Select sector or block mode command
    33     mov     ah, HCMD_WRITE_SECT         ; Load sector mode command
    34     cmp     BYTE [di+DPT.bSetBlock], 1  ; Block mode enabled?
    35     eCMOVA  ah, HCMD_WRITE_MUL          ; Load block mode command
    36 
    37     ; Transfer data
    38     call    HCommand_OutputCountAndLCHSandCommand
    39     jc      SHORT .ReturnWithErrorCodeInAH
    40     mov     bx, [bp+INTPACK.bx]
    41     call    HPIO_WriteBlock             ; Write data to IDE-controller
    42 .ReturnWithErrorCodeInAH:
     29    ; Prepare parameters
     30    mov     ah, COMMAND_WRITE_SECTORS   ; Load sector mode command
     31    test    WORD [di+DPT.wFlags], FLG_DPT_BLOCK_MODE_SUPPORTED
     32    eCMOVNZ ah, COMMAND_WRITE_MULTIPLE  ; Load block mode command
     33    mov     bx, TIMEOUT_AND_STATUS_TO_WAIT(TIMEOUT_DRQ, FLG_STATUS_DRQ)
     34    mov     si, [bp+IDEPACK.intpack+INTPACK.bx]
     35%ifdef USE_186
     36    push    Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     37    jmp     Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH
     38%else
     39    call    Idepack_TranslateOldInt13hAddressAndIssueCommandFromAH
    4340    jmp     Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH
     41%endif
Note: See TracChangeset for help on using the changeset viewer.