# Mstatus
> [HTML Version](mstatus.htm)
_mstatus _(Signed [Num](num.htm.md), out, optional) returns a code indicating the result of the operation:
| **Value** | **Meaning** |
|------|------|
| 0 | OK, or for opcode 2 indicates item was previously enabled |
| 1 | OK, or for opcode 2 indicates item was previously disabled |
| \-1 | Add or delete menu function failed |
| \-2 | Menu (_mnutxt_) not found during change or delete operation |
| \-3 | Out of memory (unable to allocate menu storage buffers) |
| \-4 | Exceeded maximum number of added menu items (currently 125) |
| \-5 | No menu buffer allocated |
| \-6 | Illegal opcode |
| \-7 | Menu (_mnutxt_) already exists |
| \-8 | [Menuid](menuid.htm.md) not found |
| \-15 | ATE failed to respond to the server request within the normal time limit |
If the _mstatus_ parameter is omitted, or passed as a null string (if mapped, must be S,1), then no status will be returned. This will provide a speed improvement when setting up a lot of menu items (particularly over ATE), and is recommended especially if you aren't even bothering to check the returned status value anyway.
The normal time limit for a response from ATE is five seconds for most commands, ten to fifteen seconds for a few. Sometimes commands that "should" respond almost instantly will take a long time, either because ATE is "locked up", or there is some other Windows hang-up, such as waiting on "elevation" or some other critical event. In such cases, we return -15 to indicate time out.