Changeset 150 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH2h_HRead.asm
- Timestamp:
- Apr 29, 2011, 7:04:13 PM (14 years ago)
- google:author:
- aitotat
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Handlers/Int13h/AH2h_HRead.asm
r148 r150 13 13 ; DL: Translated Drive number 14 14 ; DS:DI: Ptr to DPT (in RAMVARS segment) 15 ; SS:BP: Ptr to I NTPACK16 ; Parameters on INTPACK in SS:BP:17 ; AL: Number of sectors to read (1...255 )15 ; SS:BP: Ptr to IDEPACK 16 ; Parameters on INTPACK: 17 ; AL: Number of sectors to read (1...255, 0=256) 18 18 ; CH: Cylinder number, bits 7...0 19 19 ; CL: Bits 7...6: Cylinder number bits 9 and 8 … … 21 21 ; DH: Starting head number (0...255) 22 22 ; ES:BX: Pointer to buffer recieving data 23 ; Returns with INTPACK in SS:BP:23 ; Returns with INTPACK: 24 24 ; AH: Int 13h/40h floppy return status 25 25 ; AL: Burst error length if AH returns 11h, undefined otherwise … … 28 28 ALIGN JUMP_ALIGN 29 29 AH2h_HandlerForReadDiskSectors: 30 test al, al ; Invalid sector count? 31 jz SHORT AH2h_ZeroCntErr ; If so, return with error 32 33 ; Select sector or block mode command 34 mov ah, HCMD_READ_SECT ; Load sector mode command 35 cmp BYTE [di+DPT.bSetBlock], 1 ; Block mode enabled? 36 eCMOVA ah, HCMD_READ_MUL ; Load block mode command 37 38 ; Transfer data 39 call HCommand_OutputCountAndLCHSandCommand 40 jc SHORT .ReturnWithErrorCodeInAH 41 mov bx, [bp+INTPACK.bx] 42 call HPIO_ReadBlock ; Read data from IDE-controller 43 .ReturnWithErrorCodeInAH: 30 mov ah, COMMAND_READ_SECTORS ; Load sector mode command 31 test WORD [di+DPT.wFlags], FLG_DPT_BLOCK_MODE_SUPPORTED 32 eCMOVNZ ah, COMMAND_READ_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 44 40 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 45 46 ; Invalid sector count (also for AH=3h and AH=4h) 47 AH2h_ZeroCntErr: 48 mov ah, RET_HD_INVALID ; Invalid value passed 49 jmp Int13h_ReturnFromHandlerAfterStoringErrorCodeFromAH 41 %endif
Note:
See TracChangeset
for help on using the changeset viewer.