Start buffer.
BUFFER {M | R},expression
The BUFFER directive indicates the start of a buffer of the given type. Data is allocated for the buffer until an ENDBUF directive is encountered. Instructions and most data definition directives may appear between the BUFFER and ENDBUF pair, although BUFFER directives may not be nested and certain types of directives such as MODE, ORG, SECTION, and other buffer allocation directives may not be used. The expression represents the size of the buffer. If less data is allocated than the size of the buffer, the remaining buffer locations are uninitialized. If more data is allocated than the specified size of the buffer, an error is issued.
The BUFFER directive sets the runtime location counter to the address of a buffer of the given type, the length of which in words is equal to the value of expression. The buffer type may be either Modulo or Reverse-carry. If the runtime location counter is not zero, this directive first advances the runtime location counter to a base address that is a multiple of 2k, where 2k >= expression. An error is issued if there is insufficient memory remaining to establish a valid base address. Unlike other buffer allocation directives, the runtime location counter is not advanced by the value of the integer expression in the operand field; the location counter remains at the buffer base address.
The result of expression may have any memory space attribute but must be an absolute integer greater than zero and cannot contain any forward references (symbols that have not yet been defined). If a Modulo buffer is specified, the expression must fall within the range 2 <= expression <= m, where m is the maximum address of the target DSP. If a Reverse-carry buffer is designated and expression is not a power of two, a warning is issued.
A label is not allowed with this directive.
BUFFER M,24 ; CIRCULAR BUFFER MOD 24
M_BUF DC 0.5,0.5,0.5,0.5
DS 20 ; REMAINDER UNINITIALIZED
ENDBUF