Intel 80C188EC User Manual page 321

Hide thumbs Also See for 80C188EC:
Table of Contents

Advertisement

DIRECT MEMORY ACCESS UNIT
MOV
DX, D0DSTH
MOV
AX, BX
OUT
DX, AX
; THE POINTER ADDRESSES HAVE BEEN SET UP. NOW WE SET UP THE TRANSFER COUNT.
MOV
AX, 29
MOV
DX, D0TC
OUT
DX, AX
; NOW WE NEED TO SET THE PARAMETERS FOR THE CHANNEL AS FOLLOWS:
;
;
DESTINATION
;
-----------
;
MEMORY SPACE
;
INCREMENT PTR INCREMENT PTR
;
; TERMINATE ON TC, NO INTERRUPT, UNSYNCHRONIZED, LOW PRIORITY RELATIVE
; TO CHANNEL 1, BYTE XFERS. WE START THE CHANNEL.
MOV
AX, 1011011000000110B
MOV
DX, D0CON
OUT
DX, AX
; THE UNSYNCHRONIZED BURST IS NOW RUNNING ON THE BUS...
; NOW SET UP CHANNEL 1 TO SERVICE THE DISK CONTROLLER.
; FOR THIS EXAMPLE WE WILL ONLY BE READING FROM THE DISK.
; THE SOURCE IS THE I/O PORT FOR THE DISK CONTROLLER.
MOV
AX, DISK_IO_ADDR
MOV
DX, D1SRCL
OUT
DX, AX
XOR
AX, AX
MOV
DX, D1SRCH
OUT
DX, AX
; THE DESTINATION IS THE DISK BUFFER IN MEMORY
MOV
AX, SEG DISK_BUFF
ROL
AX, 4
MOV
BX, AX
AND
AX, 0FFF0H
ADD
AX, OFFSET DISK_BUFF
; NOW LOW BYTES OF POINTER ARE IN AX
ADC
BX, 0
AND
BX, 000FH
MOV
DX, D1DSTL
OUT
DX, AL
MOV
DX, D1DSTH
MOV
AX, BX
OUT
DX, AX
; THE POINTER ADDRESSES HAVE BEEN SET UP. NOW WE SET UP THE TRANSFER COUNT.
Example 10-1. Initializing the DMA Unit (Continued)
10-32
; GET HIGH NIBBLE
; THE MESSAGE IS 29 BYTES LONG.
; XFER COUNT REG
SOURCE
------
MEMORY SPACE
; PROGRAM LOW ADDR
; HI ADDR FOR IO=0
; GET HIGH 4 BITS
; SAVE ROTATED VALUE
; GET SHIFTED LOW 4 NIBBLES
; ADD IN THE CARRY
; TO THE HIGH NIBBLE
; GET JUST THE HIGH NIBBLE
; AX=LOW 4 BYTES
; GET HIGH NIBBLE

Advertisement

Table of Contents
loading

This manual is also suitable for:

80c186ec

Table of Contents