dpr : dual port ram is a 1k byte ram area resident on the vxc card and is simultaneously accessible from both the ids and the vxc processors . ids : integrated digital system is the name for a line of pbx &# 39 ; s developed by executone information systems inc . iot : integrated operator terminal is a terminal made by wyse , which is use as an operator &# 39 ; s station , to configure the ids and to view the status of the system . vxc is a single card used for the providing voice mail functionality in a pbx voice messaging system . vxii is the name for the voice mail product developed by a + systems and sold by executone information systems , inc . vmi : voice mail integration provides the use of an rs - 232 interface between an ids and the vxii voice mail . referring to fig1 a top level view 10 of the integration of a vxc card 20 in an ids is shown . the microprocessor section 16 of the ids processor board 14 has access to each of the cards in the backplane . for those cards that do not have a processor , the ids can access a number of registers to control the operation of the card . for a card that has an onboard microprocessor , such as , for example , vxc card 20 , the ids processor 14 communicates to the board via a 1k byte dual port ram ( dpr ) 24 . the vxc card includes a digital processing section 22 , an rs - 232 communications port 28 , a video display port 30 , and a keyboard port 32 which are all in communication with digital processing section 22 . digital processing section 22 can be , for example , an intel 386 processor with support circuitry , and also includes a hard drive for storage and dsp technology for audio signal processing . in addition , a dual port ram 24 and an audio section 26 are in communication with the ids backplane 12 and digital processing section 22 . the ids processor board 14 includes a microprocessor section 16 and a backplane signaling interface 18 . through this configuration , all digital signaling generated by the vxc card are sent to the ids processor 14 via dpr 24 . this effectively frees rs - 232 connector 28 on vxc card 20 and the serial port on ids backplane 12 previously used to connect the backplane to the rs - 232 connector of the vxc card . by freeing rs - 232 connector 28 , the programming and control of vxc card 20 can be accomplished using a computer running co - sessions connected to the rs - 232 jack . this eliminates the need for a monitor and keyboard connected to the vxc card . the vxc card 20 has been designed to work in the ids system . the dimensions and signaling mimic that used by standard ids port cards . for executone information systems &# 39 ; system 84 , the vxc card will fit into either one of the two 228 - type port card slots in the backplane . for executone information systems &# 39 ; 108 - and 228 cabinets , the vxc will fit into any one of the slots used for 228 - type port cards . only one vxc can be used in an ids . fig2 represents the software processing for a voice mail system using the integrated vxc card according to an illustrative embodiment of the present invention . for purposes of this discussion , only the serial data connection to the vxc card ( voice mail ) is described . there is a low level interface in the ids which communicates directly with the vxc . the serial data received 44 from the vxc is interpreted 42 , and the interpreted commands are applied to the ids call processing logic 40 . likewise , commands from the ids call processing logic 40 are converted or formatted 46 to a format that is acceptable to the vxc ( i . e ., voice mail system ) and are transmitted 48 using the low level serial interface . the integration of vxc 20 via the ids backplane 12 replaces the currently used asynchronous serial interface using the rs - 232 port with a parallel interface via the dual port ram 24 . the use of a parallel interface as opposed to a serial one tends to increase the speed of the data communication between the connected elements . the following describes the interface between the vxc card 20 and the ids backplane 12 via dual port ram 24 . referring to fig1 and table 1 , from the vxc card perspective , all locations in dpr 24 are arranged as consecutive bytes , and from the ids backplane perspective , only the odd addresses locations contain information as shown in table 1 . the card id is located at offset 0 and is placed by the driver on startup . all cards default to 8 port opx card id = 7 . the line status register is located at offset 0x01 and is bit mapped ( bit 0 = channel 1 , bit 7 = channel 8 ; 0 = offhook , 1 = onhook ). the driver version string is an asciiz string up to 8 bytes starting at offset 0x10 , the first character is ‘ v ’ and the last character is 0 . the ids must detect this string and put its version label string at offset 0x20 . the ids version string is an asciiz string starting with a ‘ v ’ and ending with a 0 . once the vxii application detects the ids version string , it will route all vmi integration through the dpr instead of the serial port . the vxii version string , placed by the vxii application , is an asciiz string up to 8 bytes starting at offset 0x18 . the first character is a ‘ v ’ and the last character is 0 . the ids version string is an asciiz string up to 32 bytes starting at offset 0x20 , and the first character is a ‘ v ’ and the last character is a 0 . the ids to vxc vmi is located from 0x40 to 0xbf , and is the data area allocated from the ids to the computer for vmi integration . the 128 bytes are treated as a circular buffer with the to / from pointers maintained by the ids and the vxc , respectively . a more descriptive explanation of the circular buffer will be discussed later . the vxc to ids vmi is located from 0xc0 to 0x13f , and is the data area allocated from the computer to the ids for vmi integration . the 128 bytes are also treated as a circular buffer with the to / from pointers maintained by the vxc and the ids respectively . the ids to vxc keyboard is located from 0x140 to 0x1bf , which is the data area allocated from the ids to the computer for keyboard information . the 128 bytes are treated as a circular buffer with the to / from pointers maintained by the ids and the vxc respectively . the data will be sent directly from the ids terminal keyboard to the vxc buffer . the vxc to ids video is located from 0x1c0 to 0x23f , which is the data area allocated from the computer to the ids for the video information . the 128 bytes are treated as a circular buffer with the to / from pointers maintained by the vxc and the ids , respectively . the output must be compatible with the ids terminal , and the screen handling capabilities of the ids terminal are a subset of a televideo 925 terminal capabilities . the vxc to ids report information is located from 0x240 to 0x2bf , which is the data area allocated from the computer to the ids for report information . the 128 bytes are treated as a circular buffer with the to / from pointers maintained by the vxc and the ids respectively . the data contains the information which will be sent out the preselected ids printer port . the data must be compatible with the printer which is attached to the ids port . notification of the start and end of a printing session from the vxc to the ids will be sent via the vmi interface . the ids commands to the vxc are located from 0x2c0 to 0x2c3 which is the data area reserved for these commands . initially , only one ( 1 ) byte of the three ( 3 ) for commands is used . a non - zero value indicates a command . the vxc will read the command and subsequently zero - out the location . at this point , the ids can send another command . the vxc responses to the ids are located from 0x2c4 to 0x2c7 , which is the data area reserved for these responses . initially , only one ( 1 ) byte of the three ( 3 ) for commands is used . a non - zero value indicates a command . the ids will read the command and subsequently zero - out the location . at this point , the vxc can send another response . there are five ( 5 ) 128 byte buffers used as circular buffers for the data between the ids and the vxc . the to / from pointers are maintained separately by each of the applications . the method essentially uses in - band signaling to verify read / write availability ( zero is used for signaling ). the details are as follows : on power up , the vxc will zero out all of the circular buffers before the vxc loads its driver version string . the ids will locally maintain its to / from pointers . likewise , the vxc will maintain its own to / from pointers . after a program reset , both the ids and the vxc will reset their respective pointers . when the ids wants to send a character to the vxc , the ids will check the next available location . if that location contains a zero , the ids will put the character into that location and increment its pointer modulo buffer size . the vxc will check the next available location . if that location contains a zero , there is no work to do . if the location contains a non - zero value , the vxc copies the value to some local storage , puts a zero into the location , and increments its pointer to modulo buffer size . the same scheme is followed in the opposite direction , when the vxc wants to send character ( s ) to the ids . since each buffer occupies 128 bytes , the entire buffer could be loaded in either direction before the receiving processor has the opportunity to unload the data . this method uses in - band signaling to verify read / write availability ( zero is used for signaling ). there are no problems associated with simultaneous access to the 128 byte buffer because the 2 sides are never writing to the same location . if one side reads from a location while the other side is writing to the same location , then either the reader or writer will see the buffer in a less - available state , and will end his cycle . the different cycle lengths and times will lead however , to situations where one side is ready for transfer , but the other side is not , leading to a delay of 1 cycle . control signals are passed between the vxii system and the customer telephone system to which it is connected in either analog or digital format . analog signals , referred to as in - band , use dtmf tones passed through the device &# 39 ; s analog ports . digital signals are passed through the device &# 39 ; s serial communications ports . the browse screens can be used to monitor inter - device communications taking place through the vxii system rs - 232 or analog ports . when the browse screen is set for ! com ( see . fig3 ), it will display all incoming and outgoing communications on the rs - 232 port . when set to ! digits ( see fig4 ), this screen displays all dtmf communications taking place over the system analog ports . these browse screens are used to check that system control signals contain the proper information . the browse screen should be accessed using an on - line programming menu . this allows communications to be monitored while the system is on - line and subscribers are sending and receiving messages . the following steps are an exemplary method for accessing the browse screen . a . from the run dialogue screen , a function key is pressed ( e . g ., f8 ) to access the on - line programming menu . the screen prompts : “ enter your access code [ cmp ####].” this access code is the three - character code shown in the company code field in the company screen , as well as the access code to the system administrator mailbox . the system administrator has the option to change the code . b . type in the access code , and press enter . the screen displays the on - line programming menu . c . press page down to access page two of the on - line programming menu . d . from page two of the on - line programming menu , press i to access the browse screen . e . type ‘! com ’ to monitor rs - 232 communications , or ‘! digits ’, to monitor dtmf communications in the file field , then press enter twice . the rs - 232 browse screen ( fig3 ) or dtmf browse screen ( fig4 ) will be displayed . f . when finished monitoring communications , press esc twice to return to the on - line programming menu or three times to return to the run dialogue screen . on the rs - 232 browse (! com ) screen , incoming serial communications are shown at the top of the screen and outgoing serial communications are shown at the bottom . the information is continuously updated as new information is sent or received . for example , an entry of ‘ op : mwi3031 ’ in the lower half of the screen indicates that a signal has been sent to the customer telephone system to turn on the message waiting indicator at extension 3031 . other examples of common serial communications packets and their meaning are given in table 3 . *** after the vxii sends this sequence , the vxii forces the voice mail port on extension 3057 to go on - hook . this causes the ids to transfer the call from extension 3057 to the dialed extension . note : all messages from the ids must start with the prefix ctrl_y followed by c / r followed by l / f and terminate with l / f followed by c / r followed by ctrl_y . and , all messages from the vxii must start with ctrl_d . the “ m ” message generated by the ids ( e . g ., ring packet type ) is sent to the vxii only when the vxii sli port goes off hook as a result of receiving a call . the data which follows the m letter is in essence the same as the in - band dtmf tones signaling which follows the ids programming of the “ g ” screen . on the dtmf browse (! digits ) screen shown in fig4 incoming dtmf digits are shown on the left side of the screen and outgoing dtmf digits are shown on the right . the port with which incoming and outgoing dtmf digits are associated is given within brackets . the information appearing next to each port number is continuously updated as new information is sent or received using that port . for example , an entry of ‘[ 02 ] 1234 ’ on the left side of the screen indicates that the dtmf string “ 1234 ” was received using analog port 2 . an entry of ‘[ 03 ]# 1622 ’ on the right side of the screen indicates that the dtmf string “# 1622 was sent using analog port 3 . the interface of the vxc with the ids uses various commands via an integrated operator &# 39 ; s terminal ( iot ) and the dpr . when a vxc is installed at a customer &# 39 ; s site , the installation generally requires the use of an external monitor and keyboard for configuration control and status monitoring . in order to reduce the cost of the installation , the external monitor and keyboard have been removed , and a programming terminal is used to control the vxc . the programming terminal can be the iot or a personal computer ( pc ) running applicable communications packages . currently , personal computers use a memory mapped display to control the images on the screen . the programming terminal uses a serial interface operating at a maximum of 9600 baud to display text and graphic characters . when the vxc information is routed to the ids , the displays will be noticeably slower in operation . however , the operation of the vxc will not degrade due to the speed of the video information . another consideration is the size of the display itself . the display area of the pc crt is 25 lines by 80 columns . the programming terminal directly supports 24 lines by 80 columns . since certain communications packages use the 25 th line as a status line , it is a requirement that the vxc limit all screens to 24 lines by 80 columns . the vxc must be controlled from either an integrated operator &# 39 ; s terminal ( iot ) or from a pc running a communication package . in the case of the latter , the pc emulates a tvi - 925 terminal . in view of the different control options for the vxc , several issues need to be considered : 1 . neither the pc nor the iot will be able to send a keycode for a key modified by the alt key . in the case of the iot , there is no alt key on the keyboard . in the case of the pc , the alt key is used to access the communications package . therefore , the vxc program must be modified to preclude the use of the alt key in all cases . 2 . a new dos editor that does not require the use of the alt key will be needed for field use . this editor will be used to modify dos batch files for testing and installation purposes . 3 . the pc sends different key codes for the functions keys as compared to the iot . the vxc must be able to accept function keys codes from either device . 4 . the keypad for the iot is considered non - standard . some of the keys normally used for communications functions will need to be reused for screen control . for example , the pick key will have to double as a page up key . 5 . there is a restriction on the use of control codes also . the iot uses xon / xoff as flow control for screen control . ( if the terminal gets more data than it can handle , the terminal will send an xoff until it has caught up with the processing . at that time , the terminal will send an xon .) for this reason , the user must not use ctrl - s or ctrl - q as a menu selection . as mentioned previously , the interface between the vxc and the ids uses the dual port ram for the display and control of the vxc . there are four areas in the dual port ram dedicated to this function . 1 . keyboard serial data from ids to pc contains the keycodes from the ids . 2 . video serial data from pc to ids contains the screen commands from the vxc . 3 . ids command to vxc contains the command information from the ids . 4 . vxc response to ids contains response information from the vxc to the ids . the ids acts as a conduit for the information between the programming terminal and the vxc . the programming terminal is configured to act as a tvi - 925 / qume 108 terminal . when the vxc sends video information to the ids , the ids will route this information directly to the terminal . therefor , the vxc must format all commands to be compatible with the terminal . likewise , any keystrokes from the terminal will be sent directly to the vxc . the vxc will be required to not only send and receive information during the operation of the vxii application , but will also be required to work during dos prompts and with other dos applications . the ids command to vxc and vxc response to ids buffers have been added to remedy the situation where the ids resets , but the vxc does not perform a reset . in this case , both the vxc &# 39 ; s and the ids &# 39 ; s pointers will be out of sync . the reset operation command forces a re - synchronization of the ids with the vxc in the event that the ids resets . when the vxc sees this command , it will clear all of its internal interface pointers . when the vxc resets , it will change its card id to 0xff . the ids monitors this location constantly . when the ids detects that the vxc has reset , the ids will perform and internal reset of the vxc application interface and will follow the standard initialization sequence with the vxc . at the beginning of a card reset , the vxc must maintain the card id value of 0xff for a minimum of 50 ms before reverting back to the normal card id . after the vxc has placed a value of 0x07 into the card id location , the ids will check the driver version string locations . if these locations contains an asciiz string with up to 8 bytes starting with a ‘ v ’ and ending with a zero , the ids knows that a vxc port card is installed in the system . first , the ids will send a reset operation command in the ids command to the vxc buffer . the ids will then send a configure terminal operation command in the ids command to the vxc buffer . the ids will wait for approximately 5 minutes before assuming that the vxc is not responding to the configure terminal operation command . if the vxc responds with a terminal operation response in the vxc response to ids buffer , the ids knows that control via the backplane is possible . at this point , the ids will place a menu item on the main menu for vxc control . the user selects the menu item for vxc control to start a dialogue with the vxc . fig5 and 6 show examples of the keyboard that is used for the iot . the standard part of the keyboard sends 7 bit us acsii codes when a key is pressed as per the following table . the “ esc = rc ” command allows the cursor to be located at a specific row ( line ) and column position on the page . in this escape sequence , r equals the ascii row or line equivalent , and c equals the ascii column equivalent as per the following table 7 . the graphics mode is a special applications feature that reconfigures the terminal for 15 line drawings symbols . graphics mode is enabled by using the “ esc $” command sequence , and is disabled by using the “ esc %” command sequence . the following table 8 lists the special graphics mode characters : small systems such as , for example , executone information systems , inc .&# 39 ; s system 84 , can be installed without an operator terminal or a programming terminal . for these systems , a technician would use a laptop running a communication package , such as , for example , procomm +, to perform system administration . the technician would configure the communications package to emulate a tvi - 925 . the display control commands would be the same for the iot and the tvi - 925 emulation . the standard keyboard mapping does not match the keycodes used by the iot . therefore , the vxc program must be able to interpret keycodes from either the iot or the pc emulating the tvi - 925 . the following tables list the keycodes generated by a standard tvi - 925 keyboard . the standard part of the keyboard sends 7 bit us ascii codes when a key is pressed as per table 11 : if the ids is reset at any time while the vxc is not running , the user will be required to enter the system through the programming terminal and restart the voice mail system application . if , however , the vxc is shutdown or removed from the ids , the ids will return to the main menu to enable further configuration or operations by the operator . it should be understood that the present invention is not limited to the particular embodiment disclosed herein as the best mode contemplated for carrying out the present invention , but rather that the present invention is not limited to the specific embodiments described in this specification except as defined in the appended claims .