disk unit - 8. if nhard gt 8 dph16 dw 0000h,0000h ; translate table. dw 0000h,0000h ; scratch area. dw dpbh8 ; disk parameter block. dw 00000h,0ffffh ; checksum, allocation. dw 0ffffh,0ffffh,0ffffh ; DIRBCB, DATBCB, TBLSEG. endif ; hard disk unit - 9. if nhard gt 9 dph17 dw 0000h,0000h ; translate table. dw 0000h,0000h ; scratch area. dw dpbh9 ; disk parameter block. dw 00000h,0ffffh ; checksum, allocation. dw 0ffffh,0ffffh,0ffffh ; DIRBCB, DATBCB, TBL mov byte ptr [bx],dmalcon ;load constants command. call mwissue ; do load constants. push ds ; save data segment. mov dx,0 ; ds = 0. mov ds,dx mov word ptr .chan,cx ; restore whatever was at 50,51. mov byte ptr .chan+2,ah ; restore whatever was at 52. sti ; re-enable interrupts. pop ds ret ; ; do the opration specified by a register. ; mwprep: mov byte ptr dmaop,al ;save command channel op code. ; do the operation specified by dmaop. mwrdwr: mov cl,band1 mov bx,word pv al,bl cmp al,dl ret l_7 equ $ ; bios stack area. tmpsp rw 1 rw 40 ; 20 levels. tmp_tos rw 0 ; top of stack. ; Morrow 5-inch Winchester Controller Scratch Area. mwtab rs 0 ; collectionof track addresses. dw 0ffffh ; initialize to dw 0ffffh ; (way out on the end of disk.) dw 0ffffh dw 0ffffh mwop db 0 mwhead db 0 ; currently selected head. mwsectr rs 0 db 0 ; currently selected sector. dmachan equ (offset $) ; command channel area. dmasel0 db 0 ; drive select. dmastble. dw 0000h,0000h ; scratch area. dw dpbh2 ; disk parameter block. dw 00000h,0ffffh ; checksum, allocation. dw 0ffffh,0ffffh,0ffffh ; DIRBCB, DATBCB, TBLSEG. endif ; hard disk unit - 3. if nhard gt 3 dph11 dw 0000h,0000h ; translate table. dw 0000h,0000h ; scratch area. dw dpbh3 ; disk parameter block. dw 00000h,0ffffh ; checksum, allocation. dw 0ffffh,0ffffh,0ffffh ; DIRBCB, DATBCB, TBLSEG. endif ; hard disk unit - 4. if nhard gt 4 dph12 dw 0000hSEG. endif ; hard disk unit - 10. if nhard gt 10 dph18 dw 0000h,0000h ; translate table. dw 0000h,0000h ; scratch area. dw dpbh10 ; disk parameter block. dw 00000h,0ffffh ; checksum, allocation. dw 0ffffh,0ffffh,0ffffh ; DIRBCB, DATBCB, TBLSEG. endif ; hard disk unit - 11. if nhard gt 11 dph19 dw 0000h,0000h ; translate table. dw 0000h,0000h ; scratch area. dw dpbh11 ; disk parameter block. dw 00000h,0ffffh ; checksum, allocation. dw 0ffffh,0ffffhtr dmarg0 mov dx,precomp call mwhlcde jb mwpreps mov cl,band2 mov dx,lowcurr call mwhlcde jb mwpreps mov cl,band