User's Manual

PMAC Dual-Ported RAM User Manual
Dual-Ported RAM Automatic Functions 25
Data Format
PMAC X, Y, and Special registers will use the long 32-bit data 1word. The 32-bit Data 2 word is not used
in this case. For PLCC function blocks, only X (bits 0-2 = 6) or Y (bits 0-2 = 4) memory writes are
allowed.
For a 48-bit PMAC integer or float point value, The L (Long) format should be used. L will have the
lower 32 bits of the total 48 bits in the long 32-bit data 1 word and the upper 16 bits in the lower 32-bit
data 2 word. PCOMM.LIB supplies a function to convert this IEEE 64-bit number to a PMAC 48-bit
floating-point number. This data starts immediately after the last address specification register.
Disabling
To disable this function, simply leave Y:$D1F5 set to zero.
Register Map
Background Variable Data Write Buffer -- Host to PMAC Transfer
Address Description
0x07E6
(Y:$D1F5)
HOST to PMAC Data Transferred. PMAC is updated when cleared.
Host must set for another update.
0x07E8
X:$D1F5
Starting address of data structure ($D200 - $DFFD).
Variable Address Buffer Format for each Data Structure (6x16-bit)
DPRAM
Address
X:Mem Y:Mem X:Mem
Bit Definitions
$D200 Bits 13 - 15: Special type PMAC address 0 = PLCC Function Block
1-7 = Reserved for future use
to
$DFFD
Bits 8 - 12: Offset PMAC address Offset = 0..23. -- This is the
starting offset for the read.
Bits 3 - 7: Width PMAC address Width = 0, 1, 4, 8, 12, 16, 20 -- 0
is a 24-bit width.
Bits 0 - 2: Variable type
to write
PLCC Function Block
Number
0 = Y register
1 = L register
2 = X register
4 = Special Y register
6 = Special X register
Upper 16-bits of data 1 Lower 16-bits of data 1 Data to send to PMAC
Upper 16-bits of data 2 Lower 16-bits of data 2 Data to send to PMAC
DPRAM Data Gathering Buffer
PMAC’s data gathering function can create a rotary buffer in DPRAM, so that the host computer can pick
up the data as it is being gathered. This function was implemented before V1.14, and is described in the
User's Manual for PMAC.
The data-gathering buffer in DPRAM must start at address 0x0800 ($D200). Its length is determined by
the DEFINE GATHER {size} command. If also using a DPRAM Background Variable Data Buffer,
and/or a DPRAM Binary Rotary Program Buffer, it is important to set the starting points and sizes of those
buffers so there is no overlap.