newold86 wrote:код для копирования блока данных из порта в память ?
В смысле код для CPU или FPGA?
Вот сетап DMA под чтение с флопа, выдернул из своего биоса.
Но это только сетап, дальше диску отправляется команда на обмен, и, собственно, происходит обмен
Code: Select all
DMA_CH2_BASE = 04h
DMA_CH2_CNTR = 05h
DMA_MODE = 0Bh
DMA_CLEAR_FF = 0Ch
DMA_CH2_PAGE = 81h
;------------------------------------------------------------------------------
;----- cf FDCSetupDMA(si = cmd, ES:di->dst, byte [bp]=sector count) -----------
;------------------------------------------------------------------------------
align 2
FDCSetupDMA: cli
;защелка и режим
out DMA_CLEAR_FF,al
mov ax,si
out DMA_MODE,al
;адрес
mov ax,ES
mov cl,4
rol ax,cl
mov ch,al
and al,0F0h
add ax,di
adc ch,0
;пишем
push ax
out DMA_CH2_BASE,al
mov al,ah
out DMA_CH2_BASE,al
mov al,ch
out DMA_CH2_PAGE,al
;кол-во
mov ah,[bp]
mov al,0
shr ax,1 ;sect*128
push ES
push di
les di,[1Eh*4]
mov cl,[ES:di+TFDC_DPT.BPS]
pop di
pop ES
shl ax,cl ;sect*BPS
dec ax
push ax
out DMA_CH2_CNTR,al
mov al,ah
out DMA_CH2_CNTR,al
sti
pop dx
pop ax
add ax,dx
jnc .1
mov [FDCRetCode],FDC_DMA_FAIL
.1: retn
Если код для FPGA, то я вообще вопроса не понял.
