488 CONTROLLER
40
5.3 Memory Use
Memory in the 488 Controller is dynamically allocated for the serial input, serial output, and macro buffers.
This allows for the most efficient partitioning of memory for any given application. This memory is kept in
the user “heap” (a vernacular for heap of memory) until required by the system.
At power on, each serial buffer is allocated a 127-byte minibuffer or queue. When the serial input (or
output) requires more buffer space, additional queues are allocated. When a queue is empty, it is released
from the input buffers so that it may be re-allocated when, and where, required. Macro queues are not
allocated unless a macro is defined.
There are approximately 240 available queues for a total of 29,000 bytes of buffer (character) space. Queues
are continually allocated and released as required. Of the 240 available queues, 230 are issued without
regard to controlling the receipt of additional serial input data.
When the serial input buffer requests one of the last 10 queues (1270 character locations left), it signals
the serial host that it should stop sending data. This is accomplished by either unasserting RTS or issuing
“X-OFF,” depending on which serial handshake control has been switch selected. When more than 10
queues become available, it asserts RTS or issues X-ON.
5.4. The Commands
The commands provided in the 488 Controller, in alphabetical order, are described on the following pages.
@ Command
The system command @, followed by a CR and/or LF, is used to unlock the 488 Controller from an
inappropriate command. An example of such a command would be requesting data from a nonexistent
device with timeouts disabled.
When the @ command is received, the serial handshake line (RTS) is unasserted. It is asserted when the
488 Controller can buffer commands. If X-ON/X-OFF handshake is selected, the software handshake state is
not modified.
Issuing the @ command clears the serial input (pending commands) and output (pending data) buffers.
It also is equivalent to issuing the following commands
DISARM
ERASE
ERROR OFF
ID;@
MASK OFF
REQUEST 0 (with *SRQ)
TIME OUT 0
TRACE OFF