User's Manual

PMAC Dual-Ported RAM User Manual
30 Dual-Ported RAM Automatic Functions
When PMAC receives a binary-format program command in DPRAM from the host, it simply copies it
into the rotary program buffer in internal memory. The end result is the same as if an ASCII program
command had been sent to PMAC through any of the ports, but the transmission is quicker because PMAC
gets the command all at once, and it does not have to parse the command from ASCII format.
Note:
Delta Tau has PC subroutines written in C to interface with the DPRAM binary
rotary program buffer. Contact the factory for details.
General Description
The host defines the start and size of the Binary Rotary Buffer in 0x07F8 and 0x07FA (Y: and X:$D1FE),
sets the Host and PMAC indexes at 0x07F4 and 0x07F6 (Y: and X:$D1FD) to zero the beginning of the
buffer, fills the rotary buffer with data, sets the host index to the end of the buffer then enable the Binary
Rotary buffer transfer by setting I57 = 1. The host can use the PMAC Indexes to determine when to
update the Dual Port buffer or the BREQ interrupt will be active on the internal Rotary buffer also.
Rules:
1. The data in the buffer must contain a complete line. Therefore the line must be in the buffer before
the Host Binary Rotary Buffer Index is updated.
2. The buffer size parameter is subject to the following restrictions:
a. Minimum Size = six words (24 bytes) which means it could have only one command per line.
b. The size must be an even number (6,8,12 etc.) so that no 64-bit instruction command will wrap in
the buffer.
3. Host Buffer Full when PMAC_Index = (Host_Index+4)% buffer_size
4. Host Buffer Empty when PMAC_Index = Host_Index
5. In the DPRAM rotary buffer at the Host_Index a special end of buffer command needs to be stored
after each transfer. It is the following:
DPRotBuf(Host_Index) = $800
DPRotBuf(Host_Index) + 1 = $FFFF
Note:
These values are Intel format.
6. Not all motion program commands can be sent through the binary rotary program buffer. First, any
command that cannot be sent to a rotary buffer through an ASCII command string cannot be sent in
binary form (e.g. IF, WHILE, GOTO, GOSUB). Second, the binary command syntax does not support
mathematical expressions. Any place that the ASCII command syntax description uses the form
{data} or {expression}, the binary command must use the form {constant} instead.