;else bump to next head. mov cl,al ;update sector count. jmps seclp ;and do it again. secfnd: mov al,dh ;get head. mov byte ptr mwhead,al ;save it. mov al,cl ;get sector. mov byte ptr mwsectr,al ;save it also. rwsect: mov ercnt,rtcnt ; initialize retry counter. retry: call mwrdwr ;go to it. jnc mwexit ; exit if good read. dec ercnt ; decrement error counter. jnz retry ; loop back till zero. stc ; set error (carry) flag. mwexit: ret ; ; these are the low level ble interrupts during startup. mov cx,word ptr .chan ; save contents of 50,51,52h. mov ah,byte ptr .chan+2 mov word ptr .chan,dx ;chan addr bits a00-a15. mov byte ptr .chan+2,al ;chan addr bits a16-a19. pop ds mov word ptr dmalnk,dx ;put link at end of channel. mov byte ptr dmalnk+2,al mov bx,(offset dmarg1) ;load arguments. mov byte ptr [bx],stepdly ;load step delay. inc bx mov byte ptr [bx],headdly ;head settle delay. inc bx mov byte ptr [bx],sectsiz ;sector size code. inc bx if successful completion. stc ; set carry for error indicator. mwiret: ret ;return no error (carry reset). ; return with bx pointing to the track word for hrddsk. mwptr: mov dl,byte ptr hrddsk ;get track address. shl dl,1 mov dh,0 mov bx,(offset mwtab) add bx,dx ret mwnegh1: mov al,bh not al mov bh,al mov al,bl not al mov bl,al inc bx ret mwhlmde: xchg bx,dx call mwnegh1 xchg bx,dx add bx,dx ret mwhlcde: mov al,bh cmp al,dh jz l_6 ret l_6: moa. dw dpbh0 ; disk parameter block. dw 00000h,0ffffh ; checksum, allocation. dw 0ffffh,0ffffh,0ffffh ; DIRBCB, DATBCB, TBLSEG. ; hard disk unit - 1. if nhard gt 1 ; if 2 or more drives. dph9 dw 0000h,0000h ; translate table. dw 0