; out: nothing. ;\r
;-----------------------------------;\r
dma_transfer:\r
- push eax\r
- push edx\r
- push esi\r
- cli\r
- or bh, bh\r
- jz .dont_read\r
+ push eax\r
+ push edx\r
+ push esi\r
+ cli\r
+ or bh, bh\r
+ jz .dont_read\r
\r
- mov bh, bl\r
- add bh, 0x48\r
- jmp .read\r
- .dont_read:\r
- mov bh, bl\r
- add bh, 0x44\r
- .read:\r
- dec esi\r
+ mov bh, bl\r
+ add bh, 0x48\r
+ jmp .read\r
+ .dont_read:\r
+ mov bh, bl\r
+ add bh, 0x44\r
+ .read:\r
+ dec esi\r
\r
- movzx eax, bl\r
- mov dx, word [(eax*2)+dma_mask_reg]\r
- mov al, bl\r
- or al, 0x04\r
- out dx, al ; disable the channel\r
+ movzx eax, bl\r
+ mov dx, word [(eax*2)+dma_mask_reg]\r
+ mov al, bl\r
+ or al, 0x04\r
+ out dx, al ; disable the channel\r
\r
- movzx eax, bl\r
- mov dx, word [(eax*2)+dma_clear_reg]\r
- mov al, 0\r
- out dx, al ; initialize flip-flop\r
+ movzx eax, bl\r
+ mov dx, word [(eax*2)+dma_clear_reg]\r
+ mov al, 0\r
+ out dx, al ; initialize flip-flop\r
\r
- movzx eax, bl\r
- mov dx, word [(eax*2)+dma_mode_reg]\r
- mov al, bh\r
- out dx, al ; set DMA mode\r
+ movzx eax, bl\r
+ mov dx, word [(eax*2)+dma_mode_reg]\r
+ mov al, bh\r
+ out dx, al ; set DMA mode\r
\r
- movzx eax, bl\r
- mov dx, word [(eax*2)+dma_addr_port]\r
- mov al, cl\r
- out dx, al ; write low offset part\r
- mov al, ch\r
- out dx, al ; and high offset part\r
+ movzx eax, bl\r
+ mov dx, word [(eax*2)+dma_addr_port]\r
+ mov al, cl\r
+ out dx, al ; write low offset part\r
+ mov al, ch\r
+ out dx, al ; and high offset part\r
\r
- movzx eax, bl\r
- mov dx, word [(eax*2)+dma_page_port]\r
- mov eax, ecx\r
- shr eax, 16\r
- out dx, al ; write page.\r
+ movzx eax, bl\r
+ mov dx, word [(eax*2)+dma_page_port]\r
+ mov eax, ecx\r
+ shr eax, 16\r
+ out dx, al ; write page.\r
\r
- movzx eax, bl\r
- mov dx, word [(eax*2)+dma_count_port]\r
- mov eax, esi\r
- out dx, al ; low count\r
- mov al, ah\r
- out dx, al ; high count\r
+ movzx eax, bl\r
+ mov dx, word [(eax*2)+dma_count_port]\r
+ mov eax, esi\r
+ out dx, al ; low count\r
+ mov al, ah\r
+ out dx, al ; high count\r
\r
- movzx eax, bl\r
- mov dx, word [(eax*2)+dma_mask_reg]\r
- mov al, bl\r
- out dx, al ; enable channel\r
+ movzx eax, bl\r
+ mov dx, word [(eax*2)+dma_mask_reg]\r
+ mov al, bl\r
+ out dx, al ; enable channel\r
\r
- sti\r
- pop esi\r
- pop edx\r
- pop eax\r
- ret
\ No newline at end of file
+ sti\r
+ pop esi\r
+ pop edx\r
+ pop eax\r
+ ret
\ No newline at end of file